eBook

풀 스택 옵저버빌리티(Full-stack observability)가 필요한 이유

개요

옵저버빌리티(관찰성)는 현대의 디지털 기업들에서 중요한 관행으로 자리잡았습니다. 더 복잡해지고 분산화되는 애플리케이션 및 인프라 환경에서, 이보다 효과적으로 고객 에게 우수한 소프트웨어 경험을 제공할 수 있도록 해주는 전략은 없습니다. 

옵저버빌리티에 대해 자세히 살펴보기 전에, 먼저 두 가지를 짚고 넘어가겠습니다.

1. 옵저버빌리는 모니터링과 동의어가 아닙니다. 

모니터링은 소프트웨어 팀에 계측 기능을 제공하여, 시스템에 대한 데이터를 수집하고 오류나 문제가 발생하면 신속하게 대응할 수 있도록 합니다. 반면에 옵저버빌리티는 시스템을 tool로 계측하여 언제 오류나 문제가 발생했는지는 물론 왜 발생했는지를 알려주는, 실행 가능한 데이터를 수집하는 관행을 의미합니다. 

2. 옵저버빌리티는 전체 시스템을 포괄해야하며, 전체 환경에 대한 가시성을 제공해야 합니다. 

프런트엔드 UI 경험에서 쿠버네티스 배포용으로 구성된 컨테이너 리소스까지, 전체 IT 환경에 다음과 같은 풀 스택 옵저버빌리티의 원칙이 적용되어야 합니다. 

풀 스택 옵저버빌리티를 통해 소프트웨어 팀은 다음과 같은 혜택을 얻을 수 있습니다.

고품질 소프트웨어를 대규모로 신속하게 배포 • 지속가능한혁신문화구축
• 클라우드 및 최신 tool에 대한 투자 최적화
• 디지털 비즈니스의 실시간 성능 확인

풀 스택 옵저버빌리티는 사이트 안정성 엔지니어링(SRE) 팀과 데브옵스 팀, 개발자 및 비즈니스 리더들 간의 간극을 해소해줍니다.

그렇다면 기업 환경에서 풀 스택 옵저버빌리티를 어떻게 구축할 수 있을까요? 그리고 풀 스택 옵저버빌리티로부터 어떤 성과를 기대할 수 있을까요? 풀 스택 옵저버빌리티의 세 가지 핵심 요소에 대해 알아보겠습니다. 

옵저버빌리티에 대한 새로운 접근 방식을 요구하는 아키텍처

지난 5-10년간 놀라운 속도로 이루어진 기술 혁신은 소프트웨어 팀에 엄청난 영향을 미쳤습니다. 주요 트렌드는 다음과 같습니다.

혁신 가속화에 대한 부담

소프트웨어 팀은 경쟁업체보다 새로운 기능과 경험을 더 빨리, 더 자주 시장에 출시해야 한다는 엄청난 부담을 안고 있습니다. 클라우드는 진입 장벽을 낮추고 소프트웨어 팀이 더 적은 리소스로 그 어느 때보다 빠르게 배포하고 적응하도 록 만으로써 경쟁을 부추겼습니다. 높은 성과를 내는 기업은 매시간 또는 매일 한 번씩 소프트웨어를 배포하며, 우수한 성과를 내는 기업은 하루에 여러 번 온디맨드 방식으로 배포합니다.

 

높아진 고객의 기대치

고객의 기대치는 더 높아졌고, 허용치는 더 낮아졌습니다. 고객은 느리고 오류가 자주 발생하며, 잘못 설계된 사용자 경험을 용납하지 않습니다. 하고자 하는 일을 할 수 없다면, 고객은 쉽게 떠나 버립니다. 모바일 앱 개발업체인 Dot Com Infoway에 따르면, 모바일 충돌, 중단 또는 오류가 발생하면 사용자의 62%는 앱을 삭제하는 것으로 나타났습니다. 사용자에게 영향을 미치는 인시 던트나 결함이 발생하면 높은 성과를 내는 서비스 업체는 1시간 이내에 소프 트웨어 배포 성능을 복원합니다. 성과가 낮은 업체는 1주에서 1개월이 걸립 니다. 

 

