사용 사례
사용 사례 (Use cases)
CloudNativePG는 같은 쿠버네티스 클러스터 안에 있는 애플리케이션과 함께 동작하도록 설계되어, 완전한 클라우드 네이티브 경험을 제공해요.
그런데 실제 운영 환경에서는 데이터베이스는 쿠버네티스 클러스터 안에 둘 수 있는데, 애플리케이션은 컨테이너화하지 못하고 VM 같은 기존 전통 환경에서 돌려야 하는 경우도 생기죠. 이번 페이지에서는 이 두 가지 대표적인 시나리오를 살펴볼게요.
출처: 문서
본문
케이스 1: 애플리케이션을 쿠버네티스 안에 두는 경우
가장 전형적인 상황으로, 애플리케이션과 데이터베이스가 쿠버네티스 클러스터 안의 같은 네임스페이스에서 실행돼요.

보통 무상태(stateless)인 애플리케이션은 표준 Deployment로 관리하고, 여러 레플리카를 서로 다른 쿠버네티스 노드에 분산시킨 뒤 내부적으로는 ClusterIP 서비스를 통해 노출해요.
이 서비스는 Ingress와 클라우드 제공자의 로드 밸런서를 거쳐 HTTPS로 최종 사용자에게 외부 노출됩니다.
애플리케이션은 백엔드 PostgreSQL 데이터베이스를 사용해 상태를 안정적이고 영속적으로 기록해요. 애플리케이션은 CloudNativePG가 정의한 Cluster 리소스가 노출하는 읽기-쓰기 서비스를 참조하는데, 이 서비스는 TLS 연결을 통해 현재 프라이머리 인스턴스를 가리켜요. Cluster 리소스는 단일 프라이머리 + 다중 스탠바이 아키텍처의 로직을 내장해서, Postgres에서 고가용성(HA) 클러스터를 관리하는 복잡성을 숨겨줘요.

케이스 2: 애플리케이션을 쿠버네티스 밖에 두는 경우
또 다른 가능한 사용 사례는 PostgreSQL 데이터베이스는 쿠버네티스 안에서 관리하되, 애플리케이션은 그 밖(예를 들어 가상화 환경)에 두는 거예요. 이 경우 PostgreSQL은 IP 주소(또는 호스트 이름)와 TCP 포트로 표현되는데, 이는 쿠버네티스에 정의된 Ingress 리소스에 해당해요(보통 Service Management 페이지에서 설명한 대로 LoadBalancer 서비스 타입을 써요).
이렇게 해도 애플리케이션은 여전히 PostgreSQL로의 TLS 연결을 활용할 수 있어요.
