[NAVER Cloud X PseudoLab Green Developers] 주식투자 도우미 챗봇 개발기

정영상·2024년 5월 2일

Stockelper

목록 보기
1/2
post-thumbnail

가짜연구소 활동을 하면서 우연찮게 좋은 기회를 얻게 되어 프로젝트를 진행하게 되었습니다. 아래 내용들은 기획부터 시작하여 개발 중간 단계에 이르는 과정을 기술하며, 네이버 클라우드 서비스에서 각종 테스트를 통해 확인한 내용들을 포함합니다.

Stockelper 프로젝트 소개

📢 프로젝트 내용

  • 이 프로젝트는 전자공시시스템으로부터 제공받은 공시정보와 기타 금융 관련 정보들을 토대로 투자를 도와주는 챗봇을 LLM으로 제작하는 프로젝트입니다.
    • 전자공시시스템(DART)이란, 상장법인 등이 공시서류를 인터넷으로 제출하고, 투자자 등 이용자는 제출 즉시 인터넷을 통해 조회할 수 있도록 하는 종합적 기업공시 시스템인데요, DART로부터 API를 통해 해당 자료들을 제공받을 수 있습니다.
    • 전자공시시스템(DART) 오픈API를 통해 어떤 데이터를 제공받을 수 있을지 확인하실 수 있습니다.
  • 또한, 주식 투자에 영향을 미치는 기업 관련 뉴스데이터들을 수집 및 요약하여 챗봇의 답변에 활용할 수 있습니다.

📢 프로젝트 목적

  • 주식투자를 해보긴 했으나 매번 확신을 가지고 투자하지 못하는 초보자들을 위해 챗봇을 제작하고자 합니다.
  • 우리 프로젝트에서는 투자 초보자들에게 공시정보를 통해 얻은 투자지표와 산업 트렌드, 호악재 보도 등을 통해 종합적으로 투자 여부를 판단할 수 있도록 방향을 제시하고자 합니다.
  • 투자 조언에 대한 근거는 기업의 공시정보와 관련 보도자료를 통해 종합적으로 도출됩니다.
  • 전체 프로젝트 개발은 네이버클라우드로부터 제공되는 서비스를 통해 진행되며, 서비스 이용 요금은 지원받은 크레딧을 사용할 예정입니다.

📢 프로젝트 기간

  • 총 3개월
    • 약 4주 간 챗봇에 대한 기획 진행
    • 약 6주 간 기획 내용대로 개발 및 테스트
    • 이후 2주 간 보수 및 개선
  • 개발 기간은 추후 변경 가능하도록 합의
  • 현재 개발 3주차 진행 중

Stockelper 메뉴 구조도

  • 전체적인 메뉴 구조는 사이드바와 챗봇 대화창으로 나누어 세분화했습니다.
  • 사이드바에는 이전 대화 리스트와 유저의 정보를 입력할 수 있는 공간을 배치하여 유저 맞춤 시스템 프롬프트가 자동으로 작성될 수 있도록 합니다.
  • 챗봇 대화창에는 new chat 생성시 자주 묻는 질문을 통해 유저가 쉽게 이용할 수 있도록 가이드를 제공합니다.

Stockelper 와이어 프레임

  • 와이어 프레임은 우선 디자인을 고려하지 않은 채 기능 위주로 명세서를 작성했습니다.

  • 구체적인 기능 명세에 따라 프론트엔드를 구성했고 사이드바 확장과 같은 기능을 계속해서 개발중입니다.

Stockelper 정보 구조도

  • 위 메뉴구조도를 좀 더 확장하여 유저가 직접 접하는 내용들을 트리형 정보 구조도로 표현했습니다.

Ncloud 활용 서비스

