waiker의 MSA 구조

junhwi
waiker
Published in
3 min readJan 26, 2023

안녕하세요.

waiker 서비스의 서버 구조에 대해 소개하고 앞으로의 개선 방향에 대해 공유를 해보고자 합니다.

waiker 서비스의 특징

서버 구조에 앞서 간략하게 waiker 서비스의 특징에 대해 설명드리겠습니다.

waiker는 12개국의 금융데이터를 다루는 글로벌 투자정보 플랫폼입니다.

그렇다보니 전 세계 어디서나 투자 정보를 빠르고 정확하게 확인할 수 있어야 했습니다. 게다가 이를 빠르게 개발해야 했으므로 이를 위한 몇가지 고려 사항이 있었습니다.

  • 대용량 트래픽이 분산되어 처리되어야 한다.
  • 확장이 쉽고 빠르고 독립적이어야 한다.
  • 특정 서버군의 장애가 다른 서버군들에게 주는 영향을 최소화 해야 한다.
  • 다양한 특징을 가진 서버가 있으므로, 개별 서버의 특징이 고려된 기술 스택을 선택할 수 있어야 한다.

waiker의 MSA 구조

이와 같은 특징을 고려하여 waiker 서비스는 Spring Framework 기반의 MSA 구조로 개발이 되었습니다.

MSA : Microservice Architecture

아래 이미지는 간략하게 도식화한 waiker 서비스의 서버 구조입니다.

각 역할별 간단하게 설명드리자면,

— Rest API Group

주식, 커뮤니티, 푸시, 인증 등 다양한 성격을 가진 서버들이 존재합니다.

— Socket API Group

소켓 통신을 활용하여 데이터 처리를 하는 서버들이 존재합니다.

— 데이터 가공 서버

데이터 제공업체로부터 전달받은 Raw data를 waiker서비스에 맞는 형태로 재가공하는 역할을 하는 서버들이 존재합니다.

— RabbiMQ

데이터 제공업체로부터 실시간으로 받는 데이터를 처리합니다.

— CloudFront

정적 리소스들을 처리하는 역할을 합니다.

— Kinesis Firehose

실시간으로 여러 종류의 액션 데이터를 처리하고 있으며, 처리된 데이터는 S3에 쌓여 추천 시스템을 위한 학습용도로 활용됩니다.

— logstash, kibana, slack

로그를 수집하여 에러 원인을 분석하고 빠르게 장애를 수신하고 해결하기 위해 활용되고 있습니다.

TODO.

마지막으로는 앞으로 진행해야 할 방향에 대해 간단히 말씀을 드리겠습니다.

최초 설계된 MicroService 구조가 시간이 지나면서 또 다시 커지고 있습니다.

처음에 비해서 이렇게 구조가 커지는 이유는 아래와 같습니다.

  • 새로운 기능 개발 (채팅 등)
  • 새로운 데이터 추가 (국가, 종목 등)

특히 일부 서버 그룹은 Big Ball of Mud 상태로 진입하고 있습니다.

이러한 서버 그룹은 내부적으로 ‘이벤트 스토밍’을 진행 할 예정이고, 이를 통해 효율적으로 개선시킬 방안을 모색해보려합니다.

앞으로 개선되는 waiker 서비스의 많은 기대 부탁드립니다.
감사합니다.

--

--