This pandect (pandektes is Ancient Greek for encyclopedia) was created to help you find and understand almost anything related to Microservices that is available online.
Note Quick legend on available resource types:
- GitHub repository with the number of stars
- resource you can read, usually a blog post or a paper
- a collection of additional resources
- non-open source tool, framework or paid service
- a resource you can watch
- a resource you can listen to
Table of Contents
| Main Section | Sub-sections Sample |
|---|---|
| Essential Reading | General Resources, Platforms |
| Podcasts | - |
| YouTube Channels | - |
| Observability | Alerting, Visualizing |
| Deployment | General Tools, CI/CD |
| Cost Optimization | - |
| Stateful Workloads | - |
| Serverless | Tools and Frameworks |
| Security | - |
| Learning Resources | Kubernetes, DevOps |
| Infrastructure as Code | - |
| Other Topics | Streaming, Testing |
General Resources
- Microservices (Martin Fawler & James Lewis) [Blog, March 2014]
- What are Microservices? - Chris Richardson, Author of "Microservices Patterns"
- The Architecture Behind A One-Person Tech Startup [Blog, April 2021]
- Fallacies of Distributed Systems [Blog, June 2022]
Platforms
- AWS - Amazon Web Services on-demand cloud computing platform
- Azure - cloud computing service created by Microsoft
- Google Cloud Platform - GCP - suite of cloud computing services from Google
- OpenStack - free, open standard cloud computing platform
- Digital Ocean - DigitalOcean provides developers with cloud services
- Linode - cloud hosting company that provides virtual private servers
- Okteto - tool to develop applications on Kubernetes
Stories from the Industry
- Kubernetes Failure Stories
- How they AWS - curated collection of resources on how organizations use AWS [GitHub, 574 stars]
- This is My Architecture - Innovative cloud architectures from AWS partners and customers [Video Series, AWS]
Compilations & Resource Collections
- Cloud Native Computing Foundation - CNCF - list of graduated and incubating projects
- Everything AWS - GitHub search and catalogue of AWS-related repositories
Roadmaps
- Containers Roadmap - public roadmap for AWS container services [GitHub, 4684 stars]
From the Monolith to Microservices
- Monolithic to Microservices [Blog, June 2021]
Project Examples
- CNCF Projects App - project example created with only CNCF graduated projects [GitHub, 143 stars]
- Cloudcast - independent Cloud Computing podcast [Years: 2011 - now, Status: active]
- PodCTL - podcast focused on Cloud-native applications (by Red Hat) [Years: 2017 - now, Status: active]
- Kubernetes Podcast - Kubernetes Podcast from Google [Years: 2018 - now, Status: active]
- Data Engineering Podcast - Data management, microservices, ETL and more [Years: 2017 - now, Status: active]
- The Secure Developer - A podcast about security for developers [Years: 2017 - now, Status: active]
- APIs you won't hate - podcast about building and designing APIs [Years: 2019 - now, Status: active]
- Continuous Delivery - Continuous Delivery Pipelines and Processes [Youtube, 57k Subscribers]
- CNCF - Cloud Native Computing Foundation - provides educational and informative content on cloud native computing [Youtube, 65k Subscribers]
- Snyk - build cloud native applications securely [Youtube, 2k Subscribers]
- CloudBeesTV - cloud conferences from the end-to-end automated software delivery company [Youtube, 9k Subscribers]
- Containers from the Couch - learning resources on Container Services [Youtube, 4k Subscribers]
- GOTO Conferences - GOTO is a software development content and events platform [Youtube, 230k Subscribers]
General Monitoring
- Prometheus - open-source systems monitoring and alerting toolkit
- Prometheus Federation
- kubewatch - Watch k8s events and trigger Handlers [GitHub, 2416 stars]
- cortex - multi-tenant, long term Prometheus [GitHub, 4910 stars]
Error Monitoring
Alerting
- Prometheus AlertManager
- StreamAlert - serverless, real-time data analysis framework for alerting [GitHub, 2732 stars]
Logging
- loki - horizontally-scalable, highly-available, multi-tenant log aggregation system [GitHub, 17580 stars]
Visualizing
- grafana - observability and data visualization platform [GitHub, 52288 stars]
General Deployment Tools
- kubespray - Deploy a Production Ready Kubernetes Cluster [GitHub, 13125 stars]
Zero Downtime Deploys
There are industry proven strategies to make sure your deploys don't cause any downtime.
- Blue/Green Deploys - deploy your change to a subset of nodes and redirect some traffic to them, while still using the old version for the remaining traffic. Once you have validated that the traffic to the new nodes is correct, take out the nodes with the old version and redirect all of your requests to new nodes. Power down nodes with the old version.
- Red/Black Deploys - similar to the above with one distinct difference: you direct all of your traffic to the new nodes, old nodes are kept alive just in case but don't receive any requests. After validation, they are removed.
- Canary Deploys - in this deployment strategy, you release a new version of your microservice or ML model to a defined subset of users (i.e. 25%) and keep it alive for a prolonged time to make sure everything works as expected. You could technically use this also for A/B testing of your new version.
- Rolling Deploys - the simplest option, release your new version of the microservice incrementally node by node or in batches. It's slow, but easy to revert back if needed.
General
- Intro to Deployment Strategies: Blue-Green, Canary, and More [Blog, January 2021]
- Zero-downtime Blue Green Deployments for Microservices [Blog, August 2020]
- Breaking down zero downtime deployments in Kubernetes [Blog, August 2020]
Tools:
- flagger - Canary, A/B Testing and Blue/Green deployments for Kubernetes [GitHub, 3943 stars]
CI/CD
General
- Tekton - open-source framework for creating CI/CD systems
GitOps:
- flux - The GitOps Kubernetes operator [GitHub, 6951 stars]
- ArgoCD - A declarative, GitOps continuous delivery tool for Kubernetes
General
- The Cost of Cloud, a Trillion Dollar Paradox [Blog, May 2021]
AWS
- Spot Fleet [AWS Services]
- AutoSpotting - open source spot market automation tool for EC2 [GitHub, 2115 stars]
Autoscaling
- keda - Kubernetes-based Event Driven Autoscaling [GitHub, 5648 stars]
General Tools
- Komiser - Multi-cloud environment inspector for costs and security [GitHub, 2866 stars]
- Infracost - Cloud cost estimates for Terraform in your CLI and pull requests [GitHub, 8185 stars]
Databases and Operators
General
- OperatorHub.io - OperatorHub.io is a resource for the Kubernetes community to find and share Operators
In-memory
- redis - Redis is an open source, in-memory data structure store
MySQL
- MariaDB - MariaDB Server: The open source relational database
- vitess - Canary, A/B Testing and Blue/Green deployments for Kubernetes [GitHub, 3943 stars]
PostgreSQL
- CrunchyData Operator [GitHub, 3023 stars]
- Zalando Operator [GitHub, 2907 stars]
- Amazon Aurora [AWS, Paid Service]
OLAP - Online Analytical Processing
- What is OLAP? Cube, Operations & Types in Data Warehouse [Blog, Feb 2018]
- Comparison of ClickHouse, Druid, and Pinot [Blog]
- Druid [GitHub, 12190 stars]
- ClickHouse
- Apache Pinot / Pinot on Github [GitHub, 4284 stars]
Object Storage
- Ceph - implements object storage on a single distributed computer cluster
General
Examples and Learning Resources
- serverless examples - collection of boilerplates and examples of serverless architectures [GitHub, 10499 stars]
- Wild Rydes Serverless Workshops - labs to set up serverless applications on AWS [GitHub, 3825 stars]
Tools & Frameworks
- serverless - Serverless Framework using AWS Lambda, Azure Functions, Google CloudFunctions [GitHub, 43750 stars]
- Chalice - Python Serverless Microframework for AWS [GitHub, 9297 stars]
- OpenFaaS - Serverless Functions Made Simple [GitHub, 22320 stars]
- Up - deploy infinitely scalable serverless apps, apis, and sites [GitHub, 8638 stars]
- Dapr - portable, serverless, event-driven runtime for stateless and stateful microservices [GitHub, 19789 stars]
- Nuclio - High-Performance Serverless event and data processing platform [GitHub, 4649 stars]
General Tools
- kubesploit - Cross-platform post-exploitation HTTP/2 Command & Control server [GitHub, 940 stars]
- consul - Consul automates networking for simple and secure application delivery
- Komiser - Multi-cloud environment inspector for costs and security [GitHub, 2866 stars]
- tfsec - Security scanner for your Terraform code [GitHub, 5315 stars]
Security Audit Tools
- kube-bench - Checks usage of security best practices as defined in the CIS Kubernetes Benchmark [GitHub, 5306 stars]
- Prowler - security tool to perform AWS security best practices assessments [GitHub, 6957 stars]
- ScoutSuite - Multi-Cloud Security Auditing Tool [GitHub, 6957 stars]
Secrets
- sealed-secrets - A Kubernetes controller and tool for one-way encrypted Secrets [GitHub, 5597 stars]
- Vault - Manage Secrets and Protect Sensitive Data
- aws-vault - securely store and access AWS credentials in development environments [GitHub, 6927 stars]
- SOPS: Secrets OPerationS - Simple and flexible tool for managing secrets on any platform [GitHub, 11257 stars]
Protocols
Auth, API Gateways etc.
- Grant - OAuth Proxy [GitHub, 3743 stars]
- Dex - OpenID Connect (OIDC) identity and OAuth 2.0 provider [GitHub, 7536 stars]
- Kong - Cloud-Native API Gateway [GitHub, 33318 stars]
- Gloo Edge - Kubernetes-native API Gateway Built on Envoy [GitHub, 3601 stars]
Other
- Awesome WAF - Everything about web-application firewalls (WAF) [GitHub, 4759 stars]
- PENTESTING-BIBLE - Learn ethical hacking [GitHub, 11035 stars]
Kubernetes
- Kubernetes Workshop - Gentle introduction to Kubernetes with more than just the basics
- Kubernetes Guide - Kubernetes clusters for the hobbyist [GitHub, 5287 stars]
- Learn Kubernetes Basics
- Introduction to Kubernetes
AWS
- Understanding Amazon EC2 Terminology [Blog, Oct 2018]
Kafka
DevOps
- DevOps Guide - from basic to advanced with Interview Questions and Notes [GitHub, 5423 stars]
- DevOps Exercises - questions and exercises on technical topics related to DevOps and SRE [GitHub, 33396 stars]
Docker
- Docker Curriculum - comprehensive tutorial on getting started with Docker [GitHub, 4892 stars]
Infrastructure as Code Tools
- Terraform - open-source infrastructure as code software tool for consistent CLI workflow
- CloudFormation - cloud provisioning with infrastructure as code for AWS
- Azure Resource Manager - manage your app resources on Azure
- Cloud Deployment Manager - create and manage cloud resources on GCP with simple templates
- HashiCorp Vagrant / [GitHub, 22046 stars]
- CFEngine - automate your infrastructure, security & compliance
- Ansible - automation across open hybrid cloud deployments
- CHEF - Policy-Based Configuration Management Automation Architecture
- Pulumi - Modern Infrastructure as Code. Any cloud, any language [GitHub, 14215 stars]
Additional Tooling
- Terraformer - CLI tool to generate terraform files from existing infrastructure (reverse Terraform) [GitHub, 8970 stars]
- Checkov - static code analysis tool for infrastructure-as-code [GitHub, 4890 stars]
Examples and Learning Resources
- Ansible for DevOps examples [GitHub, 6378 stars]
- Ansible for Kubernetes Examples [GitHub, 581 stars]
Streaming Frameworks / Engines
- Apache Flink - stream processing framework [GitHub, 20121 stars]
- Apache Beam - unified programming model for Batch and Streaming [GitHub, 6012 stars]
- Apache Storm / Apache Storm on GitHub - distributed realtime computation system [GitHub, 6403 stars]
- Amazon Kinesis Streams [AWS]
Effective Containerization
- distroless - Language focused docker images, minus the operating system [GitHub, 14182 stars]
Load Shedding
Load Shedding is used to prevent your microservices from an outage by reducing non-essential requests.
Learning Resources
- AWS re:Invent 2021 - Keeping Netflix reliable using prioritized load shedding [YouTube]
- DevOneConf 2018 - Acacio Cruz - Google - Load-shedding [YouTube]
- Keeping Netflix Reliable Using Prioritized Load Shedding [Blog, Nov 2020]
Tools
- Concurrency Limits - TCP congestion control to auto-detect concurrency limits for services [GitHub, 2836 stars]
Testing
General
- On the Diverse And Fantastical Shapes of Testing by Martin Fowler [Blog, June 2021]
Tooling
- Terratest - Go library to write automated tests for your infrastructure code [GitHub, 6494 stars]
- Serverless Offline - Emulate AWS l and API Gateway locally [GitHub, 4747 stars]
- Moto - easily mock out tests based on AWS infrastructure [GitHub, 6186 stars]
- LocalStack - fully functional local AWS cloud stack [GitHub, 44.6k stars]
PaaS - Platform-as-a-service
- Empire - PaaS built on top of Amazon EC2 Container Service with Heroku like workflow [GitHub, 2672 stars]
Container Network Interface (CNI)
- CNI - networking for Linux containers [GitHub, 4517 stars]
Kafka
- strimzi - Apache Kafka running on Kubernetes [GitHub, 3545 stars]
Documenting Architectural Design
- Companies Using RFCs or Design Docs and Examples of These - from Pragmatic Engineer [Blog, June 2022]
License CC0
Attributions
Resources
- All linked resources belong to original authors
Icons
- skill book by HideMaru from the Noun Project
- Harp by Marina Pugacheva from the Noun Project
- Ancient Greek Theater by Leonidas Oikonomou from the Noun Project
- deity by Eucalyp from the Noun Project
- trojan by Eucalyp from the Noun Project
- Fire Torch by Eucalyp from the Noun Project
- acropolis by Eucalyp from the Noun Project
- papyrus by IconMark from the Noun Project
- Hammer by IconMark from the Noun Project
- balance by Flatart from the Noun Project
- Atlas by parkjisun from the Noun Project
- olympus by IconMark from the Noun Project