콘텐츠로 이동하기
컨테이너 및 Kubernetes

Google Kubernetes Engine(GKE) 개발자 가이드

2020년 12월 22일
https://storage.googleapis.com/gweb-cloudblog-publish/images/Google_Cloud_x_GKE.max-2600x2600.jpg
Drew Bradstock

Senior Director, GKE Product Management, Google Cloud

GCP 사용해 보기

$300의 무료 크레딧과 20개 이상의 항상 무료인 제품으로 Google Cloud 사용을 시작해보세요.

무료 체험

  * 본 아티클의 원문은 2020년 11월 18일 Google Cloud 블로그(영문)에 게재되었습니다. 

Kubernetes와 같은 컨테이너 관리 플랫폼을 배포 환경으로 구축할지를 고민할 때 리소스 효율성 향상, 확장성 증가, 향상된 복원력, 보안 등의 운영상의 이점을 보고 결정하는 경우가 많습니다. 하지만 Kubernetes는 기업의 소프트웨어 개발 측면에도 큰 도움이 됩니다. 코드 이식성 개선, 생산성 향상을 막론하고 Kubernetes가 지닌 이점은 운영자뿐 아니라 개발자에게도 도움이 됩니다.

우선, 클라우드 기반으로 재설계: 규모에 맞춘 개발자 생산성 향상을 위한 혁신적인 접근 방식에서 살펴본 바와 같이 Kubernetes에서는 마이크로서비스와 같은 최신 클라우드 기반 소프트웨어 개발 패턴을 보다 쉽게 도입할 수 있어 다음과 같은 이점을 누릴 수 있습니다.

  • 개발자 생산성 향상 - 팀 규모가 커지더라도 생산성을 높일 수 있습니다. 
  • TTM(time to market) 단축 - 새로운 기능 추가 및 결함 수정이 보다 신속하게 이루어집니다. 
  • 가용성 향상 - 소프트웨어 업타임을 높이고 배포 실패율을 낮추며 이슈 발생 시 복원 시간을 단축합니다. 
  • 보안 강화 - 애플리케이션에서 공격에 취약한 부분을 줄이고 공격 및 새롭게 발견된 취약점을 보다 쉽게 감지하고 재빠르게 대응할 수 있도록 합니다.
  • 확장성 향상 - 클라우드 기반 플랫폼 및 애플리케이션으로 필요에 따라 손쉽게 수평 확장 또는 축소가 가능합니다. 
  • 비용 절감 - 능률적인 소프트웨어 제공 프로세스로 새로운 기능 제공 비용이 절감되고 효과적인 클라우드 플랫폼 사용으로 서비스 운영 비용 역시 크게 절감됩니다. 

Google이 개발한 Kubernetes를 Google Cloud에서는 완전 관리형 서비스인 Google Kubernetes Engine(GKE)으로 제공하고 있습니다. 뿐만 아니라 Google Cloud에서는 GKE와 긴밀하게 통합되고 완전하게 갖춰진 개발자 도구도 제공하고 있다는 사실을 알고 계신가요? 오늘은 KubeCon 개최를 축하하는 의미로 GKE 전용 애플리케이션을 개발하여 안전하고 효율적으로 배포하는 방법, 프로덕션 단계의 애플리케이션을 모니터링 및 디버깅하는 방법을 소개하는 몇 가지 블로그 게시물을 되짚어 보려고 합니다. 

개발자의 손끝에서 시작되는 GKE 기반 개발

