Architecting for High Availability in the Cloud with Cellular Architecture

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?