Cloud Computing

Microservices Foundation

Overview

This intensive three-day hands-on course is designed to provide working developers, DevOps staff and other technology professionals with a comprehensive introduction to microservices and microservices application architecture. Attendees will leave with a clear understanding of microservices and how to maximize them in cloud native systems. Students will gain hands on experience working with microservices and platform tools during lab sessions following each of the twelve modules in the course.

The course covers microservice design principles and best practices, anti patterns, the distinction between web apps and backend microservices, the use of PaaS and CaaS systems, the benefits of container packaging and container registries, as well as dynamic application management using orchestration tools and service meshes. Attendees will examine various use cases and architecture patterns for microservice based applications throughout the course, with focused discussion on microservice communications, transactions, state decomposition and state management.

Upon completion of the course attendees will have the skills and information necessary to begin designing and working with microservice based applications in a practical setting.

Duration

3 Days

Who Should Take This Course

Audience

Developers, Architects, Engineering Managers and DevOps personnel.

Prerequisites

Because the course focuses on microservice properties, design and supporting platform technologies, no particular programming language expertise is required, though attendees should have experience with at least one programming language. All students will need to be able to ssh to a provided cloud instance.

Why You Should Take This Course

This course is designed to provide engineering staff with a comprehensive overview of the microservices architecture style and the tools and platform features which support microservice architectures.

Course Outline

Microservices Foundation

Day 1 – Stateless Services

1. Microservice Overview

  • Definition of microservice
  • Microservices benefits
  • Microservice challenges
  • Microservices contrasted with other architectural patterns
  • Principles and Practices
  • LAB: Conceptualizing and Tooling a Microservice Solution

2. Microservice Communications I – APIs

  • HTTP and HTTP/2
  • Verbs, Safety and Idempotence
  • IRIs, Parameters and Status codes
  • Interfaces and Contracts
  • Loose Coupling and High Cohesion
  • Interface definition
  • Open API Initiative
  • LAB: Creating a REST API

3. Container Packaging

  • Why packaging is so important in microservice systems
  • Evolution of application runtime environments
  • Isolation and constraints
  • Introduction to OCI
  • Images, metadata and distribution
  • Container Registries
  • LAB: Container packaging

4. Microservice Communications II – RPC

  • RPC concepts
  • Contrasting RPC with REST
  • Apache Thrift
  • gRPC
  • IDL principles
  • LAB: Creating gRPC APIs

Day 2 – Distributed State

5. Microservice Communications III – Messaging

  • Loosely coupled systems
  • Asynchronous operations
  • Messaging patterns (oneway, streaming, req/resp, pub/sub, broadcast, anycast, multicast, etc.)
  • Brokered and Brokerless fabrics
  • Amazon SQS
  • Apache Kafka
  • Message serialization
  • LAB: Message based services

6. Cloud Native Transactions

  • CAP, Local and distributed transactions
  • Eventual consistency
  • Event sourcing
  • CQRS
  • Immutability and Idempotence
  • Sagas
  • LAB: Cloud Native Transactions

7. Polyglot Persistence

  • Relational an non-relational (nosql) systems
  • Contrasting K/V, Document, Column and Graph storage
  • Replication and Partitioning
  • Key management
  • Polyglot persistence
  • LAB: Resilient Clustered Persistence Engines

8. Brownfield Migration

  • Domain Driven Design
  • Resilience patterns
  • Monolith architecture patterns
  • Decomposing monoliths
  • Brownfield migration strategies
  • LAB: Decomposing monoliths

Day 3 – Service Orchestration

9. Orchestration

  • Introduction to Orchestration
  • Kubernetes Architecture
  • Configuring development environments
  • Basic orchestration operations
  • Running containers in Pods
  • LAB: Orchestrating overview with Kubernetes

10. Deployment

  • Working with Pods
  • YAML and Manifests
  • Controllers
  • Deployments, ReplicaSets
  • Rollouts and Rollbacks
  • LAB: Deployments, ReplicaSets, and Health Checks

11. Services

  • Types of Services: ClusterIP, NodePort, LoadBalancer
  • kube-proxy in relation to services
  • Kubernetes DNS
  • LAB: Services and Service Selectors

12. Gateways and Meshes

  • The role of gateways
  • Ingress Controllers and Ingress Rules
  • Service mesh solutions
  • LAB: Using Gateways
Search UMBC Training Centers