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

10x deployment frequency using GitLab Flow and ...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

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

English version of this slide
https://speakerdeck.com/tadashi0713/depuroipin-du-wo10bei-nisita-burantizhan-lue-togithub-actions-on-aws-ecs

#githubactions #devops #awsecs #cicd #gitlabflow

Avatar for Tadashi Nemoto

Tadashi Nemoto

May 10, 2021
Tweet

More Decks by Tadashi Nemoto

Other Decks in Technology

Transcript

  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