타파스 시스템을 개발하는데 있어서 외부 제품군들을 사용하고 있다. 타파스(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 : 로그 관리 타파스에서 출력하는 모든 로그를 한...
여기는 타파스를 개발하면서 기록하는 곳이다.
타파스란 클라우드 환경에서 Kubernetes(k8s)를 활용한 주식 정보 시스템 이고, C 언어로 개발되고 있다.
예전에 개발된 소스를 들고 고객사에 나가서 작업을 하면 고객사마다 다른 OS와 환경으로 인해 몇일간은 소스 수정 작업을 해야만 했다. 또한 고객사 마다 소스관리를 따로 해야하는 번거로움도 있었다.
그래서 도커를 활용한 개발 방법으로 시작해 보려한다.
먼저, C 언어 개발을 위한 일관된 개발 환경을 구축하기 위해 도커(Docker)를 활용하여 빌드 이미지를 만드는 작업을 진행한다.
내가 사용하고 있는 Dockerfile로 타파스 개발에 필요한 빌드 이미지이다.
기본시스템은 우분투 18.04로 선택했다. 가벼운 리눅스가 있는데 c언어로 개발하면서 사용하는 라이브러리나, 툴 선택시 한계가 있음을 알았다.
필요한 패키지는 apt-get을 사용해서 설치를 했고, 필요한 라이브러리 hiredis, rabbitmq등은 git에서 받은후 cmake로 빌드후 설치를 했다.
또한 이미지를 만드는 환경에 라이브러리 폴더명이 다를수가 있어서 ln 심볼릭링크를 작성했다.
맥을 사용하는 입장에서는 aarch64-linux-gnu로 생성이 된다.
위의 도커파일로 빌드이미지를 만들기 위한 명령어이다.
이미지 생성까지 시간이 좀 걸린다.
위의 옵션중 --progress plain를 주면 작업내용이 화면에 출력이 되어서 확인하기 쉽다.
마지막 --push는 dockerhub에 push하기 위한 옵션이다.
여기까지 도커파일로 빌드하기 위한 나만의 빌드이미지 dayudev/tapas-build:1.0.1이 생성되었다.
댓글
댓글 쓰기