쿠버네티스 진입, 첫발은 '개발자 경험'부터

컴퓨팅입력 :2022/07/22 10:00

쿠버네티스는 애플리케이션 배포 및 관리를 자동화할 수 있도록 지원하는 혁신 기술로 빠르게 성장하고 있다. 반면, 빠른 확산 속도에 비해 일반 기업에서 회사 전체 IT운영 플랫폼으로 자리잡는데 어려움을 겪는다. 쿠버네티스를 활용해 실제 애플리케이션을 만들어내는 개발자의 진입장벽이 높은 탓이다. 많은 기업이 쿠버네티스를 도입하고도 개발자의 폭넓은 활용에 실패하는데, 그 원인으로 개발자 경험(DevEx)의 부족이 꼽힌다.

클라우드 네이티브 애플리케이션 패러다임을 많은 기업에서 채택하면서 클라우드 네이티브 생태계는 갈수록 복잡해졌다. 쿠버네티스 기반 애플리케이션 개발에 개발자의 학습량은 점점 더 늘어난다. 개발자 경험의 위기다.

지난 3월 포레스터리서치에서 발간한 개발자 경험 향상(Elevating The Developer Experience) 보고서는 개발자 경험과 비즈니스 가치 측정 기준 및 결과 간의 연관성을 분석했다. 대기업의 IT/엔지니어링 리더 및 LOB 리더를 포함한 651명의 응답자를 대상으로 실시한 온라인 설문 조사 결과, 개발자 경험을 우선시하고 투자하는 조직은 경쟁력과 수익성을 개선할 수 있는 상당한 IT 및 비즈니스 이점을 실현할 수 있다는 점을 시사했다.

응답자의 94%가 자사 기업에 개발자 경험 전략을 가지고 있다고 답했지만, 4명 중 1명만 이 접근 방식이 성숙하고 가치를 제공한다고 믿는 것으로 나타났다. 대다수 응답자는 개발자 경험의 필요성을 인식하고 있으며 셀프 서비스 포털, 개발자 교육, 협업 커뮤니케이션 툴/플랫폼 등의 노력으로개발자 경험을 개선하겠다는 의지를 보였다.

개발자가 쿠버네티스에서 실행되는 응용 프로그램을 개발하려면 익숙하지 않은 IT 운영자 관점의 개념과 아티팩트, 사례를 숙지해야 한다. 쉽게 말해 개발자에게 쿠버네티스는 매우 낯선 영역이며, 익히기 어려운 기술이다.

VM웨어코리아 신혜원 탄주솔루션 엔지니어링팀 상무는 “쿠버네티스 환경의 배포 방식은 기존과  다르고, 개발자가 작성해야 할 이미지와 YAML 파일 등 고려해야 할 요소들이 많아진다”며 “개발자가 개발 이외에 신경써야 할 부분이 많아졌다는 점이 쿠버네티스를 사용하기 어렵게 만든다”고 설명했다.

최악의 경우 개발자 혼자 거대한 운영 부담까지 짊어져야 한다. 개발자가 쿠버네티스에 익숙해지기까지 많은 시간이 필요하다. 그 과정에서 개발자는 좌절하기 쉬우며, 필요한 도구를 다 갖춘 이후에도 애플리케이션 혁신보다 배포된 환경을 관리하기 위한 YAML 편집에 얽메이게 된다는 것을 깨닫게 된다.

한구레드햇 김종규 솔루션아키텍트(상무)는 “쿠버네티스로 처음 사용하는 사람은 자신의 애플리케이션을 컨테이너화하는 것부터 알아야 하고, 기존의 IP로 접근하던 영역을 모두 서비스명으로 접근해야 하며, 기존에 설정파일로 빼 두었던 XML을 모두 패러미터화해 구성정보에서 설정 가능하도록 해야 하는데 이러한 부분을 놓쳐서 어려움이 많이 있을 수 있다”고 설명했다.

YAML은 쿠버네티스에서 사용되는 리소스를 표현하는 언어다. YAML이란 언어 자체가 어렵지 않지만, 쿠버네티스를 잘 이해하고 있어야 YAML 파일을 쉽게 작성할 수 있다.

김종규 상무는 “YAML의 형식은 단순한 키벨류 혹은 리스트의 형식이므로 기존의 properties 나 xml, json 등으로 이뤄진 선언적인 것을 YAML 형식으로 선언하는으 것이기에 그 자체가 어려운 건 아니다”라며 “단,  YAML을 구성하기 위해서 필요한 사양을 이해하기어려울 수 있고, 쿠버네티스의 오브젝트마다 요구하는 필드가 다르고 의미하는 것이 다르기 때문에 이에 대한 사양을 이해하기 어려울 수 있다”고 말했다.

탄주 애플리케이션 플랫폼 프로세스와 개발 루프

코딩, 테스트, 디버깅, 반복 등의 순으로 이뤄지는 개발 프로세스 전반에서 개발자는 코드를 빠르게 반복할 수 있어야 한다. 이 반복 과정을 ‘이너 루프(inner loop)’라고 한다. 개발자는 개발 시간의 대부분을 이너 루프에서 작업하는 데 소비하기 때문에 이 이너 루프 사이클이 빠르기를 원한다.

