참고
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 사용
•
Jenkins와 k8s 사이의 IaC인 Ansible을 통해 서버에 인프라스트럭쳐 관리를 스크립트 형태로 관리한다.
CI/CD의 이해
NOTE
CI의 개념
•
작은 단위로 자주통합할 수 있게해줌으로서 개발 생산성을 증가시킨다.
CD 개념
•
CD는 CI에서 빌드된 애플리케이션을 지속적으로 배포하는 과정
•
CD(잦은 패키징)와 CD(잦은 자동배포)와 혼용되어 사용되어 구분하기 힘들다.
CI +CD의 혼합
CI/CD 도구
중단/무중단 배포
NOTE
중단 배포
•
정기점검 페이지를 걸고 서비스 중단 기간 중 어플리케이션 교체
•
데이터베이스 점검 등 대규모 배포 / 점검 활동에 주로 활용한다. (잦은 배포에 활용되기에는 무리)
•
개발서버등 중단 시간이 큰 영향을 끼치지 않는 경우에도 활용한다.
무중단 배포
블루 그린 배포
롤링 업데이트 배포
카나리 배포
브랜치 전략
NOTE