Architecting for High Availability in the Cloud with Cellular Architecture

10 Jun 2024 (6 months ago)
Architecting for High Availability in the Cloud with Cellular Architecture

Cellular Architecture in the Cloud

  • Cellular architecture involves breaking down an application into isolated deployments called cells, which can be regional or zonal.
  • Automating cellular infrastructure requires solving key problems such as isolation, provisioning new cells, deploying changes, managing permissions, and monitoring.
  • Standardization is crucial for managing multiple deployments of application code, but it should not lead to homogenization.
  • Different microservices may have different technology stack requirements, and it's acceptable to have multiple flavors of tech stacks within an application.

Automating Cellular Architecture

  • To deploy changes to microservices in a cellular architecture, a common process involves committing code changes, building binary artifacts, releasing them, and deploying to individual cells.
  • A staging cell is used for pre-production deployment, and a "bake" step is added to monitor metrics and ensure deployment health before proceeding to production cells.
  • Standardized build targets for microservices ensure a consistent deployment process across different services.
  • A cell registry is used to maintain a list of cells and their metadata, which is published to a central location and accessed through a library.
  • A cell bootstrap script is used to provision and configure new cells, including setting up networking, installing dependencies, and deploying the application code.

Managing Multiple Cells

  • Isolation is achieved by creating separate AWS accounts for each cell, which provides built-in isolation and cost visibility.
  • Routing is managed through unique DNS names for each cell, ensuring traffic is directed to the appropriate cell.
  • Spinning up new cells is made easy with the cell bootstrap script, which leverages standardized build targets and account registry data.

Infrastructure as Code (IaC)

  • IaC has seen a breakthrough with the introduction of programming languages to define infrastructure, such as AWS CDK, CDK8s, and CDK TF.
  • These tools enable the creation of reusable libraries of infrastructure code, making it easier to manage and deploy complex systems.
  • AWS Code Pipeline can be used to automate the deployment of infrastructure changes, with the help of a "pipeline of pipelines" repository that generates deployment pipelines for different components.

Benefits of Cellular Architecture

  • Cellular architecture can greatly benefit customers in terms of availability and meeting SLAs.
  • It also enhances business agility and engineering velocity.

Overwhelmed by Endless Content?