공부/프로그래밍

CI/CD, 서버패턴

demonic_ 2018. 10. 23. 13:15

CI/CD 등장배경: 

소프트웨어가 거대해지고 복잡해지면서 팀 단위로 개발하게 되었고, 그 과정에서 분업과 협업은 필수가 되었는데, 이 분업과 협업의 과정에서 코드의 Merge 과정이 까다롭게 되었고, 테스트하는데 큰 자원이 소비되게 되었다. 이 문제를 해결하기 위해 도입된 방법론이며 개발 - 테스트 -빌드 단계에서 시간을 절약하는 효과를 발휘하게 되었다.



방식: 

CI/CD는 애플리케이션 통합과 딜리버리 단계를 자동화하고 애플리케이션 구성을 표준화한다. 개발자가 새 코드를 체크인하면, CI/CD 파이프라인이 빌드, 테스트, 데이터 마이그레이션, 애플리케이션 배포, 서비스 호출 및 기타 스크립트화된 절차에 따라 대상 환경에서 코드 변경을 실행한다. 팀은 이러한 자동화를 통해 작업 방식을 조정해서 코드를 체크인하고 더 빈번하게 애플리케이션을 통합, 테스트, 제공한다.



기대효과:

- 빠른 개발 및 적용

- 안정적 시스템 운영

- 단위 테스트 및 테스트주도 개발 방법

- 테스트자동화 구축

- 매일 코드변경을 커밋하도록 개발자 독려




#### Snowflackes Server(스노우 플레이크 서버)

눈송이 서버라고 불리며 서로 다른 제각각의 눈결정을 비유한 말이다. 한번 설치한 서버는 계속해서 설정을 변경하고 패치를 적용하는 등 업데이트를 지속적으로 적용, 운영하는데, 이렇게 설정된 서버는 확장시 똑같이 설정하는게 매우 어렵다.

- 담당자가 바뀌는 경우

- 관리 조직이 바뀌는 경우

- 누락된 설정이나 패치등으로 인한 오류

이렇게 한번 설정하고 다시 설정이 불가능한 서버형태를 스노우 플레이크 서버라고 부른다.



#### Phoenix Server(피닉스 서버)

불속에서 다시 태어나는 re-born(재탄생)의 개념으로써 기존 서버에 변경작업을 더하는 것이 아니라 처음 OS 설치부터 소프트웨어 설치, 설정변경 등을 다시 반복하는 것이다. 이러한 작업을 위해 새로운 VM(Virtual Machine)을 만들고 운영체제 및 자바, 톰캣 등을 설치한다음 이 VM으로 기존의 것을 대체하는 형태다.

공통스택은 가상머신의 베이스 이미지(VM Base Image)를 만들어놓고, 이것을 이용해 VM을 생성한 후 차이나는 부분만을 설정한다. 이 과정은 스크립트 코드를 이용해 자동화 하기 때문에 많은 시간을 소요하지 않는다.

문제점)

- 빌드 및 배포시간이 상대적으로 오래 걸린다.

- 배포 당시 기존 환경과 새로 만들어진 환경이 동시에 떠있기 때문에 추가비용 소요될 수 있다.



참조사이트: 

Phoenix (피닉스) 서버 패턴

http://bcho.tistory.com/1224