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 서비스의 많은 기대 부탁드립니다.
감사합니다.