jayurbain / Microservices

Microservices course content

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CSC 5201 - Microservice and Cloud Computing (4 Credits)

Course Description

This course introduces the concepts, architecture, and practical techniques needed to design and implement cloud-native microservices. Students will design, implement, deploy, and operate a microservice using widely used technologies and best practices.

Emphasis will be placed on scalable web and machine learning services. Students will apply what they learn in a series of hands-on lab exercises and complete a final project using a distributed computing platform.

Course Learning Outcomes

Upon successful completion of this course, the student will be able to:

  • Leverage containerization to package and run software
  • Design and implement a basic microservice that interacts through REST APIs, implements access controls, uses a distributed storage systems, and is deployed in containerized form.
  • Apply access control patterns using authentication and authorization following security best practices
  • Analyze and identify potential throughput, scalability, reliability, and consistency issues with distributed microservice architectures
  • Create and manage continuous integration and deployment to automated software related to microservices and pipelines
  • Deploy a multi-sservice distributed application using a container orchestration tool

Prerequisites by Topic

  • Version control / Git
  • Operating systems
  • Databases

Course Topics

  • Virtual machines, containers, and associated best practices for writing containerized, stateless applications
  • Microservice architectures, implementation patterns, including event-driven architectures, and designing and implementing REST APIs
  • Distributed storage systems (e.g., key-value stores, columnar stores, object stores, distributed file systems, relational databases, and [vector stores]), tradeoffs between consistency, availability, and partition tolerance. Efficient access patterns.
  • Continuous integration and deployment technologies and usage patterns
  • Tooling for orchestration and deployment of multi-service systems
  • Software, Function, Platform, and Infrastructure as service
  • [CAP Theorem] paradigms and implementing systems
  • Discussion of public cloud services and comparisons of their offerings

Grading:
Weekly labs and final project: 60%
Midterms: 20%
Final: 20%

Class will be structured in three parts:

  • Cloud computing.
  • Architecting microservices.
  • Advanced topics and final project.

Office DH425
TBD:

References:
Building Microservices, Second Edition, Sam Newman (BM)

Extra reference:
Python Microservices Development, Second Edition, Simon Fraser and Tarek Ziade (PMD)


Week 1: Introduction to Microservices

Note: No class Monday

Introduction to Microservices

Lab 1 - Introduction to Cloud Computing using AWS

Reading: Chapter 1 (BM).

David Parnas in “Information Distribution Aspects of Design Methodol‐ ogy”, Information Processing: Proceedings of the IFIP Congress 1971 (Amsterdam: North-Holland, 1972), 1:339–44. https://oreil.ly/rDPWA

Alistair Cockburn, “Hexagonal Architecture,” January 4, 2005.

M. Armbrust, A. Fox, R. Griffith, A. Joseph, R. Katz, A. Konwinski, G. Lee, D. Patterson, A. Rabkin, I. Stoica, and M. Zaharia. Above the Clouds: A Berkeley View of Cloud Computing, Technical Report No. UCB/EECS-2009-28.

References:
Nano Cheat Sheet
Ubuntu Guides
Ubuntu/Linux command Line cheat sheet


Week 2: Virtual Machines, Infrastructure as a Service

Virtual Machines

Lab 2 Virtual Machines

Lab 3: Most Excellent Flask EC2 Web App on AWS

Auto Scaling Computing Clusters

Reading:
Virtual Machine Monitors
Xen and the Art of Virtualization
Amazon Web Services (AWS) Documentation


Week 3: Platform as a Service, Containers

State of the Cloud

Lab 4 Platform as a Service Mulligan - DigitalOcean

Reference:
Install Python, pip, and the EB CLI on Linux (Thanks Harry Kubiak!)
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install-linux.html


Week 4: Containers, Container Orchestration with Docker Compose and Kubernetes

Intro to Docker and Containers

Lab 5: Docker Lab Extraordinaire

Container Orchestration

Lab 6: Composing a Flask-MySQL app with docker and docker-compose

References:

Docker Compose
Kubernetes Concepts


Week 5: Kubernetes Clusters, Review

Container Orchestration - Kubernetes

Lab 7: Deploy a Flask API Service on Kubernetes

Midterm 1 Exam Review Guide


Week 6: Distributed Data Platforms, Spark

Midterm 1 Exam

  • Online, written format, no notes

Auto Scaling and Load Balancing

Lab 8: Deploy Flask on Kubernetes Cluster Hosted by Digital Ocean


Week 7: Distributed Data Platforms, Spark

CAP Theorem

Data Platforms

Lab 8 Part 1 & 2

References:

Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing

Google's BigTable


Week 8: Machine Learning on Large Distributed Datasets

Scalable Machine Learning

Machine Learning Intro

Lab 8 Scalable Linear Regression using PySpark

References:
Introduction to MLOps - Databricks

The Big Book of MLOps - Databricks


Week 9: Modeling Microservices, Refactoring Applications into Microservices

Modeling Microservices

[Lab]

Reading: Chapter 2 (BM).

[Refactoring Services into Microservices]

[Lab]

Reading: Chapter 3 (BM).


Week 10: Communication Styles, Implementing Microservice Communication

[Implementing Microservice Communication Styles]

[Implementing Microservice Communication]

[Lab]

Reading: Chapter 4 and 5 (BM).


Week 11: Workflow, Building Microservices Applications

Reading: Chapter 6 and 7 (BM).


Week 12: Testing and Deployment, Monitoring and Observability

[Testing and Deployment]

[Final Project]

Reading: Chapter 8 and 9 (BM).

[Monitoring and Observability]

[Final Project]

Reading: Chapter 10 (BM).


Week 13: Security and Resilency

[Security]

Reading: Chapter 11 (BM).

[Resiliency]

Reading: Chapter 11.

[Final Project]


Week 14: Scaling, Final Project Presentations

[Scaling]

Reading: Chapter 13.

[Final Project]


Week 15: Final Projects, Review

Final Project


Week 16: Final Exam

TBD

About

Microservices course content

License:MIT License