더 많은 기술 옵션

오늘날 조직들은 수많은 클라우드 제공업체와 컴퓨팅 플랫폼을 사용해 마이 크로서비스 아키텍처와 분산 시스템을 구축하고 있습니다. 이러한 서비스는 그어느때보다쉽게도입해사용할수있으며,더원활하게연동이되고있습니 다. 스택을 구성하고 유지하기 위한 관리 노력을 추상화하기 위해, 이제 다양한 시스템과 서비스를 선택하여 최신 기술 스택에서 필요한 모든 것을 지원할 수 있습니다.

 

데브옵스 및 자동화의 부상

기업은 운영 환경에서 보유한 서비스의 엔드-투-엔드 설계, 배포 및 운영을 자율적으로 담당하는 팀을 주축으로 조직을 구성하고 있습니다. 종종 내부 플랫폼 팀이 서비스로서 제공하는 공통 플랫폼과 tool을 활용하기도 합니다. 자동화는 반복적이고 가치가 낮은 작업(수고)을 덜어주고 안정성을 향상시켜 줍니다. 클라우드 네이티브 아키텍처에서, 스택에 있는 모든 것은 소프트 웨어로 제어되며, 전체 표면 영역은 코드를 통해 설정될 수 있습니다. 그리고 모든 자동화가 소프트웨어로 실행되기 때문에, 장애가 발생하는 것은 불가피합니다. 그렇기에 고객들이 사용하는 애플리케이션과 마찬가지로, 연속 통합/ 연속 배포(CI/CD) 및 기타 자동화 tool도 모니터링되어야 합니다. 시스템 내의 모든 구성 요소에 대한 데이터를 수집하는 것이 옵저버빌리티의 핵심입니다. 

.

풀 스택 옵저버빌리티의 핵심 요소

풀 스택 옵저버빌리티가 정확히 무엇을 의미하는지 살펴보겠습니다.

풀 스택 옵저버빌리티는 전체 스택에서 문제를 해결하고, 디버깅을 하며, 성능을 최적화 하려는 모든 엔지니어들에게 신뢰할 수 있는 단일 소스가 되어 줍니다. 사용자는 하나의 통합된 환경에서 문제를 더 신속하게 찾아 수정할 수 있습니다. 풀 스택 옵저버빌리티는 로그, 인프라 및 애플리케이션에서 분산 추적, 서버리스 함수, 엔드유저 경험까지 연결된 컨텍스트를 제공하고, 의미 있는 분석을 표면화시켜 줍니다. 새로운 tool이 필요하지 않으며, 다양한 tool 간의 전환도 필요 없습니다. 

신뢰할 수 있는 단일(오픈)소스

수년 동안, 옵저버빌리티를 확보하기 위해 텔레메트리를 수집하는 가장 좋은 방법은 에이전트를 사용하는 것이었습니다. 소프트웨어 개발자와 운영 팀들은 애플리케이션과 호스트 내에 에이전트를 배포했으며, 이러한 에이전트는 메트릭, 이벤트, 트레이스 및 로그 데이터를 수집해 독점적인 방식으로 패키징한 후 집계 및 디스플레이에 이용되도록 전송했습니다.

지금까지도 이는 텔레메트리 수집을 위한 효과적인 방법이지만, 업계는 변화하고 있습니다. 이제는 더 많은 텔레메트리 소스가 존재합니다. 소프트웨어 개발을 위한 많은 오픈 시스템과 프레임워크에는 메트릭, 이벤트, 로그 및 트레 이스를 보편적인 형식으로 내보내는 기능이 내장되어 있습니다.

풀 스택 옵저버빌리티를 위해서는, 오픈 소스와 독점 소스 모두에서 데이터를 수집해 한 곳에 통합해야 합니다. 적절한 위치에 자동 계측을 적용하고, 가시성이 가장 필요한 곳에는 계측을 추가해야 합니다. 

.

M.E.L.T 개요

뉴렐릭에게 메트릭, 이벤트, 로그 및 트레이스(통칭 MELT)는 옵저버빌리티의 필수 데이터 유형입니다. 다음은 각 유형에 대한 간략한 설명입니다. 

 

