Slack은 업무 협업 툴과 서비스를 제공하여 업무의 생상선을 높이는데 주력하는 클라우드 기반 서비스 기업이다. 많은 국내 IT 기업에서 잔디(Jandi), 카카오톡, 라인 등을 사용할 것이다. 해외에서는 주로 Slack과 Microsoft Teams을 사용한다고 알려져 있다.
오늘 주제와는 무관하지만 오늘자 기준 업계 근황을 살펴보자면 혜성같이 등장한 Slack이 업무 협업툴로 해당 섹터를 지배하려 하자 기존 메신저 강자였던 Microsoft가 모바일 시대 메신저 시장에서 처참한 패배를 딛고 Azure 기반 Paas를 위해 야심 차게 만든 Teams를 끼워 팔기(?) 시작하면서 새로운 강자로 떠올랐다.
이에 위기를 느낀 Slack과 아마존 AWS는 최근 자택 근무시대에 떠오르는 화상 회의 솔루션 Zoom과 Teams를 견제하기 위해 한배를 탄다는 소식이 있다. (그리고 얼마후 Sales Force와 M&A를 해버리고 말았다)
위 소식에서 알수있듯이 슬랙은 전 세계적으로 널리 쓰이고 빠르게 성장하고 있는 업무 협업 툴이다. 약 800만 명의 사용자가 매일 같이 사용하고 있다.
많은 사용자가 사용하는 만큼 문제가 발생했을 시 신속하게 대응하고 애플리케이션의 상태를 능동적으로 모니터링할 필요성이 대두되었다. 이를 위해 슬랙 엔지니어링 연구팀은 이러한 니즈를 충족시켜 줄 수 있는 아파치 Samza를 활용한 새로운 모니터링 솔루션을 구축하였다.
슬랙 엔지니어링 팀의 니즈:
- 문제를 신속하게 알아챌수 있는 거의 실시간 수준(Near real-time) 경보 기능
- 데이터 스트림의 장애 허용 (혹은 결함 감내)을 지원하는 처리 기능
- 메트릭과 로그에서 수십억 개의 이벤트를 처리하고 애플리케이션의 상태를 알 수 있는 기능
- 시험용으로 사용 가능하게 쉽게 확장이 가능한 기능
슬랙의 엔지니어링 팀은 위와 같이 Apache Samza를 사용하여 데이터 플랫폼 시스템을 구축했다. 시스템은 크게 라우터, 프로세서, 컨버터의 세 가지 유형의 Samza의 작업으로 구성되어있다.
슬랙의 모든 서비스는 로그를 잘 정의된 형식으로(well-defined format) 데이터를 내보내며 이 데이터는 카프카 클러스터로 도착하게 된다. 로그들은 라우터라고 불리는 Samza의 작업에 의해 처리가 된다. 라우터는 들어오는 로그 이벤트를 역직렬화(deserialize)해서 미리 정의된 형태로 가공하고 그 위에 오류를 진단하거나 추적 정보를 쓰기 위한 즉, 성능을 모니터링하고 측정하기 위한 인스트루먼테이션을 추가한다. 라우터에서 처리된 데이터는 다음 단계의 파이프라인으로 보내진다.
다음 단계인 프로세서는 라우터에서 받은 데이터를 집계하기 위해서 Samza의 상태 저장소(state-store)를 사용한다. 마지막으로 프로세서에서 처리된 결과는 분석 및 질의를 위해 Druid에 데이터를 연결하는 마지막 단계인 컨버터를 통해 수행된다. 또한 비정상적인 성능이 감지되면 slackbot으로 경보가 트리거 되게 하여 추가 조치를 할 수 있게 구성했다.
슬랙은 확장 가능한 데이터 플랫폼을 구축하여 회사 내의 다른 팀들이 그 위에서 그들만의 애플리케이션을 구축할 수 있도록 하였다.
슬랙 엔지니어링 팀이 Samza를 활용한 부분 중 특히 주목할만한 사용 사례가 있는데 바로 슬랙의 실험용 프레임워크이다. 데이터 파이프라인을 활용하여 A/B 테스트 결과를 거의 실시간으로 측정할 수 있게 하였다. 파이프라인은 Samza를 사용하여 일련의 성능 관련 메트릭스와 고객이 속한 실험에 대한 추가 데이터를 결합한다. 이를 통해 슬랙은 각 실험이 전체적인 고객 경험(customer experience)에 어떠한 영향이 미치는지 알 수 있다.
사용 된 Samza의 주요 특징: Stateful processing, Join, Windowing
더 자세한 내용은 아래 링크를 참고하길 바란다.
Streaming data pipelines @ Slack
Slack data platform evolves from the batch system to near real-time. I will also touch base on how Samza helps us to build low latency data pipelines & Experimentation framework.
speakerdeck.com
'무료정보' 카테고리의 다른 글
트립어드바이저의 실시간 대용량 데이터 개선 방법 (0) | 2022.02.02 |
---|---|
카프카의 사촌 Apache Samza - LinkedIn 사용 사례 (0) | 2022.02.01 |
[시스템 디자인] CAP 이론 정리 (0) | 2022.01.31 |
[코딩테스트] 가장빠르게 역순 링크드리스트 만들기 (0) | 2022.01.31 |
[셀레니움] DOM 여러 원소 찾기 (Locating multiple elements) (0) | 2022.01.30 |