| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- EBS
- Mac Terraform
- EC2
- MFA 분실
- EBS 최적화
- 테라폼 캐시
- /etc/fstab 뜻
- 테라폼 설치
- 텔레메트리란
- Terrafrom
- epxress-generator
- Authenticator
- ebs 재부팅
- /etc/fstab 설정
- 디스크 성능테스트
- 볼륨추가
- 볼륨 연결
- 테라폼 자동완성
- docker 상태
- docker -i -t
- MFA 인증
- 테라폼 맥
- xfs_quota
- 컨테이너 터미널
- AWS
- AWS EBS
- 리눅스
- ebs 마운트
- 컨테이너 터미널 로그아웃
- 리눅스 시간대
- Today
- Total
I got IT
CICD 란 ? 본문
CICD, 혹은 CI/CD 라고 불리는 용어는 Continuous Integration 과 Continuous Deployment의 합성어 입니다.
즉, CI/CD는 지속적 통합/지속적 배포로서 소프트웨어 개발 및 배포 프로세스에서 사용되는 자동화된 방법론입니다.
소프트웨어는 한 번 개발되면 끝나는게 아니라 지속적으로 기능이 보완되고 수정되며 개발 -> 통합 -> 배포의 주기를 반복합니다.
CICD를 이해하기 위해서는 '소프트웨어 개발 생명 주기' 라는 개념에 대해서 먼저 알고 가야 합니다.
소프트웨어 개발 생명 주기 (SDLC)
| SLDC: Software Development Life Cycle
소프트웨어 생애주기는 소프트웨어 개발 과정에서 개발, 유지보수 및 개선을 위해 소프트웨어가 거치는 단계들을 말합니다.
일반적으로 소프트웨어 생애주기는 다음과 같은 단계들로 구성됩니다.
- 요구 분석: 소프트웨어를 개발할 때 필요한 요구사항을 수집하고 분석하는 단계입니다.
- 설계: 요구사항을 바탕으로 소프트웨어의 설계를 수행하는 단계입니다.
- 구현: 설계를 바탕으로 소프트웨어를 개발하는 단계입니다.
- 테스트: 개발된 소프트웨어를 검증하기 위해 테스트를 수행하는 단계입니다.
- 배포: 테스트를 완료하고 검증된 소프트웨어를 사용자에게 배포하는 단계입니다.
- 유지보수: 배포된 소프트웨어를 유지보수하고 개선하는 단계입니다.
각각의 단계는 이전 단계에서 생성된 산출물을 바탕으로 수행되며, 다음 단계로 넘어가기 위해서는 이전 단계의 결과물이 검증되어야 합니다. 이러한 단계별 프로세스는 소프트웨어 개발의 효율성과 품질을 향상시키기 위한 목적으로 사용됩니다. 소프트웨어 생애주기는 이러한 단계를 순차적으로 수행함으로써 소프트웨어의 개발과 유지보수를 보다 체계적이고 효율적으로 수행할 수 있도록 도와줍니다.

실제로 거의 모든 IT 기업의 소프트웨어 상품 개발 및 프로젝트는 모두 위와 같은 단계를 거칩니다.
전공자 혹은 정보처리기사 시험을 응시하신 분들 이라면 반드시 외웠을 거라고 생각합니다.
저도 응시한지는 꽤 됐지만 앞 글자만 따서 '요설구테유' 하면서 외웠던게 기억이 납니다.
소프트웨어 개발 생명 주기는 정처기 시험에 반드시 출제되는 문제유형으로 그 만큼 중요하고 현장에서 알아야 할 지식중에 하나라는 겁니다!
CI/CD 파이프라인
다시 돌아와서 정리해보자면,
CI/CD 는 위와 같은 소프트웨어 개발 생명주기를
끊임 없이(seamless) 하게 '자동화' 하는 방법론을 말하는 것입니다.
그렇다면, CI/CD 파이프라인은 뭘까요? 어렵게 생각할 필요 없습니다.
말 그대로 이러한 CI/CD 방법론을 구현하기 위해 설계된 프로세스를 말하는 것입니다.
필요에 따라 세부적인 프로세스가 다를 수 있지만 일반적인 CI/CD 파이프라인은 다음과 같습니다.
개발 - 빌드 - 테스트 - 배포
각 단계별로 상세 내용은 아래와 같습니다.
개발(코드 관리) 단계
소스 코드를 저장하고 관리하는 VCS (버전 관리 시스템)에서 코드를 가져옵니다. 대부분의 소프트웨어는 다른 개발자, 팀원간 협업으로 이루어 지므로 코드 형상관리 및 브랜치 전략을 위해 VCS 을 사용합니다.
대표적인 Tool 로는 Git이 있습니다.
빌드 단계
소스 코드를 컴파일하고 빌드하여 소프트웨어 패키지를 생성합니다.
조금더 구체적으로 빌드(Build)란 소스 코드 파일들을 실행 가능한 소프트웨어나 라이브러리 형태로 컴파일하는 과정을 말합니다.
대표적인 빌드 도구로는 Apache Maven, Gradle, Ant 등이 있습니다.
테스트 단계
생성된 소프트웨어 패키지를 자동화된 테스트 도구를 사용하여 자동으로 테스트합니다.
테스트 결과를 분석하여 버그 및 문제점을 파악하고, 이를 수정합니다.
대표적인 소프트웨어 테스트 도구는 Junit, Selenium, Jmeter 등이 있습니다.
소프트웨어 테스트 단계에 대한 자세한 내용은 다음 포스팅에 설명하도록 하겠습니다. 🔗
배포 단계
테스트를 통과한 소프트웨어 패키지를 프로덕션 환경에 배포합니다.
인프라 자동화 도구를 사용하여 서버 구성과 같은 배포 관련 작업도 자동화합니다.
대표적인 배포 도구로는 Jenkins, Travis, Terraform, k8s 등이 있습니다.
위와 같은 CI/CD 파이프라인을 자동화 하므로서 코드를 통합하고 빌드하고 테스팅하는 과정에서 소요되는 시간과 노력을 최소화 할 수 있습니다.
따라서 CI/CD 파이프라인을 어떻게 얼마나 잘 구축하느냐가 DevOps의 핵심 요소 중 하나라고 볼 수 있습니다.
'DevOps > CICD' 카테고리의 다른 글
| 소프트웨어 개발 테스트도구 (0) | 2023.05.11 |
|---|