메트릭(METRICS)

메트릭은 풀 스택 옵저버빌리티의 시작점입니다. 수집과 저장에 비용이 많이 들지 않고, 신속하게 분석할 수 있도록 다양한 디멘션(차원) 을 제공하며, 전체적인 상태를 측정하는 좋은 방법입니다. 이 때문에, Prometheus, Telegraf, StatsD, Dropwizard, Micrometer 등 메트릭 수집을 위한 많은 tool들이 등장했습니다. ‘개방형’ 풀 스택 옵저버빌리티 솔루션은 다양한 팀들이 현대의 디지털 엔터프라이즈에서 도입한 이러한 소스의 메트릭을 사용할 수 있어야 합니다. 

이벤트(EVENTS)

이벤트는 모든 풀 스택 옵저버빌리티 솔루션의 일부로 포함되어야 하는 중요한(그리고 종종 간과되는) 텔레메트리 유형입니다. 이벤트와 로그는 몇 가지 유사점이 있기 때문에 종종 혼합됩니다. 이벤트는 중요한 분석 지점에 대한 개별적이고 상세한 기록입니다. 그러나 이벤트에는 로그가 제공하는 세부 수준보다 더 높은 수준의 추상화가 포함됩니다. 로그는 시스템 내에서 발생한 모든 일에 대한 포괄적이고 개별적인 기록입니다. 이벤트는발생한중요한사건들의기록으로, 컨텍스트를 명확하게 만들기 위해 메타데이터가 첨부됩니다. 예를 들어, 뉴렐릭이 트랜잭션 이벤트(프로세스의 코드 블록이나 개별 메소드 실행 인스턴스)를 수집 할 때, 실행된 데이터베이스 호출 수와 그 호출 기간을 표시하기 위해 데이터가 자동으로 추가됩니다. 

로그(LOGS)

로그는 엔지니어가 ‘심층’ 디버깅 모드에서 문제를 이해하려고 할 때 중요합니다. 로그는 이벤트에 대한 충실도 높은 데이터와 자세한 컨텍스트를 제공하므로, 엔지니어는 발생한 일을 밀리 초 단위로 재현할 수 있습니다. 메트릭이나 추적과 마찬가지로, 로그 수집, 필터링 및 내 보내기 작업의 부담과 수고를 덜어주기 위해, Fluentd, Fluent Bit, Logstash, AWS CloudWatch 같은 보편적인 솔루션과 여러 새로운 표준들이 나와 있습니다. 

트레이스(TRACES)

트레이스는 분산 아키텍처에서 개별적인 호출의 전체적인 레이턴시를 표시하는데 유용합니다. 이러한 호출은 시스템을 통과하는 수많은 고객 여정에 대한 구체적인 인사이트를 제공합니다. 트레이스는 엔지니어들 이 이러한 여정을 이해하고 병목 현상을 찾아내어 오류를 식별하여 수정하고 최적화할 수 있게 합니다. 메트릭과 유사하게, 수많은 tool (Jaeger, Zipkin, AWS X-ray 등)과 표준(W3C Trace Context, OpenTelemetry project 등)이 등장해, 조직들이 맞춤형 솔루션을 생성할 수 있도록 지원하고 있습니다. 

통합 데이터스토어의 중요성

필수적인 계측을 제공하는 대부분의 오픈 소스 tool은 데이터를 수집, 저장 및 분석할수있도록별도의데이터저장소가함께제공되지만,이는풀스택옵저 버빌리티의 유용성을 저해합니다. 엔지니어와 팀들이 여러 tool에 대해 배우고 이해해야 하기 때문입니다. 통합된 데이터 저장소가 없다면, 심각한 긴급 상황 이나 문제가 발생할 때, 엔지니어는 여러 tool의 컨텍스트를 상황에 맞게 전 환하여 문제의 원인을 찾아야 합니다. 개방형 풀 스택 옵저버빌리티 플랫폼은 소스와 관계없이 이 모든 데이터에 대한 상호운용성을 제공합니다.

