아래 강의에서 필요하거나 핵심적인 내용만 정리하였습니다.
https://inf.run/wAfB2
- 범위: 색션 0: 쿠버네티스 이슈 ~ 마이크로서비스 성공 사례-1
클라우드 네이티브란?
- 클라우드의 장점을 최대한 활용하여 정보 시스템을 구축 및 실행하는 환경
- 클라우드 네이티브 기술, 애플리케이션, 아키텍처, 개발 방법론, 조직, 프로세스 등 다양한 용어와 결합하여 다양한 의미로 사용
- 쿠버네티스는 클라우드 네이티브 구성요소를 완전히 수행할 수 있는 플렛폼
- 조직이 퍼블릭, 프라이빗 그리고 하이브리드 클라우드와 같은 현대적이고 동적인 환경에서 확장 가능한 애플리케이션을 개발하고 실행할 수 있게 해줌
기존 애플리케이션 vs 클라우드 네이티브 애플리케이션
1. 기존 애플리케이션
- 모놀리식 구조 -> 여러 서비스 단위(회원가입, 장바구니, 결제, 등등)가 하나의 소스코드로 개발되어 있는 형태
- 크고 조밀한 결합
- 물리서버, VM 중심 환경
- 수직 확장 방식 사용 (Scale-up)
- 인프라 의존적
- 폭포수(Waterfall) 개발 방법 사용
- 수작업 배포로 인한 긴 시간 소요
- 단절된 개발, 운영, 보안팀
2. 클라우드 네이티브 애플리케이션
- 마이크로서비스 구조 -> 여러 서비스 단위별로 각각의 컨테이너에 올라가 각 컨테이너가 느슨하게 결합되어 전체 서비스가 동작하는 형태
- 느슨한 결합, 서비스 기반 구조
- 가상 컨테이너 환경
- 수평 확장 방식 사용 (Scale-out)
- 인프라 독립적이고 이식성이 보장됨
- 애자일(Agile) 개발 방법 사용
- CI/CD 자동화, 짧은 시간 & 지속적 배포
- DevOps 협업
모놀로식 서비스 아키텍처의 단점
- 하나의 애플리케이션에 여러 서비스가 존재하기 때문에 인기 있는 특정 서비스로 인해 부하가 발생하여 Scale-out 하면 인기 없는 서비스까지 확장된다.
- 종속적인 라이브러리 충돌이 잦음
- 약간의 수정에도 전체 애플리케이션을 빌드 및 배포해야 함
마이크로서비스 아키텍처의 장점
- 각각의 기능을 하나의 서비스 단위로 구분하여 개발하기 때문에 개발자가
- 특정 비즈니스 로직에 대해서 집중하여 개발이 가능하여 빠른 개발이 가능
- 서비스 단위로 개발, 패키징, 빌드, 테스트, 배포로 각 서비스마다 유연한 스케줄링 가
- 서비스 단위로 스케일 아웃이 가능 (고효율 저비용 Scale-out 구조)
- 장애를 하나의 모듈에만 고립시켜 전체 서비스에는 영향을 미치지 않음
- 전체 애플리케이션이 아닌 서비스 단위로 Scale-in/out을 하기 때문에 스케일 시간이 단축됨
-> 하지만 분산 시스템 환경에서 트랜젝션 보장, 테스트, 배포, 관리가 복잡해지는 문제가 있음 -> Kubernetes 의 필요성 대
'k8s' 카테고리의 다른 글
DevOps를 위한 쿠버네티스 마스터 강의 정리(2) (0) | 2024.03.12 |
---|---|
kubectl attach 와 kubectl exec 차이점 분석 (0) | 2023.02.06 |
[Helm 작성하기 (1)] Helm 차트 구조 (0) | 2023.02.03 |
쿠버네티스 완벽 가이드 2장 : 쿠버네티스 특징 간단히 알아보기 (1) | 2023.02.02 |
쿠버네티스 완벽 가이드 1장 : Docker (0) | 2023.01.19 |