이너 루프 과정은 쿠버네티스 개발에서 더 길어진다. 개발자는 소스 코드를 변경할 때마다 코드를 재구축해야 하고, 코드 변경 테스트 전에 컨테이너 이미지를 재구축 및 재게시해야 하며, 쿠버네티스 리소스를 재배치해야 한다. 이는 개발자 생산성을 크게 떨어뜨린다.

디버깅은 쿠버네티스 기반 환경에서 데브옵스 생산성을 떨어뜨리는 대표적 구간이다.

VM웨어코리아 신혜원 상무는 “쿠버네티스에서 애플리케이션 구동 시 발생한 이슈는 앱을 구동하는 POD 로그를 확인하는 것으로 디버깅하게 된다”며 “쿠베렛(kubelet), API 서버 등 쿠버네티스 자체에 발생한 이슈에 대한 해결은 쿠버네티스에 익숙하지 않은 개발자는 디버깅을 수행하기 어렵다”고 말했다.

쿠버네티스는 POD 단위로 움직인다. POD 디버깅은 그 상태를 살펴보는 것으로 출발한다. 펜딩, 대기, 손상,  비정상, 실행 등 상태에 따라 디버깅을 한다. 리소스가 부족하지 않은지, 이미지 이름은 정확한지, 이미지가 존재해 있는지를 파악하고 애플리케이션이 동작하지 않으면 해당 컨테이너가 어떤 오류를 내는지 로그를 보는 것도 중요하다. 직접 컨테이너에 어떤 명령을 내려서 디버깅 할 수도 있다. 이런 작업이 개발자의 개발 흐름을 턱턱 막히게 한다.

개발자 품귀가 전세계 공통 현상인 가운데 많은 기업의 관심사는 자사 개발자에게 뛰어난 개발자 경험을 제공하는 것이다. VM웨어가 400명 이상의 엔터프라이즈 기술 임원을 대상으로 실시한 회계연도 2023 1분기 임원 설문 조사에서 응답자의 약 90%가 ‘긍정적인 수익 측정 기준을 애플리케이션 구현과 연계했으며, 응답자의 절반은 기업의 매출을 높이는 데 가장 큰 잠재력을 가지는 것이 개발자 경험’이라고 답했다. 올해 실시된 2022 쿠버네티스 실태 조사 결과에서도 많은 응답자가 쿠버네티스의 문제점을 사용성(usability)이라고 답했고, 이는 개발자에게 더 심각한 문제로 여겨지는 것으로 조사됐다. 쿠버네티스 전문가의 부족 현상도 여기서 이어진다.

기업의 쿠버네티스 도입은 여러 문제점을 가졌음에도 휴대성, 통합 및 확장성, 비용 효율성 등 많은 이점으로 인해 계속 증가하고 있다. 올해로 탄생 8주년인 쿠버네티스는 초기 단계의 틈새 기술을 넘어 보편적인 기술로 자리잡고 있다. 특히 클라우드 네이티브 인프라 환경에서 쿠버네티스의 입지는 견고하다. 이에 따라 기업들은 쿠버네티스를 사용하면서도 자사가 보유하고 있는 개발자들의 개발자 경험을 향상시키기 위해 다양한 노력을 기울이고 있다.

좋은 개발자 경험은 복잡한 문제를 해결한다. 사이버 보안, 쿠버네티스, 멀티 클라우드, 오픈 소스 소프트웨어와 같은 핵심 엔터프라이즈 고려 사항은 소프트웨어 개발 도구 및 프로세스와 함께 엔터프라이즈 아키텍처에 혁신적인 영향을 미친다. 마찰은 이 복잡성의 부작용이다. 포레스터리서치 조사에서 응답자 5명 중 3명은 엔터프라이즈 아키텍처의 복잡성이 더 나은 개발자 경험을 제공하도록 동기를 부여한다는 데 동의했다.

그 방안 중 하나가 바로 클라우드 플랫폼/매니지드 서비스다. 클라우드 네이티브 컴퓨팅 파운데이션(CNCF)이 지난 2월 발표한 ‘CNCF 연간 서베이 2021’에 따르면 많은 기업이 쿠버네티스 배포판을 직접 설치하고 관리하며 사용하는 대신, 검증된 클라우드 플랫폼 서비스를 사용하고 있다. 쿠버네티스 배포판으로 수세 랜처, 레드햇 오픈시프트, 미란티스 쿠버네티스 엔진 등이 있지만, 설문조사 대상 79%는 아마존 엘라스틱 컨테이너 서비스(39%), 애저 쿠버네티스 서비스(23%), 애저 쿠버네티스 서비스 엔진(17%)를 사용하고 있다. 데이터도그의 2021 컨테이너 보고서에 의하면, 쿠버네티스 사용자의 90% 가량은 현재 클라우드 매니지드 서비스를 사용 중이다.

