GKE를 이용 중인가요? GKE 환경에서 어떤 데이터베이스를 쓰고 있나요?
이 두 질문에 대한 답을 이번 게시글에서 알아보겠습니다.
결론부터 말하자면 ‘비즈니스와 IT 조직 구성에 맞는 데이터베이스’를 고르면 된다는 것입니다. 구글 클라우드는 GKE 이용 기업이 비즈니스와 IT 조직 구성에 맞게 데이터베이스를 이용할 수 있는 선택지를 제공합니다. 본 포스팅에서는 개발 인력 비중이 높은 IT 조직 구성을 갖춘 기업으로 범위를 좁혀 선택지를 Cloud SQL과 Cloud Spanner 같은 관리형 데이터베이스로 좁혀 보겠습니다.
👀 애플리케이션 유형 살피기
본론에 들어가기에 앞서 데이터베이스 선택에 필요한 사전 지식을 하나 짚어 보겠습니다. GKE에서 실행할 수 있는 작업 유형은 다양하며, 여기에는 무상태와 유상태 애플리케이션을 포함됩니다. 데이터베이스는 애플리케이션 유형에 따라 최선의 선택이 달라질 수 있습니다. 따라서 데이터베이스 선택에 앞서 무상태(stateless)와 유상태(stateful) 애플리케이션의 차이와 관계형 및 비관계형 데이터베이스 간의 차이점을 알아야 합니다.
무상태 애플리케이션은 이전 요청의 정보를 기억하지 않으며 각 요청은 독립적으로 처리됩니다. 무상태는 일반적으로 수평 확장이 용이하며, 부하 분산을 통해 여러 인스턴스에서 요청을 처리할 수 있습니다. 유상태 애플리케이션은 이전 요청의 정보나 상태를 기억하며, 이 상태가 후속 요청에 영향을 줄 수 있습니다. 상태 관리는 애플리케이션의 복잡성을 증가시킬 수 있으며, 확장성과 관리에 추가적인 고려가 필요합니다.
관계형 데이터베이스의 경우 데이터는 테이블과 행, 열로 구조화되며, 관계를 통해 연결됩니다. 그리고 정의된 스키마에 따라 데이터 형식이 엄격하게 유지됩니다. 비관계형 데이터베이스는 테이블, 행, 열의 제한 없이 데이터를 저장할 수 있으며, 문서, 그래프, 키-값 쌍 등 다양한 형태를 가질 수 있습니다. 미리 정의된 스키마 없이 데이터를 저장할 수 있어 유연성이 높습니다.
이제 구글 클라우드 플랫폼에서 데이터베이스를 실행하는 옵션을 살펴보겠습니다. GKE 환경에서 데이터베이스를 운영하는 방식은 크게 직접 데이터베이스를 컨테이너 환경에 구축하는 것과 구글 클라우드가 제공하는 완전 관리형 데이터베이스 서비스를 이용하는 것으로 나누어 볼 수 있습니다. IT 조직에 데이터베이스 전담 팀이나 인력이 있다면 직접 구축을 고려할 수 있습니다. 반면에 인프라, 네트워크, 데이터베이스 등 세부적으로 전담 인력 기반이 없이 개발자 위주로 조직을 꾸려 서비스를 개발하고 있다면 완전 관리형 서비스가 현실적이라 할 수 있습니다.
본 포스팅은 디지털 기반 서비스를 제공하고 있으며 IT 인력이 개발자 위주로 구성된 조직을 위한 데이터베이스 선택 기준을 알아보는 것으로 선택지를 좁혀 설명하겠습니다.
👍 완전 관리형 데이터베이스 서비스
완전 관리형 서비스를 이용하면 데이터베이스를 생성하고 앱을 만들기만 하면 따로 신경 쓸 것이 없습니다. 구글 클라우드가 설치, 업그레이드, 저장 및 백업 및 스케일링과 같은 유지 관리 작업을 맡아서 처리합니다. 완전 관리형 서비스를 선택하면 데이터베이스 서버를 배포하고 확장하는 것이 매우 간편합니다. 구글 클라우드는 다음 그림과 같이 여러 데이터베이스 옵션을 제공하는데요. 직접 데이터베이스를 구축해 GKE 환경에 배포한 애플리케이션과 연결해 쓰는 방법부터 컨테이너에 데이터베이스를 올려 연계하는 것, 완전 관리형 서비스를 이용하는 것 중 원하는 방식을 고를 수 있습니다.
무엇을 선택할 것인지는 우리 조직에서 데이터베이스를 전담 관리할 여력이 있는지? 서비스 개발과 배포의 민첩성과 효율이 중요한가? 등 여러 가지를 고려해야 합니다. 만약 데이터베이스 유지보수를 직접할 여력이 없고 DevOps 파이프라인을 중심으로 서비스 개발과 배포의 민첩성과 효율성 확보가 중요하다면 Cloud SQL과 Cloud Spanner는 훌륭한 선택이라 할 수 있습니다.
GKE 클러스터 외부에서 완전 관리형 데이터베이스 서버를 사용하면 애플리케이션을 보다 고가용성으로 만들 수 있으며 여러 클러스터 간에 앱을 분산하는 등 복잡한 데이터베이스 구성과 운영 시나리오를 가능하게 할 수 있습니다. Cloud SQL과 Spanner 모두 고가용성, 확장성 및 성능을 갖춘 완전 관리형 서비스입니다. 그럼 어떤 데이터베이스가 조직의 요구에 더 잘 맞는지 어떻게 알 수 있을까요?
📌구체적인 사례로 알아보기
두 개의 가상 사례를 소개해 보겠습니다. 먼저 소개할 가상 사례는 전자상거래 기업인 A사 시나리오입니다. 이 회사는 GKE를 사용하여 전자성거래 서비스를 제공한다고 가정하겠습니다. A사는 수천 개의 데이터베이스를 자체 데이터 센터에서 구글 클라우드로 마이그레이션하고 GKE에서 쉽게 데이터베이스에 연결하길 원합니다. 개발자들은 PostgreSQL에 익숙하므로 A사는 이 시스템과 호환되는 관리형 데이터베이스를 선호합니다.
다른 사례는 게임 회사인 B사의 유즈 케이스입니다. B사는 GKE를 사용하여 게임을 만드는 회사라고 가정하겠습니다. B사는 새로운 게임의 출시를 앞두고 있습니다. 신규 게임이 공개되면 몇 달 동안 전 세계 플레이어 기반의 큰 증가를 예상됩니다. 이런 이유로 B사는 대량의 데이터를 극도로 낮은 지연 시간으로 처리할 수 있는 데이터베이스를 찾습니다.
A사와 B사에게 맞는 선택지는 다릅니다. Cloud SQL은 A사와 같은 활용 시나리오에 좋은 선택입니다. PostgreSQL을 포함한 특정 데이터베이스 엔진을 위한 완전 관리형 환경을 제공합니다. 고가용성과 성능을 요구하지만 단일 지역을 넘어 확장할 필요가 없는 조직에게 더 비용 효율적인 선택입니다. 반면에 B사 케이스의 경우는 Cloud Spanner가 적합합니다. 성공적인 게임 출시를 위해 대량의 데이터를 처리할 수 있는 전 세계적으로 분산된 관계형 데이터베이스가 필요합니다. Spanner는 고정된 크기 제한이 없으므로 사업이 성장함에 따라 성장할 수 있습니다.
A사와 B사의 사례를 통해 Cloud SQL과 Spanner의 예에서 이들이 어떻게 다른 비즈니스 요구 사항을 충족시킬 수 있는지 볼 수 있습니다. Spanner는 관계형 데이터베이스의 이점과 비관계형 데이터베이스에서 일반적으로 기대할 수 있는 수평 확장성을 가지고 있습니다. 게임, 소매 은행, 결제 솔루션 등 대규모 글로벌 애플리케이션에 가장 적합하며, 여기서 무제한 확장성과 강력한 일관성이 필요합니다. Cloud SQL은 일반 웹 프레임워크, 전자상거래 앱 등과 같은 작은 규모의 데이터베이스 요구 사항에 더 적합합니다.
어떤 플랫폼을 선택하든, 두 데이터베이스 옵션 모두 GKE와 쉽게 통합할 수 있습니다. 먼저 데이터베이스 인스턴스를 설정하고 데이터베이스를 생성합니다. 그런 다음 GKE가 선택한 데이터베이스에 연결하는 데 사용할 서비스 계정을 설정합니다. GKE 클러스터에서 애플리케이션을 배포하면, 데이터베이스 인스턴스에 연결됩니다. 구글 클라우드에서 완전 관리형 데이터베이스를 사용하면 데이터베이스를 프로비저닝하고 유지 관리하는 프로세스를 단순화하고, 애플리케이션을 구축하는 데 집중할 수 있도록 리소스를 해방합니다.
GKE 애플리케이션을 Cloud SQL 또는 Cloud Spanner에 연결하는 방법에 대한 자세한 단계는 구글의 관련 문서를 참조하거나 메가존소프트에 문의 바랍니다. 👉 메가존소프트 문의 바로가기