안녕하세요! NCloud 크레딧을 지원받아 진행하는 주식투자 도우미 챗봇 프로젝트: Stockelper 포스팅이 찾아왔습니다. 이번 포스팅에서는 1차 프로젝트가 마무리된지 약 3개월이 지난 시점에서 진행과정 및 1차 마무리에 대한 내용을 작성하고자 합니다. 기획부터 개발까지 함께하는 프로젝트이다보니 1편과 비교하여 기획에서도 많은 변화가 있었고, 크고 작은 변화를 적용하고 테스트하면서 성장할 수 있었습니다.
Stockelper 프로젝트 개요
📢 프로젝트 배경
- 이 프로젝트는 전자공시시스템으로부터 제공받은 공시정보와 기타 금융 관련 정보들을 토대로 투자를 도와주는 챗봇을 LLM으로 제작하는 프로젝트입니다.
- 전자공시시스템(DART)이란, 상장법인 등이 공시서류를 인터넷으로 제출하고, 투자자 등 이용자는 제출 즉시 인터넷을 통해 조회할 수 있도록 하는 종합적 기업공시 시스템인데요, DART로부터 API를 통해 해당 자료들을 제공받을 수 있습니다.
- 또한, 주식 투자에 영향을 미치는 기업 관련 뉴스데이터들을 수집 및 요약하여 챗봇의 답변에 활용할 수 있습니다.
- (추가내용) 본 프로젝트에서는 DART API 데이터와 뉴스데이터 이외에 한국투자증권 KIS 오픈API를 사용하여 주가정보를 활용하고, 각종 증권사리포트요약 데이터 등을 추가로 활용했습니다.
📢 프로젝트 목적
- 주식투자를 해보긴 했으나 매번 확신을 가지고 투자하지 못하는 초보자들을 위해 챗봇을 제작하고자 합니다.
- 우리 프로젝트에서는 투자 초보자들에게 공시정보를 통해 얻은 투자지표와 산업 트렌드, 호악재 보도 등을 통해 종합적으로 투자 여부를 판단할 수 있도록 방향을 제시하고자 합니다.
- 투자 조언에 대한 근거는 기업의 공시정보와 관련 보도자료를 통해 종합적으로 도출됩니다.
- 전체 프로젝트 개발은 네이버클라우드로부터 제공되는 서비스를 통해 진행되며, 서비스 이용 요금은 지원받은 크레딧을 사용하여 진행했습니다.
📢 프로젝트 기간
총 3개월 약 15주 소요
약 4주 간 챗봇에 대한 기획 진행 개발 기간에도 일정 등을 고려하여 기획을 수정
약 6주 간 기획 내용대로 개발 및 테스트 실제 개발 기간 약 8주 소요
이후 2주 간 보수 및 개선 개발 기간 연장으로 인해 따로 디벨롭은 하지 않았습니다.
📢 팀 구성 및 역할 분담
- 최종 팀 인원 : 5명
- LLM 파이프라인 구성 & 팀 리딩 1명
- RAG VectorDB 데이터 수집 1명
- 클라우드 엔지니어링 & 네트워크 1명
- 백엔드 & 서비스 배포 1명
- 프론트엔드 & 디자인 1명
개발 과정
개발 기록
- 아래 링크에 프로젝트 기간 동안의 회의록과 개발 내용들이 수록되어 있습니다.
- 매주 화요일마다 온라인 회의를 통해 한 주간 진행 상황을 공유하고 방향을 잡아나갔습니다.
- 작업 내용은 게시글로, 일정 관리는 TODO 리스트를 만들어 카드 형태로 관리했습니다.
최종 시스템 아키텍쳐