그러나, 이 모든 데이터를 직접 처리하려고 하면 또 다른 문제가 발생합니다. 올바른 포맷으로 올바른 데이터를 기록하고 있는가? 데이터 파이프라인의 용량이 소프트웨어에 대한 증가하는 수요에 맞춰 로드를 처리하기에 충분한가? 등의 문제가 발생하는데, 풀 스택 옵저버빌리티는 문제를 더하는 게 아니라 감소시켜야 합니다. 

이를 위해, 풀 스택 옵저버빌리티 플랫폼은 통합 데이터베이스를 제공해 다음 을 지원합니다.

• 모든 텔레메트리 데이터를 한 곳에서 수집해 시스템의 모든 데이터 포인트에 대한 연결된 뷰를 제공하여 비즈니스에 영향을 미치는 문제를 식별, 이해 및 해결할 수 있습니다.

• 유연한 스키마를 기반으로 하여 이전에는 할 필요가 없던 질문에 대한 답변을 빠르게 얻을 수 있습니다.

• 예측하지 못했던 비즈니스 요구 사항을 지원할 수 있도록 비즈니스가 성장함에 따라 제한 없이 확장이 가능합니다. 

연결된 컨텍스트

모든 곳의 텔레메트리 데이터를 한곳으로 가져오는 것은 좋은 시작은 될 수 있지만 그것만으로는 충분하지 않습니다. 데이터는 시스템 구성 요소 간의 관계를 이해할 수 있는 방식으로 연결되어야 하며, 비즈니스와의 관계를 이해할 수 있도록 메타데이터와 상호 연결되어야 합니다. 이러한 연결은 데이터 컨텍스트와 의미를 제공합니다.

예를 들어, 컨텍스트는 데이터에 대한 가장 중요한 정보를 표시하는 선별된 뷰와 특정 환경에 대한 모델링을 지원합니다. 또한 모든 텔레메트리 데이터와 연결이 한곳에 저장되면, 대규모 데이터 세트에 인텔리전스를 적용하고, 대시보드를 보는 사람이 쉽게 식별할 수 없는 패턴, 이상 및 상관 관계를 부각시킬 수 있습 니다.

기본적으로, 언제 어디서나 시스템의 모든 구성 요소가 어떻게 서로 연결되 어 있는지 볼 수 있는 방법이 필요합니다. 시스템은 시시각각으로 바뀌는데 시스템에 대한 정적인 맵을 유지한다는 것은 불가능한 일입니다. 이러한 관계의 관리를 설정에만 의존하는 것도 불가능합니다. 팀이 새로운 서비스를 추가하 고, 기존 서비스를 리팩터링하고, 일시적으로 애플리케이션의 인스턴스를 스핀업하고 종료하는 상황에서는 정적인 맵을 유지하는 것은 불가능해집니다. 

"시각화를 하지 못하면 컨텍스트는 아무런 소용이 없습니다. "

 


메타데이터와 디멘션(차원)이 있어야 컨텍스트를 얻을 수 있습니다. 시스템, 비즈니스 또는 애플리케이션에 따라 중요한 데이터의 범위는 엄청나게 커질 수 있습니다. 예를 들어, 이커머스 애플리케이션의 경우 유용한 컨텍스트에는 다음이 포함됩니다.

• 애플리케이션,런북및코드저장소를소유한팀에대한세부정보 

• 도커의 태그와 도커를 배포한 클라우드 제공업체

• 서비스유형및함수

• 배포된 지역

• 업스트림 및 다운스트림 종속성

• 배포또는변경이벤트

• 알림 상태

• 수행하는 트랜잭션과 관련된 모든 트레이스 또는 로그 데이터

• 추가적인 비즈니스 데이터(예: 장바구니 금액)

그러나, 시스템 구성요소와 이들의 연결 및 관계는 풀 스택 옵저버빌리티를 위한 필수적인 문맥 중 하나일 뿐입니다. 시각화를 하지 못하면 컨텍스트는 아무런 소용이 없습니다. 

더 쉽고 빠르며, 맞춤화가 가능한 탐색

