Architecting Cloud Native Applications
Kamal Arora Erik Farr John Gilbert Piyum Zonooz更新时间:2021-06-24 15:22:07
最新章节:Leave a review - let other readers know what you thinkcoverpage
Title Page
Copyright and Credits
Architecting Cloud Native Applications
About Packt
Why subscribe?
Packt.com
Contributors
About the authors
Packt is searching for authors like you
Preface
Who this book is for
What this book covers
To get the most out of this book
Download the example code files
Conventions used
Get in touch
Reviews
Understanding Cloud Native Concepts
Establishing the context
Rewiring your software engineering brain
Defining cloud-native
Powered by disposable infrastructure
Composed of bounded isolated components
Scales globally
Embraces disposable architecture
Leverages value-added cloud services
Welcomes polyglot cloud
Empowers self-sufficient full-stack teams
Drives cultural change
Summary
The Anatomy of Cloud Native Systems
The cloud is the database
Reactive Manifesto
Turning the database inside out
Bulkheads
Event streaming
Polyglot Persistence
Cloud native database
Cloud native patterns
Foundation patterns
Boundary patterns
Control patterns
Bounded isolated components
Functional boundaries
Bounded context
Component patterns
Data life cycle
Single responsibility
Technical isolation
Regions and availability zones
Components
Data
Accounts
Providers
Summary
Foundation Patterns
Cloud-Native Databases Per Component
Context problem and forces
Solution
Resulting context
Example – cloud-native database trigger
Event Streaming
Context problem and forces
Solution
Resulting context
Example – stream producer and consumer
Event Sourcing
Context problem and forces
Solution
Event-First Variant
Database-First Variant
Resulting context
Example – database-first event sourcing
Data Lake
Context problem and forces
Solution
Resulting context
Example – Data Lake consumer component
Stream Circuit Breaker
Context problem and forces
Solution
Resulting context
Example – stream processor flow control
Trilateral API
Context problem and forces
Solution
Resulting context
Example – asynchronous API documentation
Example – component anatomy
Summary
Boundary Patterns
API Gateway
Context problem and forces
Solution
Resulting context
Example – CRUD service
Command Query Responsibility Segregation (CQRS)
Context problem and forces
Solution
Resulting context
Example – inverse oplock
Example – event sourced join
Offline-first database
Context problem and forces
Solution
Resulting context
Example – offline-first counter
Backend For Frontend
Context problem and forces
Solution
Resulting context
Example – Author BFF
Example – Worker BFF
Example – Customer BFF
Example – Manager BFF
External Service Gateway
Context problem and forces
Solution
Outbound communication
Inbound communication
Resulting context
Example – user authentication integration
Summary
Control Patterns
Event collaboration
Context problem and forces
Solution
Resulting Context
Example – order collaboration
Event orchestration
Context problem and forces
Solution
Resulting context
Example – order orchestration
Saga
Context problem and forces
Solution
Resulting context
Example – order collaboration with compensation
Example – order orchestration with compensation
Summary
Deployment
Decoupling deployment from release
Multi-level roadmaps
Release roadmaps
Story mapping
Deployment roadmaps
Task branch workflow
Deployment pipeline
Modern CI/CD
npm
Infrastructure as Code services
Serverless Framework
Zero-downtime deployment
Blue-green deployment
Canary deployment
Multi-regional deployment
Feature flags
Versioning
Synchronous API
Database schema
Asynchronous API
Micro-frontend
Trilateral API per container
Summary
Testing
Shifting testing to the left
Test engineering
Isolated testing
Unit testing
Component testing
Transitive testing
Integration testing
Contract testing
End-to-end testing
Manual testing
Example – end-to-end relay
Submit order leg
Order submitted leg
Summary
Monitoring
Shifting testing to the right
Key performance indicators
Real and synthetic traffic
Real-user monitoring
Synthetic transaction monitoring
Observability
Measurements
Work metrics
Resource metrics
Events
Telemetry
Alerting
Focus on recovery
Performance
Summary
Security
Shared responsibility model
Security by design
Accounts as code
Defense in depth
Edge layer
Component layer
Data layer
Encryption
Data in transit
Data at rest
Envelope encryption
Tokenization
Domain events
Disaster recovery
Application security
Federated identity management
API gateway
JWT assertion and filter patterns
Regulatory compliance
Summary
Cloud Native Application Design
From monolithic to microservices and everything in between
System design patterns
Monolithic
Client server
Services
Service-oriented architectures (SOAs)
Microservices
Why services matter
Containers and serverless
Containers and orchestration
Registries
Orchestration
Container usage patterns
Microservices with containers
Hybrid and migration of application deployment
Container anti patterns
Serverless
Scaling
Serverless usage patterns
Web and backend application processing
Data and batch processing
System automation
Serverless anti patterns and concerns
Development frameworks and approaches
Summary
How to Choose Technology Stacks
Cloud technology ecosystems
Public cloud providers
Independent software vendor (ISV) and technology partners
Customer managed products
Software as a Service
Consulting partners
Niche SI partners
Regional SI partners
Global SI partners
Procurement in the cloud
Cloud marketplaces
Marketplace and service catalogs
Cloud marketplace anti-patterns
Licensing considerations
Cloud vendor pricing models
Example - AWS Lambda pricing
Open source
Cloud services
Cloud services – vendor versus self-managed
Self-managed approach
Managed cloud services
Vender lock-in
Operating systems
Windows versus Linux
Do operating systems really matter any longer?
Summary
Optimizing Cost
Before the cloud
Cloud cost view
Cloud economics
CapEx versus OpEx
Cost monitoring
Tagging best practices
Cost optimization
Compute optimization
Storage optimization
Serverless implications
Cloud native toolkit
Cloudability
AWS Trusted Advisor
Azure Cost Management
Summary
Scalable and Available
Introduction to the hyper-scale cloud infrastructure
Always-on architectures
Always-on – key architectural elements
Network redundancy
Redundant core services
Monitoring
Infrastructure as Code
Immutable deployments
Self-healing infrastructures
Core tenets
Service-oriented architectures and microservices
Cloud-native toolkit
Simian Army
Docker
Kubernetes
Terraform
OpenFaaS (Function as a Service)
Envoy
Linkerd
Zipkin
Ansible
Apache Mesos
Saltstack
Vagrant
OpenStack projects
Summary
Amazon Web Services
AWS' cloud native services (CNMM Axis-1)
Introduction
AWS platform – differentiators
KRADL services
AWS native security services
Machine Learning/Artificial Intelligence
Object storage (S3 Glacier ecosystem)
Application centric design (CNMM Axis-2)
Serverless microservice
API trigger
Function
Service
Serverless microservice – sample walkthrough
AWS Lambda function creation and configuration
Configuring the Amazon API Gateway
Setting up a Weather Service Account
Testing the service
Deploying the API
Serverless microservice automation using AWS SAM
SAM YAML template
API definition Swagger file
AWS Lambda code
AWS SAM usage
Automation in AWS (CNMM Axis-3)
Infrastructure as code
CI/CD for applications on Amazon EC2 Amazon Elastic Beanstalk
CI/CD for serverless applications
CI/CD for Amazon ECS (Docker containers)
CI/CD for security services – DevSecOps
Patterns for moving off monolithic application architectures to AWS native architectures
Summary
Microsoft Azure
Azure's Cloud Native Services (CNMM Axis-1)
Microsoft Azure platform – differentiators
Azure IoT
Azure Cosmos DB
Azure machine learning studio
Visual Studio Team Services
Office 365
Application Centric Design (CNMM Axis-2)
Serverless microservice
Serverless microservice – walkthrough
Browser-based testing
Command-line-based testing
Automation in Azure (CNMM Axis-3)
Infrastructure as code
CI/CD for serverless applications
CI/CD for Azure container service (Docker containers)
Patterns for moving from monolithic application architectures to Azure native architectures
Summary
Google Cloud Platform
GCP's cloud-native services (CNMM Axis-1)
Introduction
Google Cloud Platform – differentiators
Cloud AI
Kubernetes Engine
G Suite
Application Centric Design (CNMM Axis-2)
Serverless microservice
Serverless microservice – sample walkthrough
Automation in the Google Cloud Platform (CNMM Axis-3)
Infrastructure as code
CI/CD for serverless microservices
CI/CD for container-based applications
Patterns for moving off from monolithic application architectures to Google cloud native architectures
Summary
What's Next? Cloud Native Application Architecture Trends
Predictions for the next three years – what to expect in terms of cloud native architecture evolution
Open source frameworks and platforms
Increased abstraction from infrastructure services
Systems will become smarter and AI/ML driven starting with DevOps and moving on to NoOps
Developers will natively develop new applications in the cloud instead of first developing locally
Voice chatbots and AR/VR-based interaction models will become prevalent mainly powered by the cloud
Cloud native architectures will expand beyond data centers to "things"
Data will continue to be new "oil"
The future of enterprises on the cloud
New IT roles
Summary
Other Books You May Enjoy
Leave a review - let other readers know what you think
更新时间:2021-06-24 15:22:07