Upgrade to Pro — share decks privately, control downloads, hide ads and more …

10x deployment frequency using GitLab Flow and GitHub Actions on AWS ECS

10x deployment frequency using GitLab Flow and GitHub Actions on AWS ECS

English version of this slide

#githubactions #devops #awsecs #cicd #gitlabflow

Tadashi Nemoto

May 10, 2021

More Decks by Tadashi Nemoto

Other Decks in Technology


  1. Introduction • Tadashi Nemoto • Exawizards, Inc. • Platform Engineer

    (DevOps Engineer) ◦ Introduce and improve CI / CD pipelines ◦ Maintain production / develop environments ◦ Introduce Test Automation
  2. Outlines • Previous CI /CD pipelines and deployment flows •

    What I improved ◦ Jenkins → GitHub Actions on AWS ECS ◦ Git Flow → GitLab Flow • Effect of improvements • Challenges
  3. Previous CI / CD・Deployment flows • Hashicorp Nomad on AWS

    ◦ develop, staging, production environments ◦ Difficult to create multiple development environments • Git Flow as branching strategy ◦ Usages are slightly different depending on teams • Jenkins on AWS ◦ Some deployments to production depend on us
  4. Jenkins • Maintenance cost ◦ Update versions, plugins ◦ Add

    machines, scale ◦ Authority management, Security, etc. • Need dedicated members or teams • Not suitable for autonomous deployments
  5. GitHub Actions self-hosted runners • GitHub Actions provides self-hosted runners

    • No additional charge • Compatible both self-hosted and GitHub-hosted runners ◦ Deploy → self-hosted runners ◦ Test → GitHub-hosted runners • No need to maintain the management part of a CI / CD workflow (like a Jenkins master instance)
  6. Git Flow • Works well for projects with fixed release

    timing ◦ Mobile apps(1 release / 1~2 weeks) • Less beneficial for projects API / Frontend projects • More complex branch management, and not suitable for deploying to production frequently ◦ Creating release branches, Hotfix branches, Tags
  7. GitHub Flow Prod env ︖env • Simpler branch management ◦

    master / feature branch • Enable high deployment frequency • Problems with verification environment ◦ master branch = prod environment ◦ staging environment︖ ◦ development environment︖ ︖env
  8. GitLab Flow • feature branch → merge to master branch

    ◦ Same as GitHub Flow • GitLab Flow allows to have branch for a release ◦ master branch → staging env ◦ production branch → production env ◦ Merge to production branch for production release Staging env Prod env
  9. Message(Key takeaways) • Important to improve deployment frequency, especially startups

    • I achieved 10x deployment frequency by 2 improvements ◦ Jenkins → GitHub Actions on AWS ECS ◦ Git Flow → GitLab Flow • Continuous monitoring / improvement