데이터 시각화 큐레이션은 연결되고 잘 정의된 시스템 구성 요소를 표면화시켜 주는 강력한 방식입니다. 컨테이너에서 실행되는 Java 애플리케이션 프로 세스나 SQS의 호출 후 DynamoDB를 호출하는 AWS 람다 함수, 또는 동적 배포를 실행하는 쿠버네티스 클러스터를 가장 잘 표현하는 방법은 이미 잘 알려져 있고 이러한 문제들은 해결되었습니다. 바쁜 SRE 또는 데브옵스 엔지니어가 대시보드 세트에서 이러한 환경을 모델링하는 것은 귀중한 시간을 낭비 하는 일입니다. 보편적인 기술을 위해 수동으로 대시보드를 만들고 시각화하는 일은 시간도 많이 걸리고 번거로운 일입니다.

풀 스택 옵저버빌리티 플랫폼은 업계 리더들의 모범 사례를 통합하고, 가장 중요한 상태 신호들을 표면화시킬 뿐만 아니라, 엔지니어들이 문제를 빠르게 해결할 수 있는 쌍방향 경험을 제공해야 합니다. 

크고 복잡한 분산 시스템을 효율적으로 탐색하여 문제를 빠르게 이해하고 우선순위를 지정하려면, 별도의 설정이 필요하지 않은 직관적인 시각화 역량이 필요합니다. 이러한 점에서, 혁신적인 디자인은 필수적입니다.

별도의 설정을 하지 않아도 플랫폼의 시각화 기능이 인사이트를 제공하면, 조직은 사일로를 보다 효과적으로 제거 할 수 있으며, 팀이 전체 시스템을 한눈에 관찰하여 환경 전반에서 일어나는 일들을 더 빨리 이해하고 문제를 더 신속하게 해결할 수 있도록 지원합니다. 

.

대시보드는 훌륭한 tool이지만 수동적인 데이터만 제공하는 경우가 많습니다. 풀 스택 옵저버빌리티 플랫폼은 직관적인 실시간 시각화를 제공하여, 가장 필요한 부분에 주의를 집중하고 모든 텔레메트리 데이터에서 최근 변경 사항의 심각도와 규모를 파악할 수 있도록 지원해야 합니다. 그래야만, 알려지지 않은 관계와 사각지대를 발견할 수 있습니다. 이러한 뷰는 보통 ‘황금 신호’로 간주되는 처리량, 응답 시간 및 오류는 물론 중요한 텔레메트리 데이터 신호의 변화까지, 대규모 시스템을 쉽게 탐색할 수 있도록 맞춤화가 가능해야 합니다.

이러한 시각적 요소는 변화가 발생하고 있는 위치(기점) 와 이러한 변화에 기여할 수 있는 요소를 보여줍니다. 문제가 시스템 전반에서 어떤 공통점이 있고 어떻게 관련되어 있는지를 즉시 확인할 수 있습니다. 저장된 뷰는 문제해결시 팀의 효율성과 협업을 향상시킵니다. 

.

전체 환경을 단일 화면에 직관적으로 표시되는 플랫폼은 팀들이 유형, 태그 또는 중요한 성능 데이터를 기반으로, 모든 시스템 구성 요소에 대한 포인트-앤-클릭 필터링 및 그룹화를 통해 환경의 상태를 한눈에 빠르게 탐색할 수 있도록 해줍니다. 이를 통해 변경된 사항과 이유를 이해하고 문제가 고객에게 영향을 미치기 훨씬 전에 문제를 해결하는 것이 가능해집니다. 

.

컨텍스트를 통한 큐레이션 - 기술 격차 해소

궁극적으로, 오전 3시에 호출을 받고 깨어나 확인해야 하는 인터페이스는 매우 직관적이고 현대적이어야 하며, 모든 IT, 엔지니어링 및 SRE 팀이 전체 환경 에서 일어나는 일을 이해하기 위해 일상적으로 사용할 수 있어야 합니다.

“컨텍스트를 통한 큐레이션은 복잡한 디지털 기업의 기술 격차를 해소하는 데 도움이 됩니다.”

 

컨텍스트를 통한 큐레이션도 복잡한 디지털 기업의 기술 격차를 해소하는데 도움이 됩니다. 조직의 모든 구성원이 복잡한 시스템들의 흐름과 종속성을 시각화하고 전체 환경과 관련된 모든 것을 볼 수 있는 방법을 제공하기 때문입니다. 큐레이션은 다양한 시스템을 잘 모델링해주어, 특정 기술이나 코드에 익숙하지 않은 사람도 쉽게 이해할 수 있습니다.