주요 특징
- Ncloud 서비스를 활용하였고, 총 3대의 VPC를 활용(Bastion, Backend+Frontend, LLM 서버)
- 지원 받은 크레딧으로는 GPU 서버를 활용할 수 없었고, 외부 서버를 활용하려 했으나 네트워크 및 쿠버네티스 이슈 발생하여 문서 검색 증강 생성시 CPU 사용
- 외부 데이터로는 뉴스 데이터, 증권가 리포트 요약 데이터, DART API, 한국투자증권 API 사용
- LLM은 OpenAI ChatGPT 사용(4o-mini 출시 이전 gpt-3.5-turbo 사용)
- CLOVA Studio에서 제공하는 문서 요약 서비스를 사용하여 뉴스 데이터를 요약
클라우드 리소스 및 네트워크 리소스
- 외부 도메인 등록에 의한 Network Resources에 Global DNS, Certificate Manager 요소 추가
- ALB Ingress Controller : Stockelper Application Deployment를 위한 Ingress Controller
- File System : 유동적인 Pod별 Storage Management 작업을 위한 NFS Provisioning System
- Bastion Server : 공인 ip를 통한 클러스터 외부 노출 방지, 개발 결과물 배포 테스트를 위한 Docker, NFS Provisioning Master Node 운용, Kubeconfig를 통한 K8s Cluster Controller
- Network Resources
- LoadBalancer : 특정 주소가 서비스에 과도하게 몰릴 경우를 대비한 LoadBalancer + 도메인 연동 작업 수행
- VPC : Server의 ACG 설정을 통한 통신 및 보안 역할 수행
- NAT Gateway : 외부 사설 IP의 접근을 공인 IP화 하여 연결해주는 서비스 + Subnet 네트워크 접근 시 IP 주소/포트 기반 필터링 기능 역할을 수행하는 NACL과 직접적인 상호작용
- Global DNS : 외부 도메인 ↔ 로드밸런서 연결 및 Certificate DNS 인증
- Certificate Manager : https 연결에 필요한 SSL 인증서 발급
VPC 네트워크

VPC
- VPC(Virtual Private Cloud)란?
 |
|---|
| VPC 생성 결과 |
Subnet
- VPC 네트워크를 분리 → 목적에 맞게끔 대역폭 할당 관리 가능
 |
|---|
| Subnet 할당 결과 |
Network ACL
- Subnet 네트워크 접근 시 IP 주소/포트 기반 필터링 기능 ⇒ Subnet에 대한 네트워크 보완 관리 가능한 서비스
 |
|---|
| Network ACL 서비스 |
NAT(Network Address Translation) Gateway
- 외부 사설 IP의 접근을 공인 IP화하여 연결해주는 서비스
- NAT Gateway Subnet 생성시 자동으로 생성
 |
|---|
| NAT Gateway 서비스 상세 정보 |
 |
|---|
| NAT Gateway 서비스 라우트 정보 |
Route Table
- VPC Subnet에 Route Table 연결을 통해 네트워크 경로 제어
- Subnet 생성시 일반 Subnet을 생성하게 될 경우 자동으로 default route table 생성
- Route Table → 0.0.0.0/0 NATGW Inbound Route 추가를 통해 외부 인터넷 연결 설정 (Docker image pull 외 다수 작업 필요)
 |
|---|
| Route Table private/public |
 |
|---|
| Route Table private 상세 내용 |
 |
|---|
| Route Table public 상세 내용 |
NCloud Server ACG
- ACG(Access Control Group)는 서버 간 네트워크의 접근을 제어하고 관리할 수 있는 IP/Port 기반 필터링 방화벽 서비스
- ACG를 이용하면 기존 방화벽(iptables, ufw, Windows 방화벽)을 개별적으로 관리할 필요 없이 서버 그룹에 대한 ACG 규칙을 손쉽게 설정하고 관리할 수 있음
- 네이버 클라우드 플랫폼에서 기본으로 제공하는 ACG를 사용하거나 직접 생성한 ACG에 규칙을 설정해서 사용할 수 있음
 |
|---|
| ACG Inbound/Outbound |
 |
|---|
| ACG 상세 규칙 1 |
 |
|---|
| ACG 상세 규칙 2 |
 |
|---|
| ACG 상세 규칙 3 |
서비스 파이프라인
 |
