----------
Ndubuisi Asogwa
The mission is making a difference,
adding value and
being impactful.
The mission is making a difference,
adding value and
being impactful.
In this AWS DevOps workflow, CodeCommit is used as the source code repository. SSH private and public keys are generated, and the public key is uploaded to the AWS account for secure authentication to CodeCommit. The code is then pushed to CodeCommit for version control. To ensure code quality, the code undergoes testing and validation using CodeBuild. If the code fails the tests, it is rolled back, debugged, and pushed back to CodeCommit for further modifications. Once the code passes the tests, CodeDeploy is used to deploy the application to EC2 instances. CodePipeline acts as the orchestrator, coordinating the three stages: source, build, and deployment. It takes input from repository, typically Github, to move the code from source to destination. This allows for a streamlined and automated deployment process.
This project emphasizes DevOps practices and leverages AWS services to automate application deployment. Elastic Container Service (ECS) is utilized alongside other developer tools within AWS. Data is stored in a DynamoDB global table, spanning two regions and enabling data streams for real-time updates. Docker images are stored in Elastic Container Registry (ECR), while CodeCommit serves as the host for the source code repository. CodeBuild employs a buildspec.yml file to build the application, and CodeDeploy handles the deployment of the application to ECS in both regions. CloudWatch is utilized to monitor resource utilization and gather insights. To distribute traffic effectively, Route 53 is used to route requests to two Elastic Load Balancers (ELBs) located in separate regions. The ELBs are configured with an SSL certificate to ensure secure communication.
This project focuses on managing container orchestration using Elastic Kubernetes Service (EKS) on AWS. The eksctl command tool is employed to create an EKS cluster and node group, utilizing a specific Amazon Machine Image (AMI). To ensure scalability, the nodes are autoscaled using a scaling policy, allowing for scaling out or scaling in based on demand. The eksctl utility is used to generate a kubeconfig file, enabling secure communication between kubectl and the API control plane. An Ingress controller is installed to expose the service and map the pods to a Network Load Balancer, enabling external access. Additionally, Prometheus is deployed within the cluster to collect application-specific metrics for monitoring purposes.
This project revolves around utilizing the Riverbed monitoring software tool to monitor a web container application based on Java, which runs on a Tomcat server with an in-memory SQL database. The monitoring process focuses on measuring transaction throughput, response time, and error rate of the application. The collected metrics are then sent to the Datagod software for visualization and analysis. Additionally, a synthetic monitoring tool called Pingdom software is employed to monitor the uptime of the web application, ensuring its availability and reliability.