1. 배경(Problem)
주식 시장이 열리는 오전 9시부터 오후 4시까지,
수많은 사용자가 동시에 접속하면서 트래픽이 몰려 데이터 반영이 지연되는 상황이 자주 발생할 것이라고 생각했습니다.
그때 이런 질문을 던지게 됐습니다.
“왜 주식 정보 하나 보는데 이렇게 번거로워야 하지?”
정보가 넘쳐 나는 시대지만,
신뢰할 수 있고, 빠르고, 한눈에 보여주는 서비스는 쉽게 찾아보기 어렵다고 느꼈습니다.
우리는 이러한 불편함을 해결할 수 있는 방법을 고민하게 되었습니다.
단순히 서비스만 만드는 데 그치지 않고,
을 목표로 누구나 쉽고 빠르게 주식 정보를 확인할 수 있도록 했습니다.
“고객과 엔지니어 모두에게 효율적인, 주식 시세 조회 서비스”
그 시작이 바로 우리의 SHOOTOCK 입니다.
SHOOTOCK은 다음과 같은 가치를 제공합니다.
2. 서비스 소개(Solution)
"슈탁(SHOOTOCK)" 은 주식 정보 확인의 불편함을 없애기 위해, 빠르고 직관적으로 실시간 주식 데이터 조회를 제공하는 서비스입니다.
서비스 주요 기능
•
•
•
•
인기 급상승 Top10
주식 시장에서 거래량과 등락률이 급등하고 있는 인기 종목 상위 10개를 실시간으로 보여줍니다.
사용자는 별도의 검색 없이도 현재 시장에서 주목받고 있는 종목을 한눈에 확인할 수 있습니다.
키워드 검색 결과
종목명을 입력하면 해당 키워드가 포함된 종목들의 정보를 실시간으로 검색하여 제공합니다.
특히 등락률, 거래량, 현재가를 함께 제공하여, 사용자가 관심 종목의 흐름을 빠르게 파악할 수 있습니다.
종목별 실시간 체결 정보
선택한 종목의 가장 최근 체결된 거래 내역을 확인할 수 있습니다.
체결가, 체결량, 등락률, 체결 시간 등 초 단위의 데이터를 제공하여 시장의 흐름을 실시간으로 파악할 수 있도록 돕습니다.
종목별 일별 시세 데이터
종목별로 일별 종가, 등락률, 거래량, 시가, 고가, 저가를 한눈에 확인할 수 있습니다.
일별로 어떤 흐름으로 주가가 변화했는지 파악할 수 있으며 투자 판단에 필요한 기초 데이터로 활용할 수 있습니다.
3. 아키텍처 및 핵심 기능
1) 프론트엔드 & 백엔드
AWS EKS 내 배포
•
Frontend Pods
◦
React 기반 프론트엔드 애플리케이션
◦
Kubernetes Pod 단위로 배포되어 자동 확장 및 관리됨
•
Backend Pods
◦
Spring Boot로 작성된 API 서버
◦
실시간 데이터 처리 및 Kafka, Redis, RDS 등과 통신
2) 서비스 디스커버리 & 트래픽 라우팅
AWS EKS 내 배포
•
Frontend Service / Backend Service
◦
각각의 Pods에 대한 접근을 Ingress를 통한 ClusterIP 형태로 라우팅
•
Ingress Controller
◦
외부 트래픽을 클러스터 내부의 서비스로 라우팅
◦
도메인 기반 트래픽 분기 처리
3) 클라우드 인프라
•
AWS EKS (Elastic Kubernetes Service)
◦
AWS에서 관리형 Kubernetes 클러스터 제공
◦
프론트엔드, 백엔드, Redis, Kafka 등 모든 워크로드 실행
•
Docker Hub
◦
프론트엔드/백엔드 애플리케이션 컨테이너 이미지를 저장
4) CI/CD 파이프라인
•
GitHub Actions
◦
코드 커밋 → 빌드 → Docker 이미지 생성 → Docker Hub에 푸시
•
ArgoCD
◦
GitOps 방식으로 Kubernetes 클러스터에 자동 배포
◦
Git 저장소와 동기화하여 실시간 배포 상태 유지
•
Kustomize
◦
환경별 설정 분리 및 관리 (dev, prod 등)
5) 인증 및 보안
•
AWS Certificate Manager
◦
TLS 인증서를 관리하여 HTTPS 제공
•
AWS Secrets Manager
◦
RDS 접근정보, 한국투자증권 API Key등 민감한 정보 저장 및 제공
6) 데이터 저장소 및 메시지 브로커
•
Redis (Master + Replication)
◦
캐시, 실시간 데이터 저장소로 활용
◦
고가용성을 위한 Replication 구성
•
Kafka Cluster (Broker 1, 2, 3)
◦
분산형 스트리밍 플랫폼
◦
대량의 실시간 체결 데이터를 안정적이고 실시간으로 처리 가능
7) 외부 연동
•
한국투자증권 (외부 API)
◦
주식 정보, 실시간 체결 시세 등 외부 데이터 연동
데이터 흐름 요약
1.
사용자가 웹 브라우저에서 요청
2.
Ingress Controller를 통해 요청이 프론트엔드로 전달
3.
프론트엔드는 API 요청을 백엔드로 전달
4.
실시간 데이터 처리 필요 시 외부 API (한국투자증권)를 이용하여 Redis와 Kafka를 통해 데이터 처리
5.
일별 데이터 필요 시 RDS를 통해 데이터 처리
6.
최종 결과를 프론트엔드에 반환
7.
모든 구성요소는 GitHub Actions + ArgoCD로 자동화 배포됨
4. 활용 라이브러리 및 개발 환경
어떻게 활용했는지 & 왜 선택했는지 중심
서비스
[Front] React
•
실시간 주식 조회 서비스 특성 상 동적 렌더링 필요
•
다양한 레퍼런스 참고 가능
[Back] SpringBoot
•
대규모의 데이터를 다루기 때문에 멀티스레드 기반의 고성능 처리 필요
[Message Queue] Kafka
•
실시간 데이터를 SpringBoot에서 즉시 처리하는 경우 서버 부하 발생
•
Message Queue에 데이터에 저장한 후 메세지를 순차적으로 소비해 서버 부하 분산 및 데이터 누락 방지 목적
•
필요한 모든 데이터는 Kafka를 거친 후 처리
[API] 한국투자증권 API
•
실시간 주식 체결 데이터 → websocket을 통해 처리
•
종목별 일별 시세 데이터, 순위 데이터 → HTTP API를 통해 처리
배포 환경
[Infra] AWS EKS
•
다양한 Kubernetes 네이티브 도구 활용 가능해 높은 배포 유연성
◦
Helm, ArgoCD, Kustomize 적용
•
Ingress 리소스를 통한 유연한 트래픽 제어 가능
[DB] RDS
•
한국투자증권 API를 통해 가져오는 데이터 저장
•
e.g. 한국투자증권 API 정보, 주식 이름, 주식 아이디, 체결량 기준 주식 랭킹 순위
[DB] Redis
•
한국투자증권 API 웹소켓을 통해 가져오는 실시간 데이터 저장
•
e.g. 실시간 주식 체결 데이터
[자동화] Terraform
•
인프라를 코드로 정의하여 서비스 운영 및 배포, 유지보수 자동화
•
인프라 자동화를 통해 휴먼 에러 방지 및 운영 효율성 향상
•
형상 관리 가능
[자동화] Ansible
•
서버에 필요한 설정 자동화
•
자동화를 통해 휴먼 에러 방지
•
추후 서버 증설을 가정해 확장성과 유지 보수에 유리
[CICD] GitHub Actions
•
코드 변경 사항 감지 후 자동으로 빌드 및 푸시하는 CI 파이프라인 구축
•
Git과 직접적인 연동이 가능해 코드 관리에 유리
[CICD] Kustomize
•
GitHub Actions에서 새로운 코드 태그가 생성되면 이를 감지해 ArgoCD가 인지할 수 있도록 함
•
ArgoCD와 통합하여 GitOps 방식으로의 손쉬운 배포 가능
[CICD] ArgoCD
•
AWS EKS와 GitHub 코드를 주기적으로 비교해 변경 사항 감지 시 자동으로 동기화
•
GitOps 기반의 자동 배포 가능 및 실시간 상태 동기화 가능
⇒ 전반적으로 프로젝트 주제인 “클라우드 운영 자동화”에 초점을 두어 아키텍처를 설계했으며, 서비스에 맞는 적절한 기술을 선택하려 노력했습니다.
5. 트러블 슈팅
6. 팀 소개
나보영
nabo2000@naver.com
류경표
kyongpyo0626@gmail.com
박서연
psy0201123@gmail.com
김연희
qkfh559@gmail.com
전재열
woduf1020@gmail.com