안녕하세요, 와탭랩스 베키입니다. 25번째 월간와탭에서는 쿠버네티스를 위한 옵저버빌리티를 소개합니다. 우리나라 최대 IT 컨퍼런스, 2022 AWS Summit Korea가 5월 11일 종료했습니다. 최신 IT 기술 트렌드를 소개하는 이 자리에 와탭랩스도 세션을 진행했습니다. 이번 월간와탭에서는 와탭랩스 김성조 CTO님의 쿠버네티스를 위한 옵저버빌리티를 리뷰합니다.
더 깊이 있는 설명은 AWS 서밋 세션 다시보기에서 7월 31일까지 시청할 수 있습니다. (등록 및 로그인 필수)
과거 모니터링 툴은 영역 별로 특화된 포인트 솔루션을 사용하는 것이 일반적이었습니다. 서버와 애플리케이션 관계가 이미 운영 시스템 구축할 때 결정되었기 때문이었거든요. 그래서 서로 다른 툴에서 분석된 내용일지라도 연관 지어 해석이 가능했습니다. 그런데 2010년대 초반, 디지털 트랜스포메이션이 등장합니다.
디지털 트랜스포메이션의 궁극적인 목표는 디지털 기술을 기반으로 비즈니스 영역의 혁신하기 위해 IT 시스템이 비즈니스 속도에 맞춰 빠르게 발전해야 하는데요. 이제는 IT가 비즈니스 발전을 이끌고 있죠. 시장의 변화에 적응하기 위해서는 지속적으로 개발하고 빠르게 배포해야 살아남을 수 있습니다.
지속적인 개발과 빠른 배포를 위해서는 경량화되고 빠른 컨테이너 기술로 복잡한 마이크로 서비스를 위한 시스템 구축이 가능하게 되었습니다. 많은 컨테이너를 관리하기 위해서 쿠버네티스가 등장하게 되었습니다.
쿠버네티스는 인프라와 애플리케이션 사이의 컨테이너를 오케스트레이션 합니다. 전통적인 시스템에 쿠버네티스라는 녀석이 등장하면서 이제 서버와 애플리케이션, 그리고 데이터베이스 사이의 물리적 관계를 모니터링 시절처럼 똑같이 분석할 수 없게 된다고 해요. 결과적으로 디지털 트랜스포메이션이 쿠버네티스를 등장하게 만든 배경이 되고, 디지털 트랜스포메이션으로 인해 모니터링의 관점을 완전히 바꾼 셈이죠.
그래서 쿠버네티스를 사용한다면 모니터링 관점도 달라져야 합니다. 정적인 모니터링을 넘어 시스템을 통합으로 모니터링 해야 합니다. 서버, 컨테이너, 애플리케이션, 데이터베이스를 위한 성능 데이터를 하나의 솔루션으로 모니터링하는 것을 강조했습니다. 그래서 등장한 모니터링 관점이 옵저버빌리티입니다.
옵저버빌리티는 외부 출력으로 내부 상태를 측정할 수 있는 능력입니다. 이를 모니터링에 적용하면 적절한 모니터링 도구로 내부 성능 상태를 측정할 수 있는 능력으로 요약할 수 있습니다. 그래서 모니터링은 정적인 시스템에 대한 관찰이라면 옵저버빌리티는 동적인 시스템에 대한 관찰 가능성으로 여깁니다.
옵저버빌리티는 Metrics(성능 지표), Traces(트랜잭션 연계 추적), Logs(로그)를 가지고 성능을 분석해야 합니다. 복잡한 시스템에서는 성능 지표 뿐만 아니라 트랜잭션 프로파일을 함께 추적해야 성능 분석이 가능합니다. 쿠버네티스 기반 시스템에서는 성능 지표와 트랜잭션 추적 뿐만 아니라 시스템에 남는 각종 로그를 확인하고 분석해야 합니다.
쿠버네티스에서는 인프라와 애플리케이션의 관계가 동적이에요. 그래서 클라우드를 포함한 인프라 영역 성능 지표와 앱 영역 성능 지표를 같이 모니터링 해야 할 필요가 있습니다. 더불어, 컨테이너를 자동으로 스케일 인/아웃 하기 때문에 운영자가 없어도 성능 모니터링이 가능해야 돼요.
정적인 모니터링에서는 영역 별 개별 솔루션에 성능 데이터를 각자 저장 되어 최소한의 통합 뷰만 제공했습니다. 이에 반해 옵저버빌리티에서는 영역 별 성능 데이터가 통합 솔루션에 저장되어 통합 대시보드부터 연관 분석과 연계 추적이 가능하도록 제공해야 합니다.
실시간 트랜잭션 모니터링은 20년이 넘는 시간 동안 그 필요성을 증명했고 쿠버네티스에서도 꼭 필요하지만, 이를 넘은 추적 기능이 필요합니다. 사용자의 요청이 여러 개의 마이크로서비스에서 처리되기 때문에 분산 추적이 매우 중요해졌고 매우 어려워졌습니다.
첫째, 컨테이너 환경에서 애플리케이션 경량화를 위해 비동기 기술 사용이 증가하고, 비동기 스레드로 추적하는 트랜잭션은 어렵기 때문이에요.
둘째, 하나의 단일 트랜잭션이 여러 개로 분할되면서 추적할 트랜잭션 수가 이전보다 수십 배가 증가했어요.
셋째, 더 많고 복잡한 오픈소스 컴포넌트가 사용되고 있어요.
넷째, 경우에 따라 마이크로서비스를 개발할 때 각각 다른 언어를 사용하기 때문에 쿠버네티스에서는 단일 추적으로는 트랜잭션 분석이 어려워졌어요.
로그는 전통 시스템에서는 큰 비중을 차지하지 않았습니다. 이마저도 서버에 남은 로그를 콘솔 명령어로 쉽게 찾을 수 있었다고 해요. 그런데 쿠버네티스에서는 컨테이너가 종료되면서 로그가 사라져 확인할 수 없게 되었다고 합니다.
그리고 개발자가 운영에 참여하는 데브옵스가 등장하면서 로그에 대한 의존도가 높아졌는데요. 다양한 오픈소스 컴포넌트의 사용으로 로그를 조금 더 적극적으로 모니터링 해야한다고 합니다. 트랜잭션 뷰나 컨테이너 성능을 분석하면서 관련된 로그를 참조해야 하면서 로그의 중요도가 높아졌습니다. 그래서 통합 로그 모니터링은 옵저버빌리티에서 필수가 되었습니다.
모니터링은 이제 영역 별 포인트 솔루션에서 통합된 솔루션이 필수로, 다양한 시스템 컴포넌트로부터 발생하는 성능 데이터를 Metrics(성능 지표), Traces(트랜잭션 연계 추적), Logs(로그) 관점에서 통합 수집하고 분석할 수 있는 옵저버빌리티를 구현해야 합니다.
이전보다 방대하고 복잡해진 통합 수집 데이터를 분석하기 위해선 먼저 트랜잭션 관점이나 컨테이너 관점에서 데이터를 보고 이후에 연관된 메트릭스나 로그를 분석하여 성능 문제를 해석할 수 있어야 해요. 쿠버네티스를 도입 계획중이거나 이미 도입했다면 옵저버빌리티 툴을 추천 드려요 😊😊