들어가며
개인 프로젝트가 얼마 남지 않아서 다른분들의 README를 구경하고 있는데 아키텍쳐에 다른건 어떤 이유로 이런 기술 스택을 사용했다 라는 것을 직관적으로 알 수 있었는데 CI/CD에 AWS를 다들 넣어뒀길래 뭔가했다... 나만 몰랐던건가?
CI/CD란
먼저, CI는 Continuous Integration 지속적 통합의 줄임말이고 CD는 Continuous Deployment의 줄임말로, 이는 소프트웨어 개발 과정에서 중요한 역할을 하는 두 가지 개념을 의미한다.
CI
지속적 통합 (Continuous Integration) : 개발자들이 자신들이 개발한 코드를 일정 시간 간격으로 병합하는 과정을 가르키는데 이렇게 하는 이유는 각 개발자들이 독립적으로 개발한 코드 사이에 충돌이 발생할 가능성을 미리 발견하고, 이를 해결하기 위함이라고 한다. 이 과정에서 코드가 병합될 때마다 자동화된 테스트가 실행되므로, 코드의 품질을 유지하는 데 큰 도움이 된다. 즉, 지속적 통합은 코드의 품질을 유지하고, 개발 과정에서의 오류를 사전에 찾아내는 역할을 수행해준다.
CD
지속적 배포 (Continuous Deployment) : 지속적 배포는 개발이 완료된 소프트웨어를 사용자가 실제로 사용할 수 있는 환경에 바로 배포하는 과정이다. 이 과정은 주로 자동화 도구를 통해 이루어지며, 이를 통해 새로운 기능이나 수정사항을 실시간으로 사용자에게 제공할 수 있게 된다. 따라서 사용자는 항상 최신 버전의 소프트웨어를 사용할 수 있게 된다.
CI/CD를 사용하는 이유는?
- 코드 품질 개선 : CI/CD는 코드 변경사항을 자주 테스트하고 통합함으로써 코드 품질을 개선한다. 이는 버그를 빠르게 찾아 수정하고, 문제 해결 시간을 단축시키며, 최종적으로 더 안정적인 소프트웨어를 제공하는 데 도움이 된다.
- 배포 시간 단축 : CI/CD는 자동화된 배포 프로세스를 통해 소프트웨어의 배포 시간을 크게 단축시켜준다. 이로 인해 개발자들은 소프트웨어의 새로운 버전을 빠르게 고객에게 제공할 수 있게 된다.
- 빠른 피드백 사이클 : CI/CD는 새로운 코드 변경사항을 빠르게 프로덕션 환경에 반영함으로써 빠른 피드백 사이클을 제공한다. 이를 통해 개발자들은 고객의 반응을 빠르게 파악하고, 이에 따라 제품을 지속적으로 개선할 수 있게 된다.
- 효율적인 리소스 관리 : CI/CD는 개발, 테스트, 배포 등의 과정을 자동화함으로써 개발자들이 더 복잡하거나 중요한 작업에 집중할 수 있게 해준다. 이는 전체적인 개발 효율성을 향상시키는 데 기여해준다.
이러한 지속적 통합과 지속적 배포 과정은 소프트웨어 개발의 효율성과 품질을 높이는 데 굉장히 중요한 역할을 해준다. 또한 이 두 과정은 DevOps 문화, 즉 개발과 운영이 긴밀하게 협력하여 더 나은 제품을 만들어내는 문화의 핵심 요소 중 하나이다. 따라서 현대의 소프트웨어 개발 팀에서는 이러한 CI/CD 과정을 통해 제품의 품질을 향상시키고, 개발 및 배포 과정의 효율성을 높여준다.
정리
CI는 코드의 통합과 테스트 단계에 중점을 두는 반면, CD는 이러한 변경사항을 실제 사용자에게 빠르게 전달하는 것에 초점을 맞추고 있다.
이 두 개념은 모두 자동화와 효율성 향상에 대한 중요성을 강조하며, 둘 다 품질 높은 소프트웨어를 빠르게 제공하기 위해선 선택이 아닌 필수적이다. 결론은 이 두 개념 모두 현대의 소프트웨어 개발 방식에서 분리할 수 없는 핵심 요소라고 볼 수 있다.
눈에 익은 개념이었는데 특별하게 찾아볼 생각을 하지 않았던 것 같은데 슬슬 발등에 불이 떨어져서 그간 궁금했던... 무심코 지나갔던 개념들에 대해서 꼼꼼하게 알아가고 있다. 늘 그랬지만 갈 길이 멀다.
'Knowledge > CS & HTTP' 카테고리의 다른 글
RESTful API가 뭔데요 (0) | 2024.01.05 |
---|---|
쿠키와 세션 (0) | 2023.12.27 |
인터넷 통신이란? (1) | 2023.12.18 |
배열(Array) (0) | 2023.12.16 |
Stack과 Queue (0) | 2023.12.15 |
쓰임 있는 사람이 되기 위해 노력 중입니다.