Microservices on AWS
Introduction
Characteristics of Microservices
Decentralized
Independent
Do one thing well
Polyglot
Black box
You build it; you run it
Benefits of Microservices
Agility
Innovation
Quality
Scalability
Availability
Challenges of Microservices
problems
Distributed Systems
Migration
Versions
Organization
Architectural Complexity
Operational Complexity
..................................
Microservices and the Cloud
On-demand resources
Experiment with low cost and risk
Programmability
Infrastructure as code
Continuous Delivery
Managed services
Service orientation
Polyglot
Microservices on AWS
Simple Microservices Architecture on AWS
Reducing Operational Complexity
API Implementation
API Gateway is a fully managed service that makes it easy for developers to create, publish, maintain, monitor, and secure APIs at any scale.
AWS Lambda lets you run code without provisioning or managing servers.27 You pay only for the compute time you consume – there is no charge when your code is not running. With Lambda, you can run code for virtually any type of application or backend service – all with zero administration
Distributed Systems Components
Service Discovery
Client-Side Service Discovery
hardcode the IP address of the target as part of the configuration of the
communication source
Application Load Balancer-Based Service Discovery
One of the advantages of Application Load Balancing is that it provides health checks and automatic registration/de-registration of backend services in failure cases. The Application Load Balancer also offers path- and host-based routing approaches. Combining these features with DNS capabilities, it’s possible to build a simple service discovery solution with minimum efforts and low cost
DNS-Based Service Discovery
Service Discovery Using Amazon ECS Event Stream
Service Discovery Using Configuration Management
OpsWorks is a configuration management service that uses Chef, an automation platform that treats server configurations as code. OpsWorks uses Chef to automate how servers are configured, deployed, and managed across your EC2 instances or on-premises compute environments.
Service Discovery Using Key Value Store
Third-party software
HashiCorp Consul, etcd, or Netflix Eureka
Distributed Data Management
event sourcing
The core idea behind event sourcing is to represent and persist every application change as an
event record. Instead of persisting application state, data is stored as a stream of events
Kinesis Streams enables you to build custom applications that process or analyze streaming data for specialized needs.48 Kinesis Streams can continuously capture and store terabytes of data per hour from hundreds of thousands of sources, such as website clickstreams, financial transactions, social media feeds, IT logs, and location-tracking events.
CQRS
Asynchronous Communication and Lightweight Messaging
REST-based Communication relies on stateless communication, uniform interfaces, and standard methods.
Asynchronous Messaging
Amazon SQS is a fast, reliable, scalable, fully managed queuing service that makes it simple and cost effective to decouple the components of a cloud application.49
Amazon SNS is fully managed notification service that provides developers with a highly scalable, flexible, and cost-effective capability to publish messages from an application and immediately deliver them to subscribers or other applications.50
Orchestration and State Management
AWS Step Functions makes it easy to coordinate the components of distributed applications and microservices using visual workflows.
Distributed Monitoring
CloudWatch is a monitoring service for AWS Cloud resources and the applications you run on AWS.
Monitoring
Centralizing Logs, Most AWS services already centralize log filesDistributed Tracing
AWS X-Ray provides an end-to-end view of requests as they travel through your application and shows a map of your application’s underlying components.
Options for Log Analysis on AWS
Amazon ES makes it easy to deploy, operate, and scale Elasticsearch for log analytics, application monitoring, interactive search, and more.
Amazon Redshift is a fast, fully managed, petabyte-scale data warehouse service that makes it simple and cost-effective to analyze all your data using your existing business intelligence tools.59
Amazon QuickSight is a fast, cloud-powered business analytics service to build visualizations, perform ad-hoc analysis, and quickly get business insights from your data.60
Kinesis Firehose is a fully managed service for delivering real-time streaming data to destinations such as Amazon S3, Amazon Redshift, or Amazon ES.
Auditing
Audit Trail
CloudTrail is a web service that records AWS API calls for your account and delivers log files to you.62 This includes those taken on the AWS Management Console, the AWS CLI, SDKs, and calls made directly to the AWS API.
Events and Real-Time Actions
CloudWatch Events delivers a near real-time stream of system events that describe changes in AWS resources.65 Declarative rules associate events of interest with automated actions to be taken.
Resource Inventory and Change Management
AWS Config is a fully managed service that provides you with an AWS resource inventory, configuration history, and configuration change notifications to enable security and governance.66 The AWS Config rules feature enables you to create rules that automatically check the configuration of AWS resources recorded by AWS Config.