타파스 시스템을 개발하는데 있어서 외부 제품군들을 사용하고 있다.
타파스(TAPAS)는 클라우드 환경에서 마이크로서비스(Microservices) 형태로 운영되는 시스템으로, 다양한 금융 데이터를 실시간으로 처리하고 관리하는 데 최적화되어 있다. 이 과정에서 높은 성능과 확장성을 보장하기 위해 여러 가지 인프라 및 제품을 활용한다.
클라우드 환경에서 동작하는 제품군을 대상으로 한다. c언어의 라이브러리 형태는 여기서 제외한다.
1. 도커/쿠버네티스(k8s) : 타파스 시스템 관리
타파스는 클라우드환경에서 마이크로서비스로 운용되는 시스템이다. 도커를 활용한 이미지를 만들고 k8s에서 운용된다.
좀더 자세한 내용은 도커와 쿠버네티스를 활용한 C 언어 개발 환경 구축(1)(2)에서 기술했다.
2. 메세지브로커 : 서비스간 통신
메세지 브로커는 마이크로서비스 사이의 통신(송/수신) 기능을 담당한다.
타파스에서는 여러 메세지브로커 가운데 RabbitMQ, Kakfa를 사용한다.
이제품군에 대한 설명, 장단점은 생략한다.
| 수신처 | 브로커 | 송신처 |
|---|---|---|
| 클라이언트 요청 | RabbitMQ/Kafka | 요청처리 서비스 |
| 요청처리 응답 | RabbtMQ/Kafka | 클라이언트 응답 |
| 실시간 처리 | RabbitMQ/Kafka | 클라이언트 전송 |
3. Redis-Cluster : 실시간 시세 데이터 저장소
Redis Cluster는 주식 시세 데이터를 실시간으로 저장하고 관리하는 역할을 한다. 주로 당일 시세데이타를 저장하고 클라이언트의 조회 요청에 사용된다.
4. 관계형 데이터베이스(RDBMS) : 시세 데이터 영구 저장
데이타베이스는 시세 데이터의 히스토리성 데이타를 장기 보관하고, 관리하는 역활을 한다.
타파스에서는 PostgreSQL, MySQL를 사용한다. 당일/일자별 시세데이타 보관, 관리한다.
5. FluentBit-ELK : 로그 관리
타파스에서 출력하는 모든 로그를 한곳에서 관리/운영하기 위해서 Fluent-Bit -> ELK(Elasticsearch-Logstash-Kibana)를 사용한다.
타파스에서 로그를 사용하는 방법은 타파스 로그 정리에서 자세히 기술했다.
결론
타파스에서는 위에 기술한 제품군을 사용하고 있다.
혹시 이글을 읽으시는 분이 이런 의문을 가질지도 모르겠다. 왜 이 제품을 선택했지?
타파스 개발을 진행하면서 여러 제품군을 내 나름대로 테스트를 진행했다. 내가 개발하는 사상과 적합한가? 성능은 좋은가? 등...
역시 정답은 없는것 같다. 어쩌면 위에 기술한 제품군 보다 더 좋은 제품이 있을 수 도 있고, 나 역시 개발해 나가면서 다른 제품군으로 대체할 수 도 있다.
각자에 맞는 환경에 맞는 제품을 선택하면 될 것 같다.
댓글
댓글 쓰기