Slide 1

Slide 1 text

Modular Architecture for Resilience and Adaptability Nilesh Gule @nileshgule

Slide 2

Slide 2 text

$whoami { “name” : “Nilesh Gule”, “website” : “https://www.HandsOnArchitect.com", “github” : “https://GitHub.com/NileshGule" “twitter” : “@nileshgule”, “linkedin” : “https://www.linkedin.com/in/nileshgule”, “YouTube” : “https://www.YouTube.com/@nilesh-gule” “likes” : “Technical Evangelism, Cricket”, “co-organizer” : “Azure Singapore UG” }

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

A Tale of an Airline booking system – Feb 2022 Issues with Airline booking ✓ Mobile app: unable to search flights, unable to manage booking ✓ Website: search for flights, book tickets, manage booking ✓ Different error messages on Mobile app and on website for same action Possible causes ✓ Not using APIs: different teams, codebases, lack of collaboration

Slide 5

Slide 5 text

A Tale of an Airline booking system – March 2023 96 hours for password reset Attribution: Twitter icons created by Pixel perfect - Flaticon

Slide 6

Slide 6 text

Drawbacks of legacy systems “We Didn’t Do Anything Wrong But Somehow, We Lost! “

Slide 7

Slide 7 text

Codebase One codebase tracked in version control, many deploys Dependencies Explicitly declare and isolate dependencies Config Store config in the environment Backing services Treat backing services as attached resources Build, Release and Run Strictly separate build and run stages Processes Execute the app as one or more stateless processes Port Binding Expose services via port binding Concurrency Scale out via process-model Disposability Maximize robustness with fast startup and graceful shutdown Dev/Prod Parity Keep development, staging and production as similar as possible Logs Treat Logs as event streams Admin Processes Run admin/management tasks as one-off processes 12 Factor Apps

Slide 8

Slide 8 text

Codebase One codebase tracked in version control, many deploys Dependencies Explicitly declare and isolate dependencies Config Store config in the environment Backing services Treat backing services as attached resources Build, Release and Run Strictly separate build and run stages Processes Execute the app as one or more stateless processes Port Binding Expose services via port binding Concurrency Scale out via process-model Disposability Maximize robustness with fast startup and graceful shutdown Dev/Prod Parity Keep development, staging and production as similar as possible Logs Treat Logs as event streams Admin Processes Run admin/management tasks as one-off processes 15 Factor Apps API First Define service contract Telemetry Monitor process performance Authentication Secure applications across hardware, network, and software layers

Slide 9

Slide 9 text

API First Define Service Contract • Well suited for cloud development • Allows rapid prototyping • Support a services ecosystem • Facilitates automated deployment testing and continuous delivery pipelines • Enables consumers and service developers to work in parallel • Helps to avoid bottlenecks and facilitates virtualization of APIs by allowing consumers to run tests against the mocks

Slide 10

Slide 10 text

Telemetry Monitor process performance • Categories of data • Application Performance Monitoring (APM) • Domain-specific telemetry • Health and System logs • Helps to scale, self-heal and manage alerts for end users and platform operators

Slide 11

Slide 11 text

Frameworks & Tools

Slide 12

Slide 12 text

Dapr Components

Slide 13

Slide 13 text

Loosely coupled application design Microservices, Event Driven Architecture Automation IaC using Declarative methods with Terraform, Ansible, Pulami etc. Things to Improve Resiliency and Adaptability Chaos testing Deliberately introduce faults to test for resiliency Serverless Automatically provision, scale and manage resources Observability Collect and analyse data to identify issues and potential improvements Progressive Delivery • Blue Green Deployment • Canary Release • Dark launches • Phased alfa, beta, and gamma releases

Slide 14

Slide 14 text

Evolution of API Architecture https://www.linkedin.com/posts/bytebytego_systemdesign-coding-interviewtips-activity-7051425568013045760-u70N

Slide 15

Slide 15 text

References https://www.youtube.com/@nilesh-gule https://dapr.io/ 12 Factor App Beyond the Twelve-Factor App by Kevin Hoffman

Slide 16

Slide 16 text

Slides https://www.slideshare.net/nileshgule/ https://speakerdeck.com/nileshgule/

Slide 17

Slide 17 text

Nilesh Gule ARCHITECT | MICROSOFT MVP “Code with Passion and Strive for Excellence” nileshgule @nileshgule Nilesh Gule NileshGule www.handsonarchitect.com https://bit.ly/youtube-nileshgule

Slide 18

Slide 18 text

Q&A