platforms ➢ Handle complex business rules ➢ Competitive in a fast moving market ➢ Flexibility to choose the cloud vendor or go on-premise How do you support these requirements while moving fast and innovating? Let’s say I wanted to build a large application
practices or patterns of useful organization within a field of expertise. A pattern language defines these relationships between the patterns, ➢ Alternative pattern ➢ Predecessor pattern ➢ Successor pattern Applying microservices pattern language
of loosely coupled, collaborating services. This approach corresponds to the Y-axis of the Scale Cube. Services communicate using either synchronous protocols such as HTTP/REST or asynchronous protocols such as AMQP. Services can be developed and deployed independently of one another. All the drawbacks of Monolithic architecture becomes advantages of microservices Microservices Architecture
will produce a design whose structure is a copy of the organization's communication structure. ➢ Decompose by business capability - Echoes Conway’s law ➢ Decompose by subdomain - Echoes the inverse of Conway’s law Decompose applications into microservices
Each local transaction updates the database and publishes a message or event to trigger the next local transaction in the saga. ➢ Choreography ➢ Orchestration
headers, causing unnecessary network traffic HTTP/1.x makes poor use of the underlying TCP connection HTTP/2 reduces latency by enabling, ➢ Request and response multiplexing ➢ Minimize protocol overhead ➢ Multiple concurrent exchanges on the same connection HTTP/3 is under experimentation
HTTP/2 + Protobuf Define your service definition in a proto file Automatically generate idiomatic client and server stubs for your service in a variety of languages and platforms Use the runtime libraries for programming languages of your choice and write client and server. gRPC Go - Example
teams adopting microservice architecture without any platform support or coordination ➢ Retaining the same development process and organization structure that were used when developing monolithic applications. Microservices Anti-Patterns
App External In cluster API 1 API 2 API 3 Load Balancer App Version A Version B 10% 90% Failing Where is the retry policy implemented? How is canary deployment done? ADVANCED RULES? Canary A/B Fault injection Retry policy Configure timeouts?
Delay in procuring hardware makes scaling up VMs without capacity planning impossible ➢ Operational overhead of installing, upgrading and monitoring infrastructure ➢ Complexity of managing many deployment configurations ➢ Supported OS vary from client to client On-Premise vs On-Cloud Challenges on deploying solution on-premise
security ◦ Compile-time languages to build binaries ◦ Removing all sensitive information from code ➢ Dockerize all applications ◦ Multi-stage docker builds to remove traces and ship the binaries ➢ Setup Kubernetes cluster on-premise on any Operating System of choice ➢ Helm charts for managing deployment complexities ➢ Leveraging cloud native stack for Monitoring, Logging using Prometheus & EFK stack