타파스 시스템을 개발하는데 있어서 외부 제품군들을 사용하고 있다. 타파스(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 : 로그 관리 타파스에서 출력하는 모든 로그를 한...
지난번에 만든 빌드이미지를 이용해서 타파스에 필요한 라이브러리 이미지를 만들려고 한다.
가장 기본이 되는 라이브러리 pflib(platform library)의 구조이다.
pflib ├── CMakeLists.txt ├── inc │ ├── pfchannel.h │ ├── pfcommon.h │ ├── pfconf.h │ ├── pffile.h │ ├── pfipc.h │ ├── pflib.h │ ├── pflog.h │ ├── pfstring.h │ └── pftime.h ├── pfchannel.c ├── pfcommon.c ├── pfconf.c ├── pffile.c ├── pfipc.c ├── pflib.c ├── pflog.c ├── pfstring.c └── pftime.c
| 소스 | 설명 |
|---|---|
| pfchannel.c | 스레드간 송수신 기능 |
| pfcommon.c | 공통 함수 |
| pfconf.c | config 파일을 다루는 기능 |
| pffile.c | 파일에 관련된 기능 |
| pfipc.c | 메세지큐, 공통메모리 관련 기능 |
| pflib.c | 여러개의 pflib를 모아둠 |
| pflog.c | 로그 관련 기능 |
| pfstring.c | 스트링 관련 기능 |
| pftime.c | 날짜/시간에 관련 기능 |
pflib를 활용한 aplib(application library)의 구조이다.
aplib
├── CMakeLists.txt
├── apcommon.c
├── apipc.c
├── apkafka.c
├── aplog.c
├── apmongo.c
├── apmsg_broker.c
├── aprabbit.c
├── apredis-cluster.c
├── apredis.c
├── apringbuf.c
├── apserverbuf.c
├── apsocksvr.c
├── apsql.c
├── apudp.c
├── apudp_multicast.c
├── apzmq.c
└── inc
├── apcommon.h
├── apipc.h
├── apkafka.h
├── aplog.h
├── apmongo.h
├── apmsg_broker.h
├── aprabbit.h
├── apredis-cluster.h
├── apredis.h
├── apringbuf.h
├── apserverbuf.h
├── apsocksvr.h
├── apsql.h
├── apudp.h
├── apudp_multicast.h
└── apzmq.h
| 소스 | 설명 |
|---|---|
| apcommon.c | 공통 함수 |
| apipc.c | 메세지큐, 공통메모리 관련 기능 |
| apkafka.c | 카푸카 producer/consumer 기능 |
| aplog.c | 로그 관련 기능 |
| apmongo.c | MongoDB 기능 |
| apmsg_broker.c | kafka/rabbitmq를 옵션에 따라 사용 |
| aprabbit.c | Rabbitmq 기능 |
| apredis-cluster.c | Redis Cluster 기능 |
| apredis.c | Redis 기능 |
| apringbuf.c | 링버퍼를 구현 |
| apserverbuf.c | apsocksvr(웹-소켓)에서 사용하는 버퍼형태 |
| apsocksvr.c | 소켓/웹소켓 서버를 구현 |
| apsql.c | MySql, Postgres를 구현 |
| apudp.c | UDP 관련 |
| apudp_multicast.c | UDP Multicast 관련 |
| apzmq.c | ZeroMQ 기능 |
개발을 진행하면서 라이브러리 추가/수정이 계속해서 이루어진다.
pflib/aplib를 이용한 tapas-lib 이미지를 생성한다.
댓글
댓글 쓰기