시스템 아키텍처

  • 서버는 총 3개로 구성합니다. 자세한 서버 스펙은 아래에 설명을 참고하세요.
  • 각종 크롤링 결과들은 MongoDB에 저장될 수 있도록 합니다.
  • 챗봇 답변 생성은 OpenAI API를 통해 진행하고 전자공시정보와 각종 주가지수 등의 데이터는 외부 API를 통해 백엔드서버로 가져옵니다.
  • LLM 추론 컨테이너를 따로 구성하여 Document 컨테이너로부터 관련 내용을 검색하고 CLOVA Studio의 요약 등 기능을 활용해 답변할 수 있도록 합니다.
  • ACG 설정을 통해 서버 간 통신이 가능하도록 합니다.
  • 쿠버네티스를 설치하여 각 서버를 모니터링할 수 있도록 합니다.

서버 설정

서버 생성

  • Linux Server 생성 → 최소 2세대부터 지원

  • 공인 IP 신청 기능 제공
  • 서비스를 위해 공인 IP를 신청하고 ACG 설정

  • Linux 내부 서비스 생성 후 포트포워딩을 통한 서비스 기능 제공

서버 생성

  • [Standard] ubuntu-20.04
  • [s2-g2-s50] vCPU 2개, 메모리 8GB, [SSD]디스크 50GB [G2]
  • 서버는 총 3개로 구성되어 있으며, NAT Gateway와 Public IP 또한 신청

SSH 접속 테스트





접속 테스트 완료!

인프라 구축

  • CRI-O 설치
    • k8s 1.20 버전부터 dockershim에 대한 지원 미중단, 1.24 버전부터 docker container runtime 지원 미중단
    • Container Runtime으로 CRI-O 설치
  • K8s 설치
    • 일부 지역에서 gpg key 업데이트 과정에 이슈 발생 → k8s 정상적인 설치 불가능
    • 가장 최신 버전인 1.29 버전 설치
  • Docker 설치
    • 20.10.10 Version 설치 완료
  • K8s 인프라 구축
    • master node init
      • CNI - Flannel yaml
  • K9s (K8s monitoring tool)

    테스트 완료!

Ncloud 사용 후기

만족했던 점

  • 사용을 위한 각종 공식 문서들이 잘 정리되어 있었고 참고하기 좋았습니다.
  • 크레딧 사용 요금과 관련된 안내 및 업데이트 사항을 문자메시지로 받아볼 수 있어서 좋았습니다. 불필요한 지출을 막을 수 있었습니다.
  • 대시보드 UI가 한눈에 볼 수 있어 편리했습니다.
  • 서버 사용 정지나 반납 등이 자유로웠고 편했습니다.
  • 클러스터 초기 세팅 당시 방화벽 세팅에 미흡했으나, 네이버 클라우드에서 주기적인 알람을 통해 피해를 방지할 수 있었습니다.(~회 이상 ~시간 밴)

아쉬웠던 점

  • 가장 아쉬웠던 점은 아무래도 Ncloud 관련 커뮤니티가 많이 없다는 점이었고 사람들이 많이 이용하는 플랫폼과 차이가 있어 막히는 부분이 해소가 되지 않는 부분이 있었습니다.
  • 또한, 블로그 내용 등을 통한 참고사항들은 대략적인 방법은 알 수 있었으나, 개발 스타일에 맞춰 적용하려면 여러 번의 트러블슈팅을 해야만 했습니다.
  • 로컬환경과 다르게 클러스터를 구축하는 과정에서 지원하던 기능이 예상처럼 되지 않았습니다.




현재까지는 경험이 별로 없던 Ncloud의 사용에 대해 주로 학습하고 전체 기획 및 개발 시간 대비 서비스 테스트나 Ncloud 플랫폼에 대해 학습하는 비중이 높아 크레딧을 효율적으로 활용하진 못했지만, 각종 테스트를 통해 다시 인프라를 구축하더라도 무리가 없을 것으로 보입니다. 개발이 완료되면 다시 후기를 작성하도록 하겠습니다!

profile
일단 합니다

0개의 댓글