|---|
| 서비스 파이프라인 |
주요 특징
- 사용자 쿼리 입력시 rewrite 과정을 통해 생략된 내용을 추론하도록 함
- 사용자 쿼리 기반으로 어떤 tool을 사용할 것인지 observation -> thought를 통해 reasoning
- 추론 결과와 tool description을 토대로 action을 생성하여 tool을 결정
- 결정된 tool 함수를 통해 각 기능 수행
- 기능 수행을 통한 데이터와 유저의 쿼리를 기반으로 RAG 수행 -> 답변 생성
 |
|---|
| 서비스 파이프라인 상세 |
주요 기능
- 주식 분석
- 한국투자증권 Open API를 활용한 주식 분석을 텍스트 형태로 제공합니다.
- 종목 관련 뉴스 제공
- 종목과 관련된 최신 뉴스를 종합하여 텍스트 형태로 제공하고, 원본 뉴스 페이지로 이동할 수 있는 뉴스카드를 제공합니다.
- 종목 뉴스 수집 시 1500자가 넘어가는 경우 CLOVA Summary를 사용하여 요약한 채로 저장했습니다.
- 재무제표 분석
- DART Open API를 이용한 재무제표 분석 내용을 텍스트 형태로 제공합니다.
- 투자 전략 및 방법
- 한국은행 및 한국거래소에서 발행한 투자 관련 문서들을 임베딩화하여 벡터DB에 저장하고 쿼리와 관련된 문서를 검색 및 활용하여 텍스트 형태로 답변을 제공합니다.
- 증권가 분석 리포트
- 컴퍼니 가이드의 증권가 분석 요약리포트를 활용하여 벡터DB에 저장하고 쿼리와 관련된 문서를 검색 및 활용하여 텍스트 형태로 답변을 제공합니다.
개발 결과물
Login
 |
|---|
| 로그인 화면 |
 |
|---|
| 로그인 화면 |
 |
|---|
| 로그인 화면 |
주식 분석
 |
|---|
| 주식 분석 결과 |
 |
|---|
| 주식 분석 결과 |
종목 관련 뉴스 제공
 |
|---|
| 종목 관련 뉴스 제공 결과 |
재무제표 분석
 |
|---|
| 재무제표 분석 결과 |
투자 전략 및 방법
 |
|---|
| 투자 전략 및 방법 답변 생성 결과 |
증권가 분석 리포트
 |
|---|
| 증권가 분석 리포트 결과 제공 |
회고
NAVER Cloud
- 네이버클라우드 크레딧을 지원받아 프로젝트를 진행하면서 클라우드 환경 경험을 쌓을 수 있었고, 사용량을 측정하면서 자원 배분을 효율적으로 하는 방법에 대해서도 배울 수 있었습니다.
- 다만, VPC 내에서 쿠버네티스 등의 서비스를 직접 구현하는 것은 다소 어려움이 있었습니다. 이 부분은 클라우드에서 직접 지원하는 서비스를 이용했을 때 문제를 해결할 수 있었습니다.
프로젝트 기획 및 개발 참여
- 프로젝트 진행하는 팀원들과 함께 기획을 하고 개발하는 과정에서 한 차례 사이클을 경험해볼 수 있었습니다.
- 이후 유사한 프로젝트를 진행하더라도 경험을 살려 문제를 해결할 수 있을 것 같습니다.
- LLM을 활용한 서비스 개발에 참여함으로써 좀 더 다양한 곳에도 활용할 수 있을 것 같다는 자신이 생겼습니다.
향후 계획
- 프론트엔드 및 백엔드 연결 과정에서 발생하는 여러 이슈를 해결해야 합니다.
- 각 도구 별 역할을 재정의하고 답변 출력 방식에 대한 수정이 필요합니다.
- 답변 내용을 토대로 유저가 투자 정보를 얻고 지식을 확장해 나갈 수 있도록 예상 시나리오를 사전에 정의하여 알맞은 대화를 이어나갈 수 있도록 수정할 계획입니다.