Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Modular Architecture for Resilience and Adaptab...

Modular Architecture for Resilience and Adaptability

Slide deck related to the talk presented at the APIDays Australia.
https://www.apidays.global/australia/

The talk was centred around how to make applications modular to support the changing needs and adapt quickly to the new tools and technologies.

Nilesh Gule

October 11, 2023
Tweet

More Decks by Nilesh Gule

Other Decks in Technology

Transcript

  1. $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” }
  2. About Me Name Email [email protected] Ramachandra Prabu Linkedin www.linkedin.com/in/mrprabu Blog

    https://medium.com/@mrprabu.as Intro Enterprise Architect | Cloud | Frontend UI/UX Architecture and Engineering | Digital Transformation | Web & Mobile
  3. 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
  4. A Tale of an Airline booking system – March 2023

    96 hours for password reset Attribution: Twitter icons created by Pixel perfect - Flaticon
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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