Search
Duplicate
📒

[Jenkins] 01-1. Devops와 CI/CD의 이해

상태
완료
수업
Jenkins
주제
기본개념
4 more properties
참고

Cloud Native Application의 구성요소

NOTE
Cloud Native Architecture에 의해서 설계되고 구현되는 어플리케이션
1.
Microservices
마이크로서비스로 개발된다.
2.
Containers
어플리케이션을 구성하고 있는 마이크로서비스들을 클라우드 환경에 배포하고, 사용하기 위해서 컨테이너 가상화 기술이 표준처럼 사용된다.
3.
DevOps
서비스에 문제가 생기거나 사용자의 니즈를 바로바로 수정하고 반영하고 다시 배포하기 위해서 개발과 운영조직간의 유기적인 협력을 통해 지속적인 서비스 개선 방법
4.
CI/CD
마이크로서비스들을 CI/CD 자동화 파이프라인을 통해서 자동으로 통합, 빌드, 테스트, 배포과정을 통해 운영상태가 된다.

MSA

NOTE
그냥 이런 구조가 있다.. (걍 그림만보셈)

Containerization

NOTE
위쪽의 MSA로 개발된 결과물은 컨테이너 기반에서 실행되는 경우가 많다
수 많은 마이크로서비스 어플리케이션이 가상화 방식이 아니라 실제 서버를 통해 가동되면 리소스의 낭비뿐만 아니라, 많은 비용을 발생시킬 수 있기때문.

컨테이너 가상화 장점!

기존의 물리적인 서버를 운영하는 것처럼 사용되는 서버 가상화에 비해서 적은 리소스를 사용
공유할 수 있는 부분에 대해서는 각각의 컨테이너 가상화 인스턴스들이 레이어로 구분되어 있는 상태로 공유되어, 최소한의 리소스를 통해서 애플리케이션, 미들웨어, 운영체제를 구동할 수 있게된다.

DevOps

NOTE
Cloud Native Architecture에 의해서 설계되고 구현되는 어플리케이션
대충 서비스 빌드, 배포, 테스트를 자동화 시켜준다.

CI/CD

NOTE
개발자 및 팀에 의해서 개발된 결과물을 지속적인 통합과 지속적인 배포를 하는 프로세스
CI(Continous Integration)
작업된 코드의 컴파일, 테스트, 패키징하는 작업
CD(Continous Delivery, Continous Deployment)
CI에 의해 패키징된 작업물을 다시 개발, 테스트, 운영, 서버로 배포하는 작업

전체적인 CI/CD Flow

강의 최종 결과물 이미지
CI → Jenkins 사용
Jenkins를 통해서 빌드하고 배포한다.
빌드된 결과물을 운영서버에 배포한다
운영하려는 서버는 컨테이너 가상화로 운영되기때문에 Docker 사용
Dokcer 컨테이너들의 배포 관리, 시스템 관리를 위해 k8s 사용
Jenkinsk8s 사이의 IaC인 Ansible을 통해 서버에 인프라스트럭쳐 관리를 스크립트 형태로 관리한다.

CI/CD의 이해

NOTE
CI의 개념
작은 단위로 자주통합할 수 있게해줌으로서 개발 생산성을 증가시킨다.
CD 개념
CD는 CI에서 빌드된 애플리케이션을 지속적으로 배포하는 과정
CD(잦은 패키징)와 CD(잦은 자동배포)와 혼용되어 사용되어 구분하기 힘들다.
CI +CD의 혼합
CI/CD 도구

중단/무중단 배포

NOTE
중단 배포
정기점검 페이지를 걸고 서비스 중단 기간 중 어플리케이션 교체
데이터베이스 점검 등 대규모 배포 / 점검 활동에 주로 활용한다. (잦은 배포에 활용되기에는 무리)
개발서버등 중단 시간이 큰 영향을 끼치지 않는 경우에도 활용한다.
무중단 배포
블루 그린 배포
롤링 업데이트 배포
카나리 배포

브랜치 전략

NOTE