이기종 환경은 개발자에게 언제나 숙제를 남겨 줍니다. 이는 클라우드 시대에도 마찬가지입니다. 최근 애플리케이션 개발팀은 멀티 클라우드라는 이기종 서비스 환경의 복잡성에 직면해 있습니다. 온 프레미스, 하이브리드, 공용 클라우드 등 다양한 위치를 대상으로 애플리케이션을 개발하고 Snowflake, MongoDB, Redis 등의 서비스를 연계하다 보면 자연스럽게 머릿속이 복잡해집니다. 일단 개발하고 배포하는 것까지 순조롭게 진행이 되어도 기능 개선, 신규 기능 개발, 사용자나 엔드포인트 증가에 따른 성능 확장 등의 작업을 하다 보면 또 다른 복잡성에 직면합니다.
인프라가 아니라 서비스에 집중하기
기업들은 인프라가 아니라 서비스에 집중하기를 바랍니다. 관련해 사내에서 개발한 애플리케이션, 상용 애플리케이션, 클라우드 서비스 등을 쉽고 편하게 연결하는 것을 원합니다. 하지만 앞서 언급한 바와 같이 멀티 클라우드 환경에서 쉽고 빠른 연계는 쉽지 않은 일입니다. 이런 고민을 해결하고자 구글이 Service Directory를 선보였습니다.
Service Directory는 관리형 서비스입니다. 사용자는 환경과 플랫폼에 관계없이 일관성 있고 신뢰성 있는 방식으로 서비스들을 배포, 탐색, 연결할 수 있습니다. 애플리케이션 개발팀은 네트워크 설정, 엔드포인트 정보 등을 일일이 신경 쓰지 않아도 됩니다. Service Directory를 이용하면 서비스 관리와 운영이 간편해집니다.
서비스 인벤토리가 주는 편리함
Service Directory는 일종의 인벤토리입니다. 현재 조직이 사용 중인 서비스 정보를 하나의 디렉토리에 모아 일관된 기준으로 정리해 관리한다고 보면 됩니다. Service Directory에는 서비스 이름, 엔드포인트 이름, IP 주소, 포트 등의 메타 데이터가 저장됩니다. 디렉토리에 저장된 정보는 최신 상태를 유지합니다. 따라서 서비스 배포나 연계, 기능 업데이트를 할 때 각종 에러 발생이나 호환성 이슈 걱정이 적습니다. 서비스 간 연결은 사설 DNS 존, HTTP, gRCP 등을 통해 이루어지며, 서비스와 애플리케이션에 대한 접근 권한 관리를 통해 보안성도 제공합니다.
멀티 클라우드 환경에 적합
Service Directory를 이용하면 개발팀은 현재 이용 중인 멀티 클라우드 환경에서 운영 중인 서비스를 깊이 이해할수 있습니다. 구글 Compute Engine VMs, GKE(Google Kubernetes Engine) 그리고 외부 서비스나 온프레미스에서 운영 중인 워크로드를 한 눈에 바라 볼 수 있게 되는 것입니다. 각 서비스에 대한 메타 데이터를 중앙집중적으로 관리하여 특정 서비스에 연결된 사용자와 애플리케이션의 관련 정보도 손쉽게 파악할 수 있습니다.
Service Directory의 개념과 개발팀이 체감할 수 있는 효과는 소개 영상에 잘 설명되어 있으니, 참조 바랍니다.