안드로이드 앱 개발의 CI/CD Overview

안드로이드 앱 개발의 CI/CD Overview

이전 포스팅(CI/CD, DvOps의 이해)에서 소프트웨어 분야의 CI/CD, DevOps 에 대해 간략히 알아봤다.

이번 포스팅에서는 회사 기술 블로그등을 통해 최근 안드로이드 분야의 CI/CD 가 어떻게 구성되어 있는지 확인해보고 이후 포스팅에서 각각의 기술을 좀 더 상세히 학습해보려고 한다.

그럼 시작하자.

사전 조사

우선 이전 라인의 안드로이드 CI&Unit Test 포스팅 에서 알게된 키워드를 위주로 다른 회사들의 사례를 찾아봤다. 그 결과 아래의 참고 자료들을 찾을 수 있었다.

기술 블로그

유튜브 영상

우선 이정도만 찾기로 하고 환경 설정에 관한 자료는 이후 포스팅에서 참고 하겠다.

자료 요약

각각의 자료는 개별 포스트에 정리하고 요약한 내용을 이 포스팅에 작성하겠다.

선례 조사 전략

먼저 안드로이드 개발 팀이 CI/CD 를 적용하기 위해 어떤 툴을 사용하는지 파악하기 위해서, 개발팀의 회고록을 보며 다음과 같은 내용들을 파악했다.

  • 어떤 기술을 옵션으로 뒀는지

  • 각 팀이 선택한 툴은 무엇이고 선택의 근거가 무엇인지

  • 환경 설정에 관한 내용이 있다면, 난이도는 어떤지

이렇게 자료를 리뷰 후에 조사한 안드로이드 개발 팀들은 크게 Jenkins, GitHub Actions 를 옵션으로 고려하고 각각의 상황에 맞게 툴을 선택했다는 것을 알 수 있었다.

각각의 선택이 나뉘는데는 Jenkins 와 GitHub Actions 의 특성이 다르다는 것을 이해할 필요가 있어보였다. 그래서 각각의 특성을 아래 표로 정리해봤다.

GitHub Actions vs Jenkins

항목GitHub ActionsJenkins
개요GitHub 리포지토리와 통합된 CI/CD 도구오픈 소스 자동화 서버
설치 및 설정GitHub 리포지토리에 내장, 별도 설치 불필요독립형 서버로 설치 필요, 다양한 플러그인 설정 가능
플랫폼 지원클라우드 기반자체 호스팅, 클라우드 및 온프레미스 지원
유연성GitHub 리포지토리와 긴밀한 통합다양한 플러그인으로 높은 유연성 제공
사용 편의성GitHub 사용자에게 직관적이고 쉬운 설정설정 복잡도는 다소 높지만, 커스터마이징 가능
확장성GitHub Marketplace를 통해 확장 가능수천 개의 플러그인으로 기능 확장 가능
파이프라인 정의YAML 파일로 파이프라인 정의Jenkinsfile로 파이프라인 정의
커뮤니티 및 지원GitHub 커뮤니티와 지원 포럼대규모 커뮤니티와 다양한 지원 채널
비용GitHub의 프리티어 및 유료 플랜오픈 소스(무료), 추가적인 플러그인 및 서버 비용 발생
보안GitHub의 보안 기능 및 GitHub Actions 보안 정책Jenkins 자체 보안 설정 필요, 다양한 플러그인 보안 설정
통합GitHub의 모든 서비스와 네이티브 통합타사 서비스와 광범위한 통합 가능
빌드 속도GitHub의 클라우드 인프라로 신속한 빌드인프라 설정에 따라 다름, 최적화 필요

가장 큰 차이점은 GitHub Actions 가 GitHub 이 제공하는 유료 서비스인 반면 Jenkins 는 오픈소스이기 때문에 추가 비용 지출에 대한 측면을 고려하지 않을 수 없다는 것이었다.

나는 학습을 위해 조사를 하고 있는 것이기 때문에 각각의 차이에 대해 가볍게 짚은 채로 이후 포스팅에서 각각의 환경을 구현하고 사용해보는 포스팅을 작성하겠다.


제목에 / 를 사용하면 앞뒤 단어가 소문자로 강제 전환되는 버그가 있다.