MicroServices Application에서의 마이크로서비스란 애플리케이션을 독립적인 여러 개의 서비스로 분리하여 개발하고 배포하는 것이다.
프론트엔드/백엔드/인메모리캐시/데이터베이스 등...의 서비스로 나누어서 특정 기능을 수행한다.
마이크로서비스 애플리케이션을 설계하는 것이 중요한 이유는 각 서비스가 독립적으로 움직이기 때문에 배포 및 확장, 유지보수를 편하게 할 수 있다.
각 서비스는 서로 다른 프로그래밍 언어나 데이터베이스를 사용할 수 있다! 왜??? → 독립적으로 움직이기 때문에 한 서비스가 잠깐 고장나도 전체 시스템에 엄청난 영향을 주지 않기 때문이다.
넷플릭스나 아마존과 같은 회사들도 수많은 마이크로서비스를 통해 플랫폼의 기능을 독립적으로 관리하고 있다.
[마이크로서비스 애플리케이션의 구조 예시]
1. 사용자는 강아지와 고양이를 선택할 수 있는 화면을 보게 된다.
2. 사용자가 강아지를 선택했을 경우, 이 데이터를 메모리에 저장하는 인메모리 데이터베이스에 저장한다.
3. 실제 투표 작업은 응용 프로그램에서 진행된다.
4. 투표 작업 결과를 데이터베이스에 업데이트한다.
5. 사용자는 모든 작업이 끝난 후 투표 결과 화면을 보게 된다.
그렇다면 쿠버네티스에서는 어떻게 마이크로서비스 애플리케이션을 배포해야 할까??
쿠버네티스에서의 마이크로서비스 배포 최종 목표는 3가지이다.
1. 컨테이너 배포
2. 쿠버네티스 클러스터의 컨테이너로 배포
3. 컨테이너 간 연결을 활성화하여 서로 액세스할 수 있도록 함
이제 차례대로
쿠버네티스 배포 순서
1. Pod 배포
쿠버네티스는 직접 컨테이너를 배포하는 것이 아니기 때문에 가장 먼저 Pod로 배포해야 한다.
그리고 어떤 서비스끼리 연결해야 하는지에 대한 계획을 잘 세워야 한다!
2. 내부에서의 접근을 위한 서비스 생성하기
다른 서비스에 접근하는 방법은 IP를 사용할 수 있다.
근데 문제점!!! 포트가 재시작되면 포트의 IP가 바뀌어버릴 수도 있다.,,
이러한 문제를 해결하기 위해 서비스를 생성한다.
데이터베이스의 경우, 클러스터 외부에서 액세스할 수 없기 때문에 ClusterIP 유형이어야 한다.
3. 외부에서의 접근을 위한 서비스 생성하기
외부 액세스를 위한 서비스는 NodePort이다.
사용자가 직접 pod에 접근하는 pod는 투표 진행 화면과 투표 결과 화면이다.
* 투표 처리 작업 Pod에는 왜 서비스가 필요 없을까??
→ 다른 프로그램이나 외부 사용자가 액세스해야 할 기능이 실행되지 않기 때문이다.
결국 서비스는 응용 프로그램이 어떤 프로세스나 데이터베이스 서비스 혹은 웹 서비스를 갖고 있을 때만 요구되는 것을 파악할 수 있다.
4. 생성한 pod와 service를 Deployment로 배포하기
사실 단일 pod로 배포를 하는 것은... 일반적이지 않다. 관리가 굉장히 어려워짐!
그래서 제일 이상적인 접근법은 Deployment를 이용하는 것이다.
자동으로 복제본 세트를 생성하고, 업데이트와 롤백을 수행할 수 있기 때문이다.
강아지 vs 고양이 투표 웹 애플리케이션 yaml 파일 작성 실습 코드
https://github.com/iamwooinge/exam-kubernetes/tree/main/voting-app
exam-kubernetes/voting-app at main · iamwooinge/exam-kubernetes
Contribute to iamwooinge/exam-kubernetes development by creating an account on GitHub.
github.com
'쿠버네티스' 카테고리의 다른 글
쿠버네티스 - EKS 클러스터 생성 및 배포 실습 (0) | 2024.11.20 |
---|---|
쿠버네티스 - GKE 클러스터 생성 및 배포 실습 (0) | 2024.11.20 |
Kubernetes Services 2 - ClusterIP, Load Balancer (0) | 2024.11.14 |
Kubernetes Services 1 - NodePort (0) | 2024.11.14 |
쿠버네티스의 네트워킹 기본 개념 (0) | 2024.11.14 |