Continuous integration, delivery and deployment

Engineering👨‍💻 Dec 09, 2019

Scenario:

Mono-repo with multiple projects hosted on github.. We need a CI/CD setup for this, whenever a pull request is raised.

Inputs:

  • Code hosted on Github

Continuous Integration/CI server:

  • CI server shall merge incoming branch into master in its environment, when a pull request is made.
  • Run unit tests
  • Run integration tests
  • Gives an endpoint for the pull request owner to manually validate integration

Steps:

  • git merge
  • <code_base>
  • <code_base>
  • Bring up necessary infra
  • <integration_test> <code_base>
  • if all pass, push the binaries to artefact storage.

Continuous Delivery:

  • The server bakes the binaries into a ready to use AMI or image. This step shall also create auto-scaling group, launch template, etc. necessary for service to function for end user.

Steps:

  • Provision new AMI using packer, with latest binary from earlier step.
  • Invoke terraform script to create launch template, auto-scaling group, target group, etc.
  • It responds to jenkins server when the delivery is ready for deployment.

Continuous Deployment:

Note: Anywhere it says, “attach to load balancer” can be perceived as “registered to service discovery” for that architecture.

  • The server takes manual command from service owner, attaches the auto-scaling group to load balancer.
  • Allows user to terminate older deployment after a few minutes..Typically greater than time_taken_to_launch_server+time_taken_to_initialise_process+minimum_healthy_threshold*interval
  • Once done, notifies monitoring system about new deployment.

Steps:

  • Gets current autoscaling group id from above step
  • Adds them to defined load balancer
  • Awaits for load balancer stats on health, asks for termination
  • Terminates older infra upon confirmation

Srujan

You should go to about section on this site.

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.