즉, 조직의 모든 사용자가 다음 작업에 사용할 수 있는 빠른 뷰가 필요합니다.

• 기술,비즈니스및고객간의관계를풍부한문맥으로이해할수있습니다. 

• 특정 KPI에 가장 크고 직접적인 영향을 주는 데이터에 기반해 의사결정을 내릴 수 있습니다.

시스템이 기술 환경을 자동적, 그리고 효과적으로 모델링하여 일목요연하게 시각화해주면, 모든 사람은 근본 원인을 쉽게 찾을 수 있습니다. 또한, 대규모 데이터 세트에 인텔리전스를 적용하면 데이터 간의 연결 관계가 드러나, 어려운 상황에서도 가장 효과적인 의사 결정을 내릴 수 있습니다. 

풀 스택 옵저버빌리티의 혜택

소프트웨어 혁신이 진행됨에 따라, 세상은 더 빠르게 이동하고, 더욱 복잡해질 것입니다. 불과 몇 년 전까지만 해도 현재의 기술과 기술 트렌드를 예상할 수 없었습니다. 마찬가지로, 앞으로 어떤 혁신이 일어날 지 알 수 없습니다. 우리가 알 수 있는것은 이러한 지속적인 혁신과 복잡성으로 인해, 팀이 더 빠르게 움직이고, 더 많은 기술을 수용하며, 오류 없이 빠른 속도로 작업을 수행해야 한다는 기대치가 계속 높아질 것이라는 사실입니다. 또한, 더 많은 것을 자동화하고 경쟁업체 등 다른 기업이 정한 고객의 기대치에 부응하기 위해 최첨단 고객경험을 제공해야 할 것입니다. 

이러한 도전과제를 감안할 때, 복잡성, 위험, 오버헤드를 감소해주는 풀 스택 옵저버빌리티 플랫폼이 필요합니다. 사용하고 이해하기 쉬우며, 필수 컨텍스트 수집을 위한 탐색이 가능해 기술 격차를 줄여주는 플랫폼이 필요합니다. 조직 내 모든팀에서 사용하는데 지장이 있으면 안됩니다. 팀이 모든 텔레메트리 및 비즈니스 데이터를 한 곳에서 확인하고, 신속하게 의미를 도출하며, 올바른 조치를 취하는 데 필요한 컨텍스트를 확보하고, 기업과 비즈니스에 의미 있는 방식으로 데이터를 사용할 수 있게 해주는 플랫폼이 필요합니다. 

풀 스택 옵저버빌리티는 다음과 같은 혜택을 제공합니다.

• 평균 해결 시간(MTTR) 단축

• 문제감지 및 진단

• 시스템 전반에 걸쳐 카오스 엔지니어링 및 로드테스트 수행 

• 개발자에게 혁신을 위한 더 많은 시간 제공 

풀 스택 옵저버빌리티를 확보하면, 다양한 비즈니스 혜택을 얻을 수 있습니다.

더 빠른 혁신, 더 빠른 배포, 수고 감소, 비용절감, 한정된시간과 관심의 우선순위를 정하는 방법에 대한 더 나은 이해. 개발자는 변경 사항이 시스템을 망가뜨리지 않을 것이라는 사실을 알고 자신있게 혁신하며 카오스 테스트를 수행할 수 있어야 합니다. 이것이 풀 스택 옵저버빌리티의 혜택입니다. 

이 모든 것이 데이터, 시스템 및 고객에 대한 보다 깊이있고 공유된 이해로 이어집니다. 이 모든 것은 기업의 문화를 향상시키고, 디지털 시스템의 성능과 고객 의 소프트웨어 사용 방식에 대한 실시간 관점을 확보함으로써 비즈니스를 성장 시켜 줄 것입니다. 이를 통해 직원들은 가장 중요한 것, 즉 매일 제공해야 할 책임이 있는 비즈니스 성과에만 집중할 수 있습니다.