⌘K
Development
Local development environment
Test
Test environment for QA
Production
Production environment
EventCatalog Acme Inc
Catalog Documentation Schemas
Browse
Domains Services External Systems Events Commands Queries Flows Data Stores Data Products
Organization
Teams Users

Settings
Infrastructure as Code

Infrastructure as Code (IaC) Overview

An overview of the infrastructure-as-code approach used in the FlowMart e-commerce platform

Infrastructure as Code (IaC) Overview

This document provides an overview of the Infrastructure as Code (IaC) approach used to manage and provision the infrastructure for the FlowMart e-commerce platform.

What is Infrastructure as Code?

Infrastructure as Code (IaC) is an approach to infrastructure management where infrastructure resources are defined and provisioned through machine-readable definition files, rather than through manual processes or interactive configuration tools. This approach allows us to:

  • Version control our infrastructure definitions alongside our application code
  • Automate the provisioning and management of infrastructure
  • Standardize configurations across different environments
  • Document our infrastructure setup as living code rather than static documentation
  • Test infrastructure changes before deploying to production

Our IaC Tech Stack

For the FlowMart e-commerce platform, we use the following technologies for our infrastructure management:

Primary Tools

ToolPurpose
TerraformInfrastructure provisioning across cloud providers (primary tool)
Kubernetes (K8s)Container orchestration
Helm ChartsKubernetes application deployment packaging
GitHub ActionsCI/CD pipeline automation
AWS CloudFormationSpecific AWS infrastructure components

Additional Supporting Tools

ToolPurpose
TerragruntTerraform code organization and management
PackerVirtual machine image building
AnsibleConfiguration management
Prometheus & GrafanaMonitoring and alerting
ELK StackLogging

Infrastructure Architecture

Our infrastructure is organized into the following logical components:

Loading graph...

Repository Structure

Our infrastructure code is organized as follows:

infrastructure/
│
├── terraform/ # Terraform configuration
│ ├── environments/ # Environment-specific configurations
│ │ ├── dev/
│ │ ├── staging/
│ │ └── production/
│ ├── modules/ # Reusable Terraform modules
│ │ ├── networking/
│ │ ├── compute/
│ │ ├── database/
│ │ └── monitoring/
│ └── global/ # Global resources (e.g., Route53)
│
├── kubernetes/ # Kubernetes manifests
│ ├── base/ # Base configurations
│ └── overlays/ # Environment-specific overlays (Kustomize)
│
├── helm-charts/ # Helm charts for application deployment
│
├── scripts/ # Utility scripts
│
└── packer/ # Packer templates for image building

Deployment Principles

  1. Infrastructure Changes via Pull Requests: All infrastructure changes must go through a pull request process, with automated testing and reviews.

  2. Environment Promotion: Changes are first deployed to development, then staging, and finally production, with appropriate testing at each stage.

  3. Immutable Infrastructure: We prefer to replace rather than modify infrastructure components.

  4. Least Privilege: We follow the principle of least privilege for all IAM roles and security groups.

  5. Automated Rollbacks: Our CI/CD pipelines include automated rollback capabilities if deployments fail.

Next Steps

For more detailed information about our infrastructure as code setup, please refer to the following documents:

  • Terraform Implementation
  • Environment Setups
  • CI/CD Pipelines
Previous FlowMart Data Flow Architecture Next Terraform Implementation

On this page

Infrastructure as Code (IaC) Overview What is Infrastructure as Code? Our IaC Tech Stack Primary Tools Additional Supporting Tools Infrastructure Architecture Repository Structure Deployment Principles Next Steps

EventCatalog Backstage Integration

Missing license key for backstage integration.

Please configure the backstage plugin to embed this page into Backstage.

Configure backstage plugin →