IDC의 작년 12월 컨테이너 인프라스트럭처 소프트웨어 조사에서 컨테이너 사용자는 2년 전에 비해 퍼블릭 클라우드에 쿠버네티스를 구축하기 위한 매니지드 서비스 사용이 11% 증가했다고 보고했다. IDC  퓨처오브디지털이노베이션 프로그램의 또 다른 조사 결과는 디지털 네이티브 기업 중 22%만 IaaS를 구입해 자체 인프라 기술 스택을 관리, 운영하고 나머지 80%는 인프라 조정 및 관리 툴을 서비스 형태로 사용하는 것을 선호한다고 답했다.

IDC는 “쿠버네티스 서비스 소비를 선호하는 건 부분적으로 쿠버네티스가 신흥 기술에서 주류로 진입하기 시작하는 기술로 성장했다는 사실을 반영한다”며 “쿠버네티스를 더 많은 개발자가 접근할 수 있게 만들고자 하는 요구를 인식한 결과 소프트웨어 및 클라우드 공급업체는 점점 추상화된 쿠버네티스 솔루션을 제공하게 됐다”고 분석했다.

클라우드 서비스로 쿠버네티스를 사용하는 비율(자료: CNCF)

엔터프라이즈 쿠버네티스 플랫폼들도 혁신을 거듭하고 있다. VM웨어, 레드햇 같은 기업은 쿠버네티스를 사용하는 엔터프라이즈 개발자에게 앱 인식 경험을 제공함으로써 개발자 경험을 향상시킨다.

VM웨어 탄주 애플리케이션 플랫폼(TAP)은 멀티 클러스터에 걸친 앱 배포 및 가시성 문제를 해결함으로써 고객이 시간을 단축하고, 개발자 환경을 단순화하며, 보안 상태를 강화하고, 쿠버네티스를 비롯한 기존 개발자 툴과 자산을 보호할 수 있는 기능을 제공한다.

레드햇의 쿠버네티스 플랫폼인 레드햇 오픈시프트 플랫폼 플러스는 완전한 멀티 클라우드 쿠버네티스 스택을 제공함으로써 데브섹옵스와 애플리케이션 개발의 요구 사항을 충족한다. 레드햇은 최근 이 제품에 오픈시프트 데이터 파운데이션을 통합함으로써 개발자에게 클라우드 및 인프라를 포괄하는 영구 스토리지 등의 데이터 플랫폼을 제공하고 IT운영팀에 데이터 관리 기능을 제공하겠다고 발표했다. 이를 통해 레드햇 오픈시프트 플랫폼 플러스는 쿠버네티스 클러스터 전반과 클라우드 인프라 전반에 걸쳐 일관된 방식으로 애플리케이션을 보호 및 관리하는 필수 기능을 통합한다.

개발자 경험을 높이려면 운영에도 혁신을 해야 한다. 특히 기업은 멀티 클라우드 환경에서 쿠버네티스 워크로드에 대한 가시성을 높여 워크로드와 환경에 대한 즉각적인 통찰력을 얻을 수 있어야 한다.

신혜원 상무는 “쿠버네티스 모니터링을 잘 하려면 단일 쿠버네티스 클러스터 뿐 아니라 멀티 클러스터 환경을 단일 뷰로 모니터링 하는 방법에 대한 고려가 필요하다”며 “또한 3개월 주기의 쿠버네티스 릴리즈 속도를 따라가기 위한 업그레이드, 노드 확장/축소, 백업 및 복구 등을 쉽게 할 수 있는 쿠버네티스 플랫폼을 선택하는 것이 중요하다”고 강조했다.

관련기사

모니터링의 경우 쿠버네티스는 애플리케이션의 리소스 사용량에 대해서 상세한 정보를 제공한다. 기본적으로 여러 API를 통해 현재 상태를 확인하고, 쿠버네티스 대시보드나 CLI 를 통해 확인 가능하다. 프로메테우스(Prometheus)란 오픈소스를 이용하면 더 풍부한 메트릭에 접근 가능하다. 프로메테우스로 수집된 데이터는 그라파나(Grafana)를 통해서 사용자에게 시각화할 수 있다. 레드햇 오픈시프트 웹 콘솔은 여러가지 모니터링을 위한 화면을 제공하고 사용자가 쉽게 현재 클러스터의 상태를 파악할 수 있다.

VM웨어의 클라우드헬스 시큐어 스테이트는 통합 쿠버네티스 및 클라우드 보안 상태 관리 기능을 제공한다.  퍼블릭 클라우드 또는 데이터센터의 매니지드형 및 자체 관리형 쿠버네티스 클러스터를 포함해 500개 서비스 및 리소스 유형에 걸쳐 잘못된 구성 위험에 대해 심층적으로 파악할 수 있도록 지원한다. VM웨어 탄주포쿠버네티스오퍼레이션(Tanzu for Kubernetes Operations)은 기업이 클라우드 전반에 걸쳐 쿠버네티스 클러스터를 관리, 보안 및 모니터링하도록 지원하며 컨테이너 배치 및 관리에 대한 단순하고 일관된 접근 방식을 제공한다.