CI/CD 등장배경:
소프트웨어가 거대해지고 복잡해지면서 팀 단위로 개발하게 되었고, 그 과정에서 분업과 협업은 필수가 되었는데, 이 분업과 협업의 과정에서 코드의 Merge 과정이 까다롭게 되었고, 테스트하는데 큰 자원이 소비되게 되었다. 이 문제를 해결하기 위해 도입된 방법론이며 개발 - 테스트 -빌드 단계에서 시간을 절약하는 효과를 발휘하게 되었다.
방식:
CI/CD는 애플리케이션 통합과 딜리버리 단계를 자동화하고 애플리케이션 구성을 표준화한다. 개발자가 새 코드를 체크인하면, CI/CD 파이프라인이 빌드, 테스트, 데이터 마이그레이션, 애플리케이션 배포, 서비스 호출 및 기타 스크립트화된 절차에 따라 대상 환경에서 코드 변경을 실행한다. 팀은 이러한 자동화를 통해 작업 방식을 조정해서 코드를 체크인하고 더 빈번하게 애플리케이션을 통합, 테스트, 제공한다.
기대효과:
- 빠른 개발 및 적용
- 안정적 시스템 운영
- 단위 테스트 및 테스트주도 개발 방법
- 테스트자동화 구축
- 매일 코드변경을 커밋하도록 개발자 독려
#### Snowflackes Server(스노우 플레이크 서버)
눈송이 서버라고 불리며 서로 다른 제각각의 눈결정을 비유한 말이다. 한번 설치한 서버는 계속해서 설정을 변경하고 패치를 적용하는 등 업데이트를 지속적으로 적용, 운영하는데, 이렇게 설정된 서버는 확장시 똑같이 설정하는게 매우 어렵다.
- 담당자가 바뀌는 경우
- 관리 조직이 바뀌는 경우
- 누락된 설정이나 패치등으로 인한 오류
이렇게 한번 설정하고 다시 설정이 불가능한 서버형태를 스노우 플레이크 서버라고 부른다.
#### Phoenix Server(피닉스 서버)
불속에서 다시 태어나는 re-born(재탄생)의 개념으로써 기존 서버에 변경작업을 더하는 것이 아니라 처음 OS 설치부터 소프트웨어 설치, 설정변경 등을 다시 반복하는 것이다. 이러한 작업을 위해 새로운 VM(Virtual Machine)을 만들고 운영체제 및 자바, 톰캣 등을 설치한다음 이 VM으로 기존의 것을 대체하는 형태다.
공통스택은 가상머신의 베이스 이미지(VM Base Image)를 만들어놓고, 이것을 이용해 VM을 생성한 후 차이나는 부분만을 설정한다. 이 과정은 스크립트 코드를 이용해 자동화 하기 때문에 많은 시간을 소요하지 않는다.
문제점)
- 빌드 및 배포시간이 상대적으로 오래 걸린다.
- 배포 당시 기존 환경과 새로 만들어진 환경이 동시에 떠있기 때문에 추가비용 소요될 수 있다.
참조사이트:
Phoenix (피닉스) 서버 패턴
'공부 > 프로그래밍' 카테고리의 다른 글
[docker] MariaDB replication(master-slave) 설정 (2) | 2018.10.25 |
---|---|
[docker] MariaDB + 로컬에 데이터저장소 연결 (0) | 2018.10.24 |
[linux-centos7] VNC Server 설치하기 (0) | 2018.10.20 |
[linux-centos7] 디스크 마운트(mount) (0) | 2018.10.20 |
[linux-centos7] gitlab 사용 중 8080 포트사용하는 경우(unicorn 서비스) (0) | 2018.10.19 |
댓글