Part 1: Intro to Microservices
- Optimize for speed, not efficiency
- Case Study: General Electric
- Throughput
- Waste
- Amazon Web Services Case Study (SOA/Microservices)
- Problem: Scaling the Organization and the ‘Big ball of mud’
- Conway’s Law
- Service Oriented Architecture
- Forced Self Service Mandate
- Result: Amazon dominance of cloud
- Result: High velocity at scale
- Intro to Containers (encapsulation)
- What is Docker
- Exercise: Install Docker
- Exercise: Docker Hello World
- Docker ecosystem
- Docker concepts
- Container encapsulation/ideal use cases
- Encapsulation
- Speed
- Increased utilization of computing resources
- Benefits
- Configure once, run everywhere
- VM’s vs Container use cases
- Databases & stateless workloads
- Docker Architecture
- Exercise: Docker 101 – Web App
- Docker File System
- Docker Images
- Exercise: Stateless Web App
- Local Registry
- Data Volumes
- Exercise: Docker 201 – Compose Multi-tier app
- Continuous integration patterns
- Docker Security
- Continuous Integration
- Canary Release
- Blue Green Deployment
- A/B Testing
- Rolling Update
- Jenkins Plugin
- Microservice challenge: Continuous Integration Service
- On-Premise
- Jenkins
- SaaS Service
- Shippable
- Jenkins
- TravisCI
- Exercise: Trigger build/tests from change
- On-Premise
Part 2: Microservices in Development
- Uber Case Study
- 2000 services, 1000 engineers
- Tradeoffs
- Plus – overall development speed
- Cons – technical challenges
- Box Case Study
- Traditional service deployment with bare metal
- 10x faster workflow with DevOps practices
- Microservice challenge: Image repository
- Docker repository development instance
- On-Premise Service
- Quay by CoreOS
- SaaS solution
- Docker Hub
- JFrog
- Exercise: Submit image to service
- Exercise: Pull image from service
- Intro to Kubernetes (Containers at Google)
- Prerequisites
- Containers
- Linux Kernel Features
- Container User Experience
- New Container Capabilities
- Gaps using Containers in Production
- Exercise: Kubernetes 100: Hello World
- Core Concepts
- Cluster Orchestration
- Originated at Google
- Open Source
- Benefits
- Design Principles
- Architecture
- Master/Node
- Kubectl
- Replication Controller
- Kubelet
- Kube-Proxy
- Persistent Volumes
- Etcd
- High Availability
- Exercise: Kubernetes 101: Stateless web app
- Kubernetes Features
- Pods
- Labels
- Services
- Namespaces
- Resource Quota
- Exercise: Kubernetes 201: Guestbook app
Part 3: Microservices in Production
- Spotify Case Study
- 810 Services, 477 engineers
- Microservice challenge: Service discovery
- Skydns
- Consul
- Exercise: Resolve service with DNS
- Security
- Goals
- Roles
- Attribute Based Access Control
- Policies
- Service Accounts
- Secrets
- Forth Microservice challenge: Secrets
- Vault
- Kubernetes Secrets API
- Exercise: Kubernetes – Store database credentials in cluster
- Cluster Add-ons
- Cluster DNS
- Logging with Elasticsearch and Fluentd
- Container Level Monitoring
- cAdvisor
- InfluxDB
- Prometheus
- Exercise: WordPress on Kubernetes
- Managing state with disposable architectures
- Tradeoffs, standalone vs containerized databases
- CAP Theorem
- SQL Databases
- NOSQL Databases
- Exercise: Cassandra on Kubernetes
- Practicing Failure
- Optimize MTTR
- Netflix Case Study
- Simian Army
- Graceful handling of failure
Part 4: Putting it all together
- Why Microservices?
- Scale an organization
- Tradeoffs
- Fault Tolerance
- Throughput
- Waste
- Kubernetes Alpha Features
- Multi-Datacenter Control Plane
- RBAC/Multi-tenancy
- Openshift/Mesos/Other PaaS platforms
- Exercise: Customize Microservice App
- Exercise: Scale app for simulated demand
- Review of Microservice Challenges
- Secure Images
- Highly available application
- Secrets
- Continuous Integration
- DNS Name resolution
- Summary