CI/CD란?

ansunny1170·2022년 6월 23일
0

단순참조

목록 보기
15/26

참조: 개발자 김모씨의 성장 일기 - CI/CD란 무엇인가 (Feat. DevOps 엔지니어)

# CI/CD란?


App을 개발단계 ~ 배포단계까지 자동화를 통해 더 효율적이고 신속하게 사용자에게 배포할 수 있는 것
DevOps 엔지니어의 핵심 업무

## CI(Continuous Integration)


CI 지속적인 통합
App의 새로운 코드 변경이 주기적으로 Build/Test 되면서 공유 리포지토리에 merge되는 것을 의미한다.

CI가 필요한 환경은 아래와 같다.

  1. 다수의 개발자가 형상관리 툴을 공유 및 사용하는 환경
    예시) 다수의 개발자들이 하나의 PJT를 진행 중이며, 형상관리 툴(git, svn 등)을 같이 사용하고 있다.

    개발자들이 기능 추가 시마다 commit 등을 진행하며 레포지토리에 업데이트를 할 경우, conflict를 피하기 어렵다.(자세한 merge과정은 위 사진 참조)

    이렇게 된다면 새로운 기능의 코드를 작성하는 것 보다, conflict를 해결하는데 더 큰 비용이 소요될 수 있다. Not good process.

    자동화된 Build/Test원천 소스코드의 충돌 등을 방어할 수 있다.

  2. MSA 환경
    MSA 환경에서는 대부분 Agile(소규모 기능 단위로 빠르게 개발 & 적용을 반복하는 개발 방법론) 방법론이 적용되기 때문에, 기능 추가가 매우 빈번하다. micro service의 긴밀한 동작 테스트도 중요해진다.

    이러한 상황에서 CI는 기능 충돌 방지등을 제공할 수 있다.

기존 방식
Build/Test - 사람이 함
Conflict해결 - 사람이 함

자동화 방식
Build/Test - PGM이 함!!
Conflict해결 - 사람이 함

목표:

  • 신속한 버그 확인/해결
  • SW 품질 향상
  • 새로운 업데이트의 검증 및 릴리즈 시간 단축

## CD(Continuous Delivery & Deployment)

CD는 지속적인 제공, 지속적인 배포다.

Delivery는 공유 레포지토리에 자동으로 릴리즈 하는 것,
Deployment는 Production 레벨까지 자동으로 deploy 하는 것.

요약:
CI가 새로운 코드의 Build/Test/Merge 진행
CD는 개발자의 변경 사항이 Repo를 넘어 고객의 Production 환경까지 릴리즈 되는 것.

MSA 같은 환경에서 Agile 방법론 적용 시,
서비스의 사용자는 최대한 빠른 시간 내에 최신 버전의 Production을 제공받을 필요가 있다.

이때, SW가 언제든지 신뢰 가능한 수준의 버전을 유지할 수 있도록 support 하는 것이 CD다.

서비스의 개발팀과 비즈니스팀(영업, CS팀 등) 간의 커뮤니케이션 부족 문제를 해결해 줌으로써,
배포에 이르기 까지 노력을 최소한으로 단축시켜 준다.

# DevOps 엔지니어의 역할



출처: REDHAT

이처럼, DevOps 엔지니어는
CI/CD를 위한 파이프라인을 구성하고, 자동화 단계까지 끌어 올린다.
중간중간 모니터링 지표를 구성하여, 개발자들의 개발 방향을 가이드 해야한다.

결과적으로 고객에게 안정적이고 신뢰성 높은 서비스 production을 제공한다.

고객에게 안정감 있는 서비스를 배포하여 운영하는 일

수시로 종료되는 App에 신뢰성을 갖는 사용자는 없을 것이다. 개인정보에 민감한 서비스일 수록...

profile
공정 설비 개발/연구원에서 웹 서비스 개발자로 경력 이전하였습니다. Node.js 백엔드 기반 풀스택 개발자를 목표로 하고 있습니다.

1개의 댓글

comment-user-thumbnail
2022년 7월 6일

안녕하세요 현재 컴공 4학년에 재학중인 대학생입니다. 다름이 아니라 유비씨에서 제공하는 디지털 트윈 부트캠프에 관해 궁금한게 있는데 이메일로 질문 드려도 될까요??

답글 달기