IT 회사들의 서비스를 구성하는 스택이 점점 복잡해지고 데이터가 늘어나면서 시스템의 문제를 빠르게 감지하고 원인을 분석하는 작업은 점점 어려워지고 있다.
일반적으로 로깅 분석, 메트릭 분석, 성능 분석을 위해 개별 도구나 통합 도구를 도입해 시스템 운영에 활용하고 있지만 이러한 도구를 유지하고 관리하는 작업도 만만치 않다. 더구나 시스템의 복잡도와 규모가 서비스의 성공에 비례해 증가하기 때문에 좋은 도구가 준비돼 있더라도 단순히 모니터링 데이터를 쌓아 분석하는 기존 방식으로는 규모, 정확도, 대응 속도 면에서 한계가 있다. 이런 한계를 극복하고자 최근에는 데브옵스(DevOps)를 넘어 에이아이옵스(AIOps)를 표방하는 도구들이 유행처럼 출시되고 있다.
일래스틱 스택을 활용하면 로깅, 메트릭, 성능 분석 데이터를 통합해 관리할 수 있을 뿐 아니라 머신러닝을 적용해 비용 효율적으로 시스템을 모니터링하고 분석할 수 있다.
이 책은 운영 분석, 근본 원인 분석, 보안 분석 등에 기존 일래스틱 스택을 활용하고 있거나 새로 적용하려는 사용자가 일래스틱 스택의 머신러닝 기능을 빠르게 활용할 수 있도록 시스템 설치부터 다양한 시나리오에서의 활용 방법까지 설명한다.
하루하루 늘어가는 시스템의 문제에 빠르게 대응하고 수동 작업을 자동화하려는 많은 개발자와 운영자의 시간을 절약해 핵심 작업에 집중하는 데 도움이 되길 바란다.
인간의 능력만으로는 검색이 불가능할 수준으로 누적돼 가는 데이터 세상에서, IT 회사들은 어떻게 하면 비용 효율적으로 시스템의 문제를 빠르게 식별할 수 있는가를 고민한다. 이를 해결하고 로그, 메트릭 같은 다양한 데이터 소스로부터 시스템을 관찰하기 위해 다양한 전문 도구들을 사용하고 있다. 또한 경험에 의지해 인간이 예측 가능한 범위 내에서 다양한 대시보드와 얼러팅으로 모니터링 활동을 한다.
하지만 애플리케이션 아키텍처는 전통적인 모놀로식(Monolithic)에서 마이크로서비스(Microservice)화돼 가고, 애플리케이션을 운영할 인프라는 쿠버네티스와 같은 컨테이너 환경으로 빠르게 옮겨 가고 있다. 이렇듯 시스템 환경은 점점 더 복잡해지고 관찰해야 할 데이터의 양과 종류도 점점 더 늘고 있다. 그로 인해 우리는 수집한 수많은 데이터 중 대부분을 관찰하지 못한 채 버리고 있다. 인간의 힘만으로 그 모든 데이터를 처리하기에는 우리의 삶은 너무 짧고 세상은 너무 빠르게 변화하고 있다.
이미 머신러닝이라는 단어는 유행하다 못해 주변에서도 쉽게 들을 수 있는 흔한 용어가 됐고 데브옵스(DevOps)라는 합성어를 따서 에이아이옵스(AIOps)라는 단어도 유행하고 있다. AI와 무관한 내가 소속된 조직에서도 몇 년째 에이아이옵스라는 용어를 사용하는 작은 조직이 있을 정도로 이제 이 에이아이옵스도 흔한 용어가 돼 가고 있다. 시스템을 운영하기 위해 인간이 아닌 기계에 의존해 데이터를 분석하고 시스템에 잠재된 문제를 발굴하거나 서비스의 이상을 감지해야만 하는 상황에 이르게 된 것이다.
『일래스틱 스택을 이용한 머신러닝』(에이콘, 2020)의 개정판인 이 책은 일래스틱 스택이 제공하는 안정적인 머신러닝 피처를 활용해 로그, 메트릭과 같은 데이터소스로부터 이상을 감지하는 방법인 일래스틱 스택을 처음 사용하는 사용자도 쉽게 이해하고 따라할 수 있도록 자세하게 설명한다. 또한 그간 새로 추가된 다양한 피처도 예제와 함께 상세하게 소개하고 있다. 특히 새로 추가된 데이터 프레임 피처는 도큐먼트를 엔티티 중심의 인덱스로 변환해 아웃라이어, 분류, 회귀 분석 영역까지 확장 가능해졌으며, 일래스틱서치의 새로운 네이티브 클라이언트인 일런드(Eland)가 일래스틱서치에 저장된 데이터를 파이썬의 강력한 데이터 분석 생태계와 쉽게 연결되도록 해줬다. 이러한 새로운 피처를 실질적인 예제와 함께 하나씩 배워 현업에 적용해볼 수 있도록 풀어 설명한 이 책이 데이터의 늪에 빠진 개발자와 운영자에게 구원의 손길이 될 수 있기를 바란다.
아파치 카프카는 분산형 이벤트 스트리밍 플랫폼으로, 대용량의 데이터를 처리하고 실시간으로 스트리밍하는 데 사용되는 강력한 핵심 도구 중 하나다. 카프카는 링크드인에서 개발되었으며, 현재는 아파치 소프트웨어 재단의 오픈 소스 프로젝트로 관리되고 있다. 아파치 카프카는 실시간 데이터 파이프라인, 이벤트 스트리밍, 로그 집계 등 다양한 애플리케이션과 시스템에서 사용되며, 대규모 기업부터 스타트업까지 다양한 조직에서 활발하게 사용되고 있다.
컴퓨팅 분야에서의 유행은 마치 패션처럼 빠르게 변화한다. 그러나 2011년 첫 출시 이후 지금도 메시지 큐와 메시지 버스 영역에서는 아파치 카프카가 여전히 주요 플랫폼으로 남아 있으며, 스트리밍 플랫폼으로 빠르게 확장되고 있다. 과거에도 아파치 카프카는 스트림 처리가 가능했지만, 스톰, 플링크, 스파크 등과 결합하여 스트림 처리를 확장했던 시기도 있었다. 그러나 현재는 프로듀서 및 컨슈머 개념과 이를 확장하여 구현한 카프카 스트림즈만으로도 대용량 실시간 스트리밍 처리를 프로덕션 환경에 성공적으로 적용하고 있다.
프로덕션 환경에서 아파치 카프카를 이용해 데이터를 처리할 때는 처리해야 할 데이터의 규모와 별개로 여러 지식들을 배우고 고려해야 한다. 스프링 카프카 같은 잘 정의된 고수준 API를 사용하면 빠르게 필요한 애플리케이션 개발을 완료할 수 있다. 그러나 서비스가 느려지거나 실패할 때 카프카 서버뿐만 아니라 클라이언트의 저수준 API가 작동하는 원리를 이해하지 못한다면 서비스 정상화가 지연될 뿐만 아니라 이러한 문제를 미연에 방지할 수도 없을 것이다.
이 책은 아파치 카프카를 활용하여 애플리케이션을 개발하는 과정에서 필요한 기본 개념들을 예제와 함께 설명하며, 독자의 이해를 점진적으로 높이기 위해 클라이언트, 서버, 카프카 생태계 등을 차례대로 다룬다. 이 과정을 진행하면서 아파치 카프카의 장점뿐만 아니라 한계에 대해서도 인사이트를 얻어 안정적인 프로덕션 애플리케이션을 개발하고 운영하는 데 도움이 되기를 기대한다.
불과 몇 년 전만 하더라도 주변에 카프카를 쓰는 곳은 많지 않았다. 분석할 데이터는 하둡 파일시스템에 넣고 맵리듀스 작업으로 배치 처리했다. 대용량의 데이터를 서버에 나눠 저장하고 더 빠른 처리가 필요하다면 서버를 더 늘리면 됐고 그것으로 충분할 것 같았다. 그러나 급속히 증가하는 데이터와 저장 및 처리에 드는 시간을 줄이려는 요구 때문에 실시간 또는 준 실시간 처리가 필요해졌다.
링크드인의 카프카 개발자도 하둡과 같은 대용량 데이터의 저장과 처리에 실시간성을 부여해야 했고 그 결과물이 카프카다. 발행/구독 메시지 큐를 제공하는 플랫폼으로서 카프카가 나온 이후 스트림 처리 플랫폼에 있어서 필수 요소로 자리 잡게 됐고, 카프카 사용 사례도 많아졌다. 카프카 스트림즈가 세상에 나오면서 이제는 실시간 스트림 처리가 별도의 스트림 플랫폼 없이도 가능해졌다.
이 책은 카프카 스트림즈로 실시간 애플리케이션을 만들 수 있도록 가상의 프로젝트 목표를 설정하고 단계별로 개선하는 방식으로 쓰여 있다. 운영 시, 겪게 될 다양한 이슈와 해결 방법 및 모니터링 방법도 포함하고 있어, 카프카 스트림즈를 시작하는 독자뿐만 아니라 이미 운영하는 독자에게도 도움이 될 것이다.