DevKim

[ Webtooniverse ] 프로젝트에 CI/CD 를 도입하고자하는 이유 본문

Spring Project/Webtooniverse

[ Webtooniverse ] 프로젝트에 CI/CD 를 도입하고자하는 이유

on_doing 2021. 8. 10. 11:32
728x90

프로젝트에 CI/CD를 적용해보고 싶다는 생각을 계속 해왔었다. 

하지만 어떤 기술을 도입할 땐, why에 대한 대답을 할 수 있어야한다고 생각한다.

현재 프로젝트의 개발 프로세스의 문제점에 대해서 생각해보고,

CI/CD를 도입함으로써 얻을 수 있는 이점에 대해 생각해보자.

1. CI란 무엇일까?

- CI는 Continuous Integration 즉, 지속적인 통합을 의미한다. 

어플리케이션의 새로운 코드 변경 사항이 자동으로 테스트 및 빌드되어 공유 레포지토리에 통합할 수 있다.

 

2. 현재 개발 프로세스의 문제점

CI가 적용되지 않은 현재 프로젝트에서 많은 불편함을 느꼈다.

현재, 팀원들은 기능별 feature에서 개발한 후 develop 브랜치에 push하고 pull하고 각자의 test 코드를 돌려서 되는지 확인하고, 한명이 수동으로 빌드한 후 수동으로 배포하는.. 그런 개발 프로세스를 가지고 있다.

 

우리 팀에서도 당연히 형상관리 툴(Git)을 사용하여 개발을 하기 때문에, 기능 추가 시마다 commit을 날려 repository에 버전 업데이트를 하고있다. 이 과정에서 수 많은 commit들이 쌓이게되고, 그럴 때마다 기능별로 빌드/테스트/merge까지 하려면 상당히 번거로운 상황이다.

 

3. CI를 도입함으로서 얻을 수 있는 이점

CI 환경은 다양한 수준의 테스트 자동화를 제공할 수 있다.

더이상 팀이 충돌하는 새로운 코드 세그먼트를 수동으로 해결하거나 빌드를 트리거하거나 테스트를 실행하는 데 더이상 시간을 낭비하지 않아도된다. 또한 빌드 주기가 빨라져 배포 및 프로덕션이 능률화될 수 있을 것으로 예상된다.

 

4. 다양한 CI 툴

4-1. Jenkins 젠킨스

- 커뮤니티가 활발하게 이루어져있다. 개인적으로 커뮤니티가 활발할 때, 삽질하는 시간이 줄어들 수 있다..

- 사용 가능한 많은 플러그인이 있다. Slack,Github, Docker..등을 포함하여 많은 플러그인이 있다.

- 가장 널리 사용되고 많이 사용되는 무료 도구이다. 즉 안정성이 보장된다고 생각할 수 있을 것 같다.

- 별도의 서버가 필요하므로 서버의 비용이 발생할 수 있다. 학생의 입장(=나)에선 조금 부담스러울 수 있다.

 

4-2. Travis 트레비스

- 설치용 도구가 아니므로, 서버가 따로 필요없다.

- 가볍지만 이전에 사용해봤을 때, 1시간 정도를 기다린 적이 있어서.. 속도 측면에서 많이 떨어진다고 생각한다.

 

4-3. Github Actions

- Github 저장소를 기반으로 Workflow를 자동화할 수 있다. 즉 Github에서 직접 제공하는 CI/CD 툴로, 따로 별도의 분리된 툴을 사용하지 않아도된다.

- 젠킨스에 비해 자료가 없다.

 

5. CD란 무엇일까?

- CD는 Continuous Delivery 혹은 Continuous Depolyment 두 용어 모두의 축약어이다.
해석하자면, 지속적인 서비스 제공 혹은 지속적인 배포 라는 의미이다.

즉, CD는 코드 변경 사항이 레포지토리를 넘어, 고객의 프로덕션 환경까지 릴리즈되는 것을 의미한다.

 

6. 현재 개발 프로세스의 문제점

현재 MSA 환경에서 개발을 하고있기 때문에 기능 추가가 매우 빈번하게 발생하고있는데,

이때, 서비스의 사용자는 최대한 빠른 시간 내에 최신 버전의 프로덕션을 제공받을 필요가있다고 생각한다.

 

현재 프로젝트에서는 매번 진행중인 프로세스를 수동으로 중지하고, 수동으로 build 파일을 삭제/업로드하고 인스턴스에 접속하여 jar 파일을 실행시키고 있다.

프론트 개발자분들이 추가로 response 데이터를 요청하거나, 기능을 추가해야할 때에 매번 이 과정을 한명이 맡아서 진행하고 있다. 이는 매우 비효율적이며 배포에 이르기까지 쓸데없는 시간 낭비가 이루어지고 있는 상황이다. 

 

7. CD를 도입함으로써 얻을 수 있는 이점

- 배포에 이르기까지 노력을 최소한으로 단축시켜준다.

- 매주,매일 심지어 매시간 변경 사항을 프로덕션에 제공할 수 있다.

- 새로운 기능 출시가 더욱 빨라질 수 있다.

 

 

이 정도면 CI/CD를 도입 할 이유는 충분한 것 같다. 이젠 삽질의 시간이다! 삽질하면서 더 많은 것을 얻어갈 수 있기를.! 

728x90
Comments