아무리 큰 규모의 엔터프라이즈급 애플리케이션이라 하더라도 그 태생은 개발자의 노트북입니다. GKE에서 실행되는 애플리케이션도 마찬가지입니다. 이러한 개발 작업을 위해 로컬 개발 환경을 GKE와 통합하는 데 사용할 수 있는 다양한 도구가 마련되어 있습니다. 

  • 개발자가 많은 컴퓨팅 리소스로 노트북 사양을 높이는 것은 잘 알려진 사실입니다. 가령 Minikube를 사용하면 GPU를 활용할 수 있습니다. 또한 JibSkaffold처럼 Java 앱 컨테이너화를 도와주는 로컬 개발 도구도 있습니다. Jib는 Docker를 설치할 필요 없이 Java 앱을 컨테이너화하고 Docker 데몬을 실행하거나 Dockerfile을 작성하는 데에도 도움이 되며 Maven 또는 Gradle의 플러그인 형태로 사용 가능합니다. 그런 다음 Skaffold를 사용하면 변경사항이 감지될 때 이러한 컨테이너화된 Java 앱을 Kubernetes 클러스터에 배포할 수 있습니다. Skaffold에서는 새로운 버전의 파일을 실행 중인 컨테이너에 삽입하는 것도 가능합니다. 이 내용은 로컬 노트북에서 보다 간편한 Kubernetes 개발 환경 누리기에 보다 자세히 설명되어 있습니다.
  • GKE 개발자 사이에 인기가 높은 또 다른 도구로는 Cloud Code가 있습니다. 이 도구는 널리 사용되는 Visual Studio 및 IntelliJ 통합 개발 환경(IDE)용 플러그인을 제공하여 GKE 기반 개발을 간소화합니다. 예를 들어 최근에도 Cloud Code 업데이트를 통해 Kubernetes YAML 및 커스텀 리소스 정의(CRD) 지원을 대폭 강화했습니다. 자세한 내용은 수백 개에 달하는 인기 Kubernetes CRD의 YAML 작업을 간편하게 만드는 Cloud Code를 참조하세요. 
  • 속성으로 처리해야 하는 개발 작업이 있다면 Cloud Shell 편집기를 사용해 보세요. 이 편집기는 브라우저에서 모든 기능을 갖춘 독립 실행형의 컨테이너 개발 환경을 실행합니다. 자세한 내용은 새로운 Cloud Shell 편집기: 몇 분 안에 첫 클라우드 기반 앱 실행하기를 참조하세요. 

파이프라인 만들기

궁극적으로 노트북에서 개발한 앱을 프로덕션 단계로 푸시할 준비를 마치게 됩니다. 하지만 그에 앞서 코드의 테스트가 제대로 수행되었고 필수 보안 및 규정 준수 테스트를 통과하는지 확인하고 싶을 것입니다. Google Cloud의 다양한 도구를 활용하면 이 파이프라인을 통해 코드를 푸시하는 데 도움을 받을 수 있습니다. 

GKE 앱 원격 개발을 위한 모니터링, 디버깅, 반복 과정

앱이 GKE 클러스터에서 프로덕션 단계에 있다면 모든 작업이 마무리된 것일까요? 아닙니다. 개발자에게 앱 프로덕션은 소프트웨어 수명 주기의 시작점일 뿐입니다. 개발자는 앱을 개선할 방법을 고민하기 마련이고 이를 위해 문제점을 알리는 조짐이 있는지 모니터링하게 됩니다. GKE는 GKE 앱의 상태를 확인하는 데 도움이 되는 여러 모니터링, 디버깅, 성능 관리 도구와 긴밀히 통합되어 있으므로 앱 개선이 간편하게 이루어집니다.

개발자의 입장에서 생각하는 Google

Google은 Cloud Native Computing Foundation(CNCF) 및 Open Container Initiative(OCI)와 같은 오픈소스 커뮤니티의 일원으로 오랜 기간 활동해 온 만큼 업계 변화가 일상적인 GKE 개발자의 업무에 미치는 영향을 항상 예의 주시하고 있습니다. 일례로 최근 Docker에서 pull 요청의 새로운 한도를 발표했을 때 Google은 곧이어 이러한 제한사항을 GKE 환경에서 관리하는 방법에 관한 게시물을 올리기도 했습니다. Google은 GKE를 최고의 확장성을 자랑하는 강력한 컨테이너 관리 플랫폼이면서 사용과 개발이 가장 간편한 환경으로 만들기 위해 최선을 다하고 있습니다. Kubernetes와 GKE가 아직 생소하다면 이 무료 실습형 교육에서 자세히 알아보세요. 또한 이번 주에 열리는 KubeCon에 참여할 계획이 있다면 Google의 (가상) 부스에 들러 전문가 상담을 받아보시기 바랍니다.
게시 위치