구성(형상; configuration)은 의존성 때문에 소프트웨어 시스템에 큰 영향을 미치기 때문에 구성 관리(형상 관리)는 CI/CD에 중요한 측면
이를 체계적으로 관리하고 자동화할 수 있는 여러 종류의 도구가 만들어지고 이용되어 왔음
Infrastructure(소프트웨어가 의도된 목적을 활용하기 위하여 이용하는 환경 구성)를 생성, 변경 관리
버전 관리, 재사용, 공유 등에 유리
프로그래밍에서와 유사하게 코드를 이용하여 인프라 리소스를 정의하고 조합하는 형태로 관리
Hashicorp 사에서 제공하는 IaC 도구
# homegrew에 package를 저장
brew tap hashicorp/tap
# terraform 설치
brew install hashicorp/tap/terraform
# terraform version 업데이트
brew update
# download and use latest terraform
brew upgrade hashicorp/tap/terraform
Docker : 응용을 컨테이너화하여 독립적이고 통일된 환경에서 실행할 수 있도록 함
Kubernetes : 컨테이너화된 응용을 효과적이고 안정적으로 운용
Terraform : 응용이 실행될 인프라 리소스 구성과 의존 관계를 코드로 관리
Jenkins : 빌드, 테스트, 배포, 관리 등의 작업을 자동화하여 CI/CD 파이프라인 실행
성능 테스트
내구성 테스트
보안 테스트
유지보수 테스트
복구 테스트
프로덕션을 새로운 소프트웨어 버전으로 업데이트할 때의 위험도를 낮추기 위한 전략
시스템 구성 인프라 내의 자원 상태와 활용도 등을 지속적으로 검사
잠재적 위험 요소를 조기 발견하고 대응책을 수립
빌드의 성공/실패, 자원 활용의 변화 등에 대하여 자동 알림을 설정