App을 개발단계 ~ 배포단계까지 자동화를 통해 더 효율적이고 신속하게 사용자에게 배포할 수 있는 것
DevOps 엔지니어의 핵심 업무
CI 지속적인 통합
App의 새로운 코드 변경이 주기적으로 Build/Test 되면서 공유 리포지토리에 merge되는 것을 의미한다.
다수의 개발자가 형상관리 툴을 공유 및 사용하는 환경
예시) 다수의 개발자들이 하나의 PJT를 진행 중이며, 형상관리 툴(git, svn 등)을 같이 사용하고 있다.
개발자들이 기능 추가 시마다 commit 등을 진행하며 레포지토리에 업데이트를 할 경우, conflict를 피하기 어렵다.(자세한 merge과정은 위 사진 참조)
이렇게 된다면 새로운 기능의 코드를 작성하는 것 보다, conflict를 해결하는데 더 큰 비용이 소요될 수 있다. Not good process
.
자동화된 Build/Test
로 원천 소스코드의 충돌 등을 방어
할 수 있다.
MSA 환경
MSA 환경에서는 대부분 Agile(소규모 기능 단위로 빠르게 개발 & 적용을 반복하는 개발 방법론) 방법론이 적용되기 때문에, 기능 추가가 매우 빈번하다. micro service의 긴밀한 동작 테스트도 중요해진다.
이러한 상황에서 CI는 기능 충돌 방지
등을 제공할 수 있다.
기존 방식
Build/Test - 사람이 함
Conflict해결 - 사람이 함
자동화 방식
Build/Test - PGM이 함!!
Conflict해결 - 사람이 함
목표:
CD는 지속적인 제공
, 지속적인 배포
다.
Delivery는 공유 레포지토리에 자동으로 릴리즈 하는 것,
Deployment는 Production 레벨까지 자동으로 deploy 하는 것.
요약:
CI가 새로운 코드의 Build/Test/Merge 진행
CD는 개발자의 변경 사항이 Repo를 넘어 고객의 Production 환경까지 릴리즈 되는 것.
MSA 같은 환경에서 Agile 방법론 적용 시,
서비스의 사용자는 최대한 빠른 시간 내에 최신 버전의 Production을 제공받을 필요가 있다.
이때, SW가 언제든지 신뢰 가능한 수준의 버전을 유지할 수 있도록 support 하는 것이 CD
다.
서비스의 개발팀과 비즈니스팀(영업, CS팀 등) 간의 커뮤니케이션 부족 문제를 해결해 줌으로써,
배포에 이르기 까지 노력을 최소한으로 단축시켜 준다.
출처: REDHAT
이처럼, DevOps 엔지니어는
CI/CD를 위한 파이프라인을 구성하고, 자동화 단계까지 끌어 올린다.
중간중간 모니터링 지표를 구성하여, 개발자들의 개발 방향을 가이드 해야한다.
결과적으로 고객에게 안정적이고 신뢰성 높은 서비스 production을 제공한다.
고객에게 안정감 있는 서비스를 배포하여 운영하는 일
수시로 종료되는 App에 신뢰성을 갖는 사용자는 없을 것이다. 개인정보에 민감한 서비스일 수록...
안녕하세요 현재 컴공 4학년에 재학중인 대학생입니다. 다름이 아니라 유비씨에서 제공하는 디지털 트윈 부트캠프에 관해 궁금한게 있는데 이메일로 질문 드려도 될까요??