<aside>
💡
This section outlines the user stories that guided our infrastructure and deployment work for the banking application project. These user stories were used to create tasks on the Jira board
</aside>
Architecture Design
As a DevOps engineer, I want to design the bank app deployment infrastructure so that our application can be built, tested, and deployed automatically and consistently.
EPIC 1 - Preliminary Installations and Setup
- As a devops engineer, I want to purchase and register a domain so I can use it for DNS Management.
- As a devops engineer, I want to install the required tools on my computer so I can work locally on infrastructure code.
- Task: Install VS Code
- Task: Install Git
- Task: Install Terraform
- Task: Install Docker and Docker Compose
- Task: Run and verify:
- As a devops engineer, I want to create individual IAM user accounts for my team members so they can securely access AWS resources with appropriate permissions.
EPIC 2 - Building Infrastructure
- As a devops Engineer, I want to replicate the Infrastructure code shared by Engr Smart so that I can use it to provision my AWS Infrastructure.
- Push Infrastructure code to Public Repo
- Share the Repo link to the Mayor and Damilola to review
- Document your steps on a Notion document and share in the comment
- As a devops engineer, I want to review the infrastructure code created by my team to ensure it aligns with what was shared by Engineer Smart
- List out the list of files and folders to check for during review
- Clone repository to Local and Review
- Confirm that the code is complete and inform the team
- As an engineer, I want to deploy modular infrastructure using Terraform for each component.
- Deploy VPC Module
- Deploy the EKS Module
- Configure DNS -
- Deploy RDS -
EPIC 3 - GitHub Runner Setup
- As a devops engineer, I want to create an EC2 instance so I can run the GitHub self-hosted runner.
- Launch EC2 instance (Ubuntu 22.04, t2.medium, 20 GB, name:
github-runner) -
- Create and download key pair (
.pem file) Kachi
- As a devops engineer, I want to connect to an EC2 instance and configure the environment to run a self-hosted GitHub runner.
- Configure
~/.ssh/config locally - Ifeoma
- Connect via Remote-SSH in VS Code and run setup commands
- As a DevOps engineer, I want to containerize and run the GitHub runner on EC2 so my workflows can execute.
- Create directory
get-runner -
- Add files to the
get-runner directory - .env, docker-compose.yml, Dockerfile, entrypoint.sh -
- Run docker Runner -
- Check that there are no permission issues.
EPIC 4 - CI/CD Pipeline Setup and Infrastructure Deployment
- As an AWS Admin, I want to create AWS credentials so that GitHub Actions can deploy infrastructure.
- Description - Create an IAM user named
terraform-github
- As a DevOps engineer, I want to store AWS credentials in GitHub so the gitrunner can authenticate to AWS. -
- As a DevOps engineer, I want to configure the CI/CD workflow so infrastructure can be deployed automatically.
- As a devops engineer, I want to push the code and monitor the pipeline to verify deployment.
EPIC 5 - Verify Infrastructure Deployment
- As a tester, I want to verify that AWS resources were provisioned correctly so I can confirm success.
- Check AWS VPC console → Subnets, gateways, route tables
- Task: Check EKS console → Cluster is ACTIVE
- Task: Check RDS console → DB is AVAILABLE
- Task: Check Route 53 → Hosted zone and A-records are created
- Task: Check ECR → Repository is setup
Epic 4: Configure and Deploy with Kubernetes
- As a DevOps engineer, I want to provision a MySQL database in the cloud.
- As a developer, I want to ensure CRUD operations are executed securely on the database.
Epic 6: Deploy with Kubernetes
- As a DevOps engineer, I want to deploy frontend, backend, and database services as separate pods in a Kubernetes cluster.
- As a backend developer, I want to define database credentials and use a connection string to link backend to the database.