Awesome Architecture
A collection of awesome things related to Architecture
API
- AWS - Best practices for working with the Apache Velocity Template Language in Amazon API Gateway
- AWS - Architecture patterns for consuming private APIs cross-account
- Netflix - How Netflix Scales its API with GraphQL Federation (Part 1, Part 2)
Authentication and authorization
- Auth0 - On The Nature of OAuth2’s Scopes
- Styra - Entitlements: Architecting Authorization
- Frontegg - How to Persist JWT Tokens for Your SaaS Application
- Netflix - Edge Authentication and Token-Agnostic Identity Propagation
- AWS - Introducing Amazon DocumentDB (with MongoDB compatibility) user-defined roles for access control
- AWS - Enhancing Amazon DynamoDB single-table design with AWS AppSync access and security features
- IETF - JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens
CI/CD
- AWS - Automate rollbacks for Amazon ECS rolling deployments with CloudWatch alarms
- Jim Bird - Rolling Forward and other Deployment Myths
- Basecamp - Seamless branch deploys with Kubernetes
- AWS - Continuous Delivery of Amazon EKS Clusters Using AWS CDK and CDK Pipelines
- Amazon - Hands-off: Automating continuous delivery pipelines at Amazon (video, article, podcast)
- AWS - CDK Pipelines: Continuous delivery for AWS CDK applications
- AWS - Building a cross-account continuous delivery pipeline for database migrations
- AWS - Serverless CI/CD for the Enterprise on AWS
- AWS - Best practices for CI/CD using AWS Fargate and Amazon ECS (video, slides)
- Amazon - Amazon CI/CD Practices for Software Development Teams (video, slides)
- AWS - Best Practices for CI/CD with AWS Lambda and Amazon API Gateway
- Amazon - Ensuring rollback safety during deployments
- AWS - Building and testing polyglot applications using AWS CodeBuild
- AWS - Deploying GitOps with Weave Flux and Amazon EKS
- AWS - Include CloudFormation templates in the CDK
- AWS - Validating AWS CodeCommit Pull Requests with AWS CodeBuild and AWS Lambda
- AWS - Running end-to-end Cypress tests for your fullstack CI/CD deployment with Amplify Console
- AWS - Test Reports with AWS CodeBuild
- AWS - New – Building a Continuous Integration Workflow with Step Functions and AWS CodeBuild
- AWS - Using AWS Step Functions State Machines to Handle Workflow-Driven AWS CodePipeline Actions
Concepts
- Application Lifecycle Management (ALM)
- Architecturally significant requirements criteria: business value/risk, stakeholder concern, quality level, external dependencies, cross-cutting, first-of-a-kind, source of problems on past projects.
- Architecture decision records (ADRs): Records that support team alignment, document strategic directions for a project or product, and reduce recurring and time-consuming decision-making efforts
- AWS Well-Architected Framework pillars: 1/ Operational excellence 2/ Security 3/ Reliability 4/ Performance efficiency 5/ Cost optimization
- Coupling: Coupling describes the independent variability of connected systems, i.e., whether a change in System A has an effect on System B. If it does, A and B are coupled.
- Coupling facets: 1/ Technology (Java vs. C++, Kubernetes, PostgreSQL) 2/ Location (IP addresses, DNS) 3/ Data Format (Binary, XML, JSON, protobuf, Avro) 4/ Data Type (int16, int32, string, UTF-8, null, empty) 5/ Semantic (Name, Middlename, ZIP) 6/ Temporal (sync, async) 7/ Interaction Style (messaging, RPC, query, GraphQL) 8/ Conversation (pagination, caching, retries)
- Declarative provisioning not equal to Declarative language
- Event-Driven Architecture patterns: 1/ Event Notification 2/ Event-carried State Transfer 3/ Event Sourcing 4/ Command and Query Responsibility Segregation.
- Software Boundaries or "Fracture Planes": 1/ Business Domain Bounded Context 2/ Regulatory Compliance 3/ Change Cadence 4/ Team Location 5/ Risk 6/ Performance Isolation 7/ Technology 8/ User Personas
- Software delivery performance four key metrics: 1/ Cycle Time (Change Lead Time) 2/ Deployment Frequency 3/ Change Failure Rate (CFR) 4/ Mean Time to Recovery (MTTR)
Data isolation
Frontend
- Capital One - How Capital One Builds Micro-Frontends At Scale
Hybrid architecture
Infrastructure automation
- AWS - Deploy AWS Organizations resources by using CloudFormation
- AWS - Running bash commands in AWS CloudFormation templates
- AWS - Building production-ready prototypes (video, slides)
- AWS - Managing resources using AWS CloudFormation Resource Types
Integration patterns
- AWS - Architecture patterns for consuming private APIs cross-account
- Gregor Hohpe - Starbucks Does Not Use Two-Phase Commit
Internet of Things (IoT)
Learning from failures
Migrations
- Spotify - Changing the Wheels on a Moving Bus — Spotify’s Event Delivery Migration
- Amazon - Amazon CISO Jeff Carter - Securing Amazon.com and Migrating Databases to the Cloud
Methodology
- Gregor Hohpe - Would you like architects with your architecture?
- CIO - 7 tell-tale signs of fake DevOps
- Yan Cui - This is why you should keep stateful and stateless resources together
- Neward & Associates - You Want Modules, Not Microservices
- Chris Richardson - Minimizing Design Time Coupling in a Microservice Architecture
- James Hamilton - On Designing and Deploying Internet-Scale Services
- Amazon - Operational Readiness Reviews (ORR)
- SoundCloud - How we ended up with microservices
- Carlos Arguelles - Amazon’s Not So Secret Weapon - The magic of Working Backwards: a real-world case study
- martinfowler.com - Building Infrastructure Platforms
- martinfowler.com - Compliance in a DevOps Culture
- Pedro Del Gallego - The Away Team Model at Amazon
- martinfowler.com - The Practical Test Pyramid
- AWS - Overview of Deployment Options on AWS
- AWS - Practicing Continuous Integration and Continuous Delivery on AWS
- The Twelve-Factor App.
- AWS - Applying the Twelve-Factor App Methodology to Serverless Applications
- Trunk-Based Development. Amazon encourages this development model - see “before we begin” section in Implementing GitFlow Using AWS CodePipeline, AWS CodeCommit, AWS CodeBuild, and AWS CodeDeploy
- Branch by Abstraction for major changes that take time
- LaunchDarkly - Feature Flags for deciding when to release new capabilities
- ThoughtWorks - Technology Radar
- AWS - Establishing your best practice AWS environment
- AWS - Two-pizza teams: Organizing for innovation (video, slides)
- Continuous Configuration at the Speed of Sound
- Towards Operational Excellence blog post series:
- Amazon - Amazon’s approach to failing successfully (video, slides)
- AWS - Leadership Session: Developer Tools on AWS (video, slides)
- Amazon - Amazon's approach to high-availability deployment (video, slides)
- AWS - Failing successfully: The AWS approach to resilient design
- Amazon - Releasing Mission-Critical Software at Amazon (video, slides)
- Amazon - DevOps at Amazon: A Look at Our Tools and Processes
- Amazon - Fireside Chat: DevOps at Amazon with Ken Exner, GM of AWS Developer Tools - AWS Online Tech Talks
Multi-region architecture and disaster recovery
Networking
- AWS - Designing hyperscale Amazon VPC networks
- AWS - Addressing latency and data transfer costs on EKS using Istio
- AWS - VPC sharing: key considerations and best practices
- FactSet - How FactSet handles networking for 1000+ AWS accounts
- Slack - Building the Next Evolution of Cloud Networks at Slack – A Retrospective
Observability
- Amazon - Building dashboards for operational visibility
- AWS - AWS X-Ray (see also Integrating AWS X-Ray with Other AWS Services)
- AWS - AWS X-Ray Now Supports Amazon API Gateway and New Sampling Rules API
- AWS - Visualize and Monitor Highly Distributed Applications with Amazon CloudWatch ServiceLens
- AWS - Debugging with Amazon CloudWatch Synthetics and AWS X-Ray
- AWS - Amazon CloudWatch Now Includes Contributor Insights - in Preview
- AWS - Container monitoring for Amazon ECS, EKS, and Kubernetes is now available in Amazon CloudWatch
- AWS - Using Prometheus Metrics in Amazon CloudWatch
- AWS - One observability workshop
Operations
- TheFork - Kubernetes cluster upgrade: the blue-green deployment strategy
- AWS - Resolve IT Incidents Faster with Incident Manager, a New Capability of AWS Systems Manager
Platforms
Reliability
- Zendesk - ZEN and the art of Reliability
Sharding and partitioning data
- Slack - Scaling Datastores at Slack with Vitess
- AWS - Improve performance and manageability of large PostgreSQL tables by migrating to partitioned tables on Amazon Aurora and Amazon RDS
- GitHub - Partitioning GitHub’s relational databases to handle scale
- GitLab - Decomposing the GitLab backend database: Part 1: Designing and planning, Part 2: Final migration and results, Part 3: Challenges and surprises
- Notion - Herding elephants: Lessons learned from sharding Postgres at Notion
- Shopify - E-Commerce at Scale: Inside Shopify's Tech Stack - Stackshare.io
Shipping
- 37signals - HEY Bubble Up: From kickoff to launch
- 37signals - Seven Shipping Principles