navigation

Yet another CI/CD pipeline for containerized API application to AWS!

Overview

Join our enjoyable workshop designed to elevate your Continuous Integration / Continuous Delivery (CI/CD) practices! Here’s what you will dive into:

  • experience the simplified trunk-based development branching strategy to reduce merge conflicts and make code reviews easier.
  • craft and optimize automation pipelines using GitHub Actions, leveraging job parallelism, dependency caching, merge queue, and concurrency group techniques.
  • implement blue/green deployment with AWS CodeDeploy to minimize application deployment downtime.

In addition, a simple ChatOps approach will be used to centralize the pipeline and deployment results to Slack channels.

And that’s just the beginning! This workshop will unlock even more AWS services to enhance your containerized application’s reliability and performance. Don’t miss out!

You might implement the following AWS architecture. Exciting, right?

0001

If you need complete control over the view of the image, check here.

You might notice that the VPC is primarily private, with no public subnets or Internet Gateway configurations. In this workshop, you are going to discover how to securely access private resources from the outside and how these resources initiate connections with other AWS services!

I believe the word “DevOps” involves more than just toolings; it is about cultivating the right team culture and applying tool-agnostic techniques to truly speed up the development process. This workshop aims to show the core ideas of a DevOps-driven CI/CD pipeline, rather than mastering security scanning, testing, or CI/CD technologies (other components of DevOps, including monitoring and observability, will not be covered). Once you grasp the fundamentals of a CI/CD pipeline, you can choose your preferred tools for implementation!

This workshop is inspired by one of my favorite books, continuous delivery by Christie Wilson. This book explores the essentials of continuous delivery and provides practical examples for applying these concepts. Although it mainly offers theoretical insights and smaller examples, I have developed a full-scale project utilizing modern tools and AWS to partly showcase how these principles can be effectively implemented. Give it a read if you are interested in accelerating the software delivery process with any stack.

0002

You should work more on setting up and configuring this workshop to fit your needs and your projects, as it was made for me to learn from and has not been used on any real-world projects yet.

Target Audience

This beginner-level workshop is designed primarily for individuals in technical roles, but anyone interested in learning how to implement a CI/CD pipeline for a containerized Java API application will find it beneficial.

To participate in this workshop, the following prerequisites are recommended:

  • An AWS account with administrative access.
  • A GitHub account.
  • Familiarity with GitHub and GitHub Actions.
  • Basic understanding of the AWS CLI and related services.
  • Experience with Spring-based API development and Docker (helpful but not required).
  • Basic knowledge of Shell and Git commands.

You do not need deep knowledge on any of these, and if needed, you can research them as you go!

Duration

The estimated duration for completing this workshop is around 6 hours.

Costs

The services used in this workshop charge per usage, although most of them have a free tier, so unless you used the free tier for other workloads, it will cost you around $1.5 to run this workshop. Please look at the different services’ pricing pages to see their cost.

To avoid incurring charges, move to the 8. Cleanup section after the workshop to clean up the resources provisioned.

Main Content

  1. Introduction
  2. Tool-Agnostic Concepts
  3. High-Level Design
  4. Preparation
  5. Create AWS ECR
  6. Create Application Load Balancer
  7. Create AWS ECS Resources
  8. Create Network Load Balancer
  9. Create AWS API Gateway Resources
  10. Create AWS RDS Resources
  11. Your First CI Workflow Executions
  12. Branch Protection With Ruleset
  13. Experiments With GitHub Actions Merge Group

While it may have some shortcomings, it is definitely built with love 💖. If you found it useful and were able to apply anything to your projects, do not hesitate to give it a star 🌟 here.

We welcome your suggestions or improvements! If you have any feedback while running this workshop, feel free to send us an email to tu.lna07@gmail.com.