본문 바로가기

Android/CI CD

[CI/CD] CI/CD 란 ?

728x90

예전에 스터디를 진행할 목록을 작성한적이 있는데, 그 당시에 CI/CD에 관련한 항목도 공부할 항목으로 작성해 둔 것이 있었다.

 

회사 업무를 진행하면서 있으면 좋았겠다, 편했겠다 라고 생각한 적은 적지 않은 것 같다.

따라서, 추후에 적용 가능성이 보이고 있기 때문에 한발 앞서 먼저 스터디를 해보고자 한다.


우선,

CI와 CD가 무엇인지 한번 알아보자.

 

CI란 ?

Continuous Integration의 약자로 지속적인 통합을 의미한다.

 

지속적인 통합을 위한 프로세스를 CI라고 부를 수 있는데 Build, Test를 진행하는 통합 프로세스를 상시로 실시해 주는것을 의미한다.

 

즉, 위의 통합 프로세스를 지속적으로 수행하여 코드의 품질을 유지시키도록 도와주는 것을 CI라고 한다.

 

그렇다면,

CD는 무엇인가?

Continuous Deployment의 약자로 지속적인 배포를 의미한다.

 

CD는 짧은 주기로 소프트웨어를 개발하는 소프트웨어 공학적 접근의 하나로, 소프트웨어가 언제든지 신뢰 가능한 수준으로 출시될 수 있도록 보증하기 위해 사용한다.

 

즉, 신뢰 가능한 수준에서 자동적인 배포를 도와주는 것이 CD라고 한다.

 

CI : Build와 Test의 자동화
CD : 배포의 자동화

 

간단하게 말해서 CI/CD는 저렇게 표현할 수 있으며, 배포를 하기 위해서는 Build와 Test가 우선되어야 하기 때문에 CD를 위해서는 CI가 반드시 선행되어야 한다.


CI/CD를 스터디하고 적용하기 앞서,

CI/CD는 꼭 필요한건가?

라는 의문을 갖을 수 있다.

 

결과부터 말하자면, CI/CD는 없어도 상관 없다.

CI/CD가 없다면, 개발자가 수동으로 하면 되기 때문이다.

 

CI에서 진행되어야할 빌드와 테스트, CD에서 진행되어야할 배포는 이미 개발자가 하고있다.

그것을 다양한 이점을 얻기 위해서 자동화 프로세스를 도입하는 것이기 때문에, 소규모 회사나 개발에 담당하는 인원이 많지 않다면 불필요한 작업이 될 수 있다.

 

하지만, 확실히 없는 것 보다는 있는 것이 더 좋다고 느껴진다.

CI/CD를 적용하였을 때의 장점을 생각해보자.

 

  • Human Error가 줄일 수 있다.
  • 빌드 후 배포까지의 시간을 단축시킬 수 있다.
  • 빌드 파일이 필요할 때 개별적으로 요청을 하지 않아도 된다.
  • 인원이 많아질수록 생기기 쉬운 코드의 Conflict을 줄일 수 있다.
  • 설정에 따라 다양한 기능을 추가할 수 있다.

 

위의 장점들을 제외하고도 다양한 장점들이 있지만, 작성한 5개의 이유만으로도 사용해야 할 이유는 확실한 것 같다.

(휴먼 에러도 그렇지만, QA파트에게 빌드 파일을 자동으로 넘겨줄 수 있다면 얼마나 편할까 싶다.)


위와 같은 이유로 CI/CD를 사용하는 것이 좋다고 생각이 되어 스터디를 진행하는데,

CD의 자동 배포의 경우, 서버가 필요하는 등 추가적인 환경이 구축되어야 효과를 볼 수 있는 것들이 많으므로

필자는 우선 CI에 대한것들 부터 스터디를 할 예정이다.

 

CI를 사용할 수 있는 툴들은 상당히 많은데, 그 툴들의 특성에 대해 정리해 보았다.

 

  • Bitrise
    • 제한적이지만 무료로 사용할 수 있다.
    • 서버가 필요하지 않다.
    • 모바일 플랫폼에 특화되어 있음.
  • Jenkins
    • 무료.
    • 서버 구축이 필요함.
    • 많이 사용되고 있어 레퍼런스가 많음.
  • Github Actions
    • Public 저장소의 경우 무료, 매 달 제한이 있지만 결제할 정도로 부족하지 않음.
    • 서버가 필요하지 않다.
    • Github 기반이기 때문에 Github 사용 시 더욱 더 편리함.
    • 타 Tool에 비해서 러닝 커브가 낮음
  • FastLane
    • 무료.
    • IOS에서도 많이 사용하고 있는 툴이다
    • 서버가 필요하지 않다.
    • GUI를 제공하지 않는다.
  • Bitbucket pipeline
    • 무료로 사용은 가능하나 확실히 제한적이며, 유료의 경우 가격대가 높다
    • 서버가 필요하지 않다.
    • Bitbucket 기반이기 때문에 Bitbucket 사용 시 더욱 더 편리함.

 

간단하게 각 툴에 대하여 정리를 해보았는데,

서버가 필요한 Jenkins를 스터디 하기에는 무리가 있을것 같으니 러닝 커브가 낮은 Github Actions 부터 사용해 볼 수 있는 것들을 시간이 나는대로 차례대로 적용하여 볼 생각이다.

 

728x90