본문 바로가기

infra

좌충우돌 스타트업의 CI/CD 적용기 1탄

좌충우돌 스타트업의 CI/CD 적용기 1탄

시대가 변하면 개발 문화도 변한다.

 내가 다녔던 전 회사는 ERP솔루션 업체로 waterfall 모형으로 개발을 했었는데 개발팀과 운영팀이 분업화 되어 있었다

운영팀이 현업의 요구사항을 받았고 개발팀과 일정 기간동안 요구사항을 개발서버에 테스트 적용해보고 version을 올려서 모두가 사용하지 않는 시간에 운영server를 일시적으로 중지하고 대규모로  배포 했었다.


 Waterfall 모형으로 개발되는 프로젝트는 확실히 분리된 업무와 체계적인 개발과정을 거치고 정형화된 문서가 기록에 남지만 현업에서 요구한 요구사항을 통합적으로 처리하기  때문에 서비스 변화에 대한 대응이 느리고 운영 과정에서 발생하는 피드백의 빠른 반영이 힘들었다.


 ERP 개발에서도 불확실한 요구사항을 반영하는데 시간이 걸리면서 현업자들과 마찰이 생기는데 하물며 브라우저를 통해서 직접 유저들의 요구사항을 빠르게 제공해야하는 서비스들은 어떻겠는가?


 이런 waterfall 모델의 단점을 효과적으로 대응하기 위해서 나온 모델이 agile 모델이다 agile은 현업과 개발 운영이 유기적으로 협업하고 환경을 최대한 공유하며 waterfall 보다 기간을 짧게 두어서 지속적으로 요구사항 개발과 배포를 하는 방법론이다. 시대가 발전하면서 이런 agile을 적용하게 해줄 수 있는 효과적인 SW 제품들이 많이 나왔고 우리는 이제 이런 agile 을 효과적으로 사용하기만 하면 되게 되었다.


 

 

Waterfall

 

Agile


·       폭포수 처럼 개발에서 각 단계가 순차적으로 진행됨

·       체계화된 문서작성이 병행된다.

·       실제 프로젝트는 완성단계에서 확인하고 테스트 할 수 있다.

·       개발 진행과정에서 목표를 정확히 알아야 하고 시간과 돈이 상대적으로 많이 소요됨


·       일정한 주기로 데모버전을 출시

·       과정도 중요하지만 상대적으로 서로의 협력을 중시

·       프로젝트 중간에 필요한 요구사항을 반영할 수 있음

·       초기 버그를 잡고 테스트 할 수 있음











Waterfall vs Agile model


Agile 모델 프로젝트 관리

처음에 Agile 모델을 사용하려면 무턱대고 접근하기 보단 agile 프로젝트를 사용해본 프로젝트 관리자와 함께 참여해야 적절하게 사용할 수 있다.

 나는 Overnodes에 와서 프로젝트 리더에게 Atlassian 제품 jirabacklog active sprint를 활용하는 방법을 배웠고 Cross Functional  Team ( 프론트엔드 백엔드 단위로 개발단위를 나누지 않고 product / feature 별로 나누어서 프로젝트를 개발하는 팀 ) 을 구성하여 릴리즈( 일정한 주기로 출시될 데모버전 ) 버전을 관리하였다.

 



 Agile 모델을 효과적으로 사용하게 해주는 Jira


이제는 DevOps 시대  

 요즘은 모바일 환경의 웹서비스가 많이 생성되고 많은 회사들이 모바일 서비스 시장의 성격을 맞추고  있다. 때문에 개발환경도 시장의 성격을 따라서 점점 변화해야 적절한 서비스를 만들 수 있다.

 

·       고객 경험 향상으로 빠른 대처와 대응이 필요

·       신속한 해결 시간이 가치가 됨

·       비즈니스 아이디어가 빠르게 적용될 수록 환산되는 가치가 높아지는 시대

최근 모바일 환경의 시장 특징

 

변화하는 시장의 성격을 따라가기 위해서 agile 모델에서 DevOps 개념이 등장하는데  DevOps개발과 ( develop ) 운영이 ( operation )  통합된 개념으로 서로 분리되어 있을 때 소비되는 시간과 비용을 감소시키고 서로간의 갈등을 개선하기위한 방법론이다.


DevOps는 개발과 운영이 합쳐졌기 때문에 하루에도 두세번 배포가 가능하다

따라서 모바일 환경 웹서비스 시장에 대응하기 적합하고 초기에 생성되는 비즈니스 모델에 빠르게 적용할 수 있다.


 물론 개발과 운영이 합쳐졌기 때문에 개발팀은 서비스에 대해 정확하게 알고있어야 하고 프로젝트 매니저와 지속적으로 목표와 지표에 대한 회의가 필요하며 프로젝트에 대한 책임감이 기존보다 커야 한다.

 

그렇다면 Agile 방법론으로 구성된 프로젝트에 DevOps 를 어떻게 적용할 것인가?

 DevOpsCI/CD 로 구축할 수 있는데 여기서 CI ( continuous integration ) 지속적인 통합으로

 여러 작은 단위의 릴리즈 버전 task를 통합하고 빌드를 자동화 하여 오류와 테스트를 처리하는 방법이다.


그리고 CD ( continuous delivery / deployment ) 지속적인 배포로 CI에서 빌드된 애플리케이션을 배포 자동화하는 방법이다.

 CI/CDpipeline으로 묶어서 빌드와 배포를 자동화 하여 빠르게 테스트 과정을 거쳐서 배포할 수 있다.


1탄에서는 기본적인 CI/CD 의 개념에 대해서 알아봤고 2탄에서 본격적으로 스타트업의 CI/CD 구성에 대해서 알아보겠다.