[코윙] 모의 코인투자 서비스

과정
클라우드
노출 페이지
대표 이미지
대표이미지
서비스 한 줄 소개
암호화폐 모의투자 서비스, 코윙!
회차
3회차
5 more properties

배경(Problem)

[암호화폐 투자의 높은 진입 장벽과 학습 환경의 필요성]
최근 몇 년간 암호화폐 시장은 전 세계적으로 급속한 성장을 보이고 있습니다. 특히 국내에서는 개인 투자자들의 참여가 크게 증가하여, 주요 암호화폐 거래소 서비스 이용자 수가 1,000만 명에 육박할 정도로 관심이 높아졌습니다. 이러한 성장세는 앞으로도 지속될 것으로 예상되며, 2024년부터 2025년까지 시장 규모가 더욱 확대될 전망입니다.
하지만 암호화폐 투자에 대한 높은 관심에도 불구하고, 일반 투자자들에게는 여전히 상당한 진입 장벽이 존재합니다. 서울대 소비자학과 연구팀의 분석 결과에 따르면, 많은 투자자들이 정보 비대칭 문제에 직면하고 있으며, 충분히 다변화되지 않은 포트폴리오로 투자하는 경향을 보입니다. 더욱 중요한 점은 투자 동기 중 '학습'이 포함되어 있음에도 불구하고, 실제 자산 손실로 이어지는 경우가 빈번하다는 것입니다.
[안전한 학습 환경의 필요성]
이러한 문제를 해결하기 위해서는 금전적 손실 없이 암호화폐 투자를 안전하게 학습할 수 있는 환경이 필요합니다. 실제 시장과 동일한 조건에서 투자 전략을 실험하고, 시행착오를 통해 경험을 쌓을 수 있는 모의투자 플랫폼이 바로 그 해답입니다.
코윙(CoWing) 암호화폐 모의투자 서비스는 이러한 시장의 요구에 응답하여 탄생했습니다. 실제 거래소의 실시간 데이터를 활용하여 현실과 유사한 투자 환경을 제공하면서도, 사용자들이 리스크 없이 다양한 투자 전략을 시도해볼 수 있도록 설계되었습니다.

서비스 소개(Solution)

1차 프로젝트 시연 영상 - 전체 서비스 동작 영상

[코윙(CoWing) MSA 구성]

1. 회원 관리 서비스 (msa-auth)
역할: 사용자 인증 및 계정 관리
회원가입/로그인 시스템
JWT 기반 토큰 인증
포트폴리오 및 자산 조회
파산 기능 (포트폴리오 초기화)
계정 탈퇴 및 정보 수정
2. 매매 관리 서비스 (msa-trading)
역할: 주문 처리 및 체결 관리
시장가/지정가 주문 처리
부분체결 지원
주문 취소 및 미체결 관리
실시간 체결 내역 제공
잔액 검증 및 거래 무결성 보장
3. 실시간 시세 수집 서비스 (msa-orderbook)
역할: 외부 거래소 데이터 수집
WebSocket 기반 실시간 호가 데이터 수집
티커, 체결 정보 실시간 업데이트
Redis 기반 데이터 캐싱
자동 재연결 및 데이터 일관성 보장
4. 브로드캐스팅 서비스 (msa-broadcasting)
역할: 실시간 데이터 전송
다중 클라이언트 WebSocket 연결 관리
실시간 마켓 데이터 브로드캐스트
5. 프론트엔드 (msa-front)
역할: 사용자 인터페이스 제공
React 18 + TypeScript 기반
실시간 차트 (Chart.js 활용)
반응형 디자인
직관적인 거래 인터페이스

[페이지별 상세 설명]

거래소 페이지
실시간 차트: 3분봉, 15분봉, 30분봉 차트 제공
호가 창: 실시간 매수/매도 호가 표시
주문 기능: 시장가/지정가 주문 지원
체결 내역: 실시간 거래 체결 정보
포트폴리오 관리
보유 자산: 코인별 수량 및 평가금액
손익 현황: 기간별 누적 손익률 표시
자산 배분: 시각적 포트폴리오 구성 차트
투자 내역
거래 이력: 전체 매매 내역 조회
필터링: 날짜, 코인별 검색 기능
미체결 관리: 대기 중인 주문 취소 기능

2차 프로젝트 시연 영상 - GitOps 시연 영상

[GitOps 워크플로우]

1.
개발자 커밋 → Git Repository (main/prod 브랜치)
2.
GitHub Actions → 컨테이너 이미지 빌드 및 Registry Push
3.
ArgoCD → Git Repository 변경 감지
4.
자동 배포 → EKS 클러스터에 애플리케이션 배포
5.
상태 모니터링 → ArgoCD 대시보드를 통한 실시간 배포 상태 확인

[Git Branch 전략]

GitHub Flow (1-2명 담당 서비스)
대상: 거래 엔진, 웹소켓 중개 서버, 거래 호가 갱신, 사용자 관리
특징: main 브랜치 중심의 단순한 배포
배포 트리거: main 브랜치 Push 시 즉시 배포
Git Flow (3명 이상 담당 서비스)
대상: 프론트엔드
특징: develop, feature, release, hotfix 브랜치 활용
배포 트리거: release 브랜치 → main 병합 시 배포

3차 프로젝트 시연 영상 - 오토스케일링 시연 영상

[오토스케일링 전략]

1. Horizontal Pod Autoscaler (HPA)
메트릭 기반: CPU 사용률, 메모리 사용률, 커스텀 메트릭
타겟 설정: CPU 70%, 메모리 80% 기준
스케일링 범위: 최소 2개 → 최대 10개 Pod
적용 서비스: 모든 마이크로서비스
2. Cluster Autoscaler
노드 레벨 스케일링
동작 원리: Pod 스케줄링 실패 시 자동으로 노드 추가
스케일 다운: 리소스 사용률 낮을 때 노드 제거
비용 최적화: 필요한 만큼만 인프라 사용

아키텍처 및 핵심 기능

[AWS 인프라 아키텍처]

[실시간 시세 데이터 플로우]
외부 거래소 API → msa-broadcasting → msa-orderbook → Redis → msa-trading 외부 거래소 API → msa-broadcasting → msa-front
Plain Text
복사
[거래 주문 처리 플로우]
사용자 주문 → msa-front → msa-trading → 잔액검증(msa-auth) → SQS → 체결처리 → 결과반환
Plain Text
복사
[사용자 인증 플로우]
로그인 요청 → msa-auth → JWT 토큰 발급 → 모든 API 요청에 토큰 검증
Plain Text
복사

[CI/CD 아키텍처]

[IaC 아키텍처]

배포 환경(AWS)
로컬 개발 환경

활용 라이브러리 및 개발 환경

[기술 스택 상세]
1. 백엔드
프레임워크: Spring Boot 3.x
언어: Java 21, Go
데이터베이스: MySQL 8.0, Redis 6.0
메시징: Apache Kafka
인증: JWT 토큰
2. 프론트엔드
프레임워크: NextJS 14(React 18)
언어: TypeScript
차트: Chart.js
통신: WebSocket, REST API
3. 인프라 및 운영
컨테이너: Docker, Kubernetes (EKS)
IaC: Terraform, Ansible, Vagrant
CI/CD: GitHub Actions, ArgoCD
모니터링: Grafana, Prometheus
백업: Velero, AWS Backup

트러블 슈팅

[문제해결 사례 #1 - 테라폼 마이그레이션]

문제 상황
AWS Console 를 사용해 구성된 클라우드 인프라 아키텍처를 책임지고 Terraform 코드로 마이그레이션 해야하는 상황이였습니다.
문제 정의
기존의 클라우드 환경과 완벽하게 동일한 상태이면서도, Terraform 으로 마이그레이션 해야했습니다.
해결 과정
1. AWS → Terraform 마이그레이션을 위해 GCP에서 개발한 오픈소스인 ‘Terraformer’에 대해 학습
2. Terraformer 를 사용해서 현 인프라 상태에 대한 Terraform 코드를 확보했지만, 적절하지 않은 크기로 모듈화가 되어있는 등 각종 문제 지점들이 발견
3. 처음부터 다시 Terraform 코드를 작성하되, 변환한 인프라 상태 코드를 참고해 동일한 환경으로 모든 인프라 리소스를 모듈화하는 데 성공
개선 결과
오픈소스와 Terraform 공식 문서, Best Practice 들을 적절히 활용해 성공적으로 마이그레이션을 할 수 있었습니다.

[문제해결 사례 #2 - 비용 개선]

문제 상황
3개월동안 약 50만원의 AWS 비용만 사용할 수 있는 탓에 EKS로 프로젝트를 진행하기 위해서는 비용이 부족한 상황이였습니다.
문제 정의
한정된 예산 내에서 AWS 인프라 환경을 운영 및 배포해야 했습니다.
해결 과정
1. AWS Cost Explorer 및 Billing 사이트를 참고해 주요 비용 과금 서비스를 분석 → 결과: EKS(Control Plane, Node Group), VPC Endpoints
2. 개발 코어타임(평일 오후 1시-6시) 지정 후 Terraform과 Bash Shell Script를 활용하여 주요 과금 인프라에 한해서 구성, 삭제 스케줄링을 자동화
코어타임 지정 근거: AWS 계산기를 활용한 비용 예측
개선 결과
50만원이라는 한정된 예산으로 인해 지금까지 교육생들의 평균 EKS 운영기간이 2-3주인 것에 비해 우리 팀은 5-6주 간 운영할 수 있었으며, 더 나아가 비상 상황을 고려한 비용(10%)도 확보한 채 프로젝트를 마무리 지을 수 있었습니다. 또한, 기존 하루 운영 비용 약 20$ → 2~3$ 수준으로 비용을 절약할 수 있었습니다.

[문제해결 사례 #3 - 보안성 강화]

문제 상황
프로젝트 중 7월 14일에 SGI서울보증보험의 보안 침해사고 뉴스 건을 접하게 됐습니다. 추가적인 조사를 통해 해당 보안 취약점이 코윙 프로젝트에서도 성립 가능성이 있음을 식별했습니다.
문제 정의
비밀번호 기반 SSH를 통한 Bastion Host(점프 서버) 연결 방법을 탈피하고 새로운 연결 방법 관리가 요구됐습니다.
해결 과정
1. 외부 공격 표면 자체를 보호할 수 있는 다른 보안 방법이 있는지 조사 → AWS 공식 문서 내에서 솔루션 확인
2. 공식 문서에서는 IAM 설정, EC2 Instance Connect 설정, VPC Endpoints 구성, Session Manager 설정, Bastion Host의 Public Subnet → Private Subnet 이전, Security Group을 설정 요구 → 구현 완료
개선 결과
Bastion Host를 Private Subnet으로 이전해 외부 공격 표면 자체를 없애서 보안성을 강화할 수 있었습니다.

팀 소개

[팀명의 유래]

코윙(CoWing)이라는 팀명은 "Coin"와 "Wing"을 결합한 이름입니다.
변동성 높은 코인 시장에서 투자자들이 안전하게 날아오를 수 있는 '날개'를 제공하고자 하는 의미를 담았습니다.
실제 자금 손실의 위험 없이 투자 경험을 쌓을 수 있는 모의투자 플랫폼을 통해, 마치 비행을 배우는 조종사가 시뮬레이터에서 안전하게 연습하듯이, 투자자들이 암호화폐 시장에서 자신만의 투자 전략을 개발하고 성장할 수 있도록 돕고자 했습니다.

[팀 구성 및 역할]

팀장 / 인프라 아키텍트
주요 담당 역할
프로젝트 전체 리딩 및 일정 관리
IaC(Terraform) 설계 및 구현 - AWS 네트워크/EKS/RDS 인프라 구축
Ansible 부트스트랩 자동화 및 플레이북 작성
비용 최적화 자동화 시스템 구축 (스케줄 기반 리소스 삭제)
CI 파이프라인 설계 및 GitHub Actions 구성
프로젝트 문서화 및 기술 문서 작성
DevOps 엔지니어
주요 담당 역할
ArgoCD 기반 CD 파이프라인 운영 및 관리
GitOps 대시보드 구축 및 모니터링
CI 파이프라인 구현 지원 및 최적화
배포 자동화 프로세스 개선
운영 환경 안정성 관리
백업/복구 전문가
주요 담당 역할
Velero 기반 Kubernetes 클러스터 백업 시스템 구축
AWS Backup을 활용한 클라우드 리소스 백업 전략 수립
재해 복구(DR) 시나리오 설계 및 테스트
백업 데이터 무결성 검증 프로세스 구축
복구 절차 문서화 및 가이드 작성
CI/CD 엔지니어
주요 담당 역할
GitHub Actions 기반 CI 파이프라인 고도화
GitOps 운영 프로세스 지원 및 개선
컨테이너 이미지 빌드 최적화
백업/복구 시스템 구현 지원
자동화 스크립트 개발 및 유지보수
보안/컴플라이언스 엔지니어
주요 담당 역할
Terraform 기반 인프라 보안 설정 지원
AWS Config 및 Security Hub를 활용한 컴플라이언스 자동화
리소스 태깅 전략 수립 및 관리
보안 정책 구현 및 모니터링
CI 파이프라인 보안 강화
모니터링/자동확장 전문가
주요 담당 역할
ArgoCD GitOps 환경 구축 및 운영 리드
CloudWatch, Grafana 기반 통합 모니터링 시스템 구축
HPA/KEDA를 활용한 자동확장 시스템 고도화
성능 최적화 및 리소스 사용률 분석
알림 시스템 구축 및 운영 대시보드 개발

[프로젝트 리뷰]

1. 기술적 성장
이번 프로젝트를 통해 팀원들은 단순한 서비스 개발을 넘어 현대적인 클라우드 네이티브 기술 스택을 실전에서 경험할 수 있었습니다. 특히 Infrastructure as Code의 위력을 직접 체험하면서, 수동으로 인프라를 구성했던 기존 방식과의 차이를 명확히 느낄 수 있었습니다.
2.
GitOps의 실제 적용
ArgoCD를 통한 GitOps 구현 과정에서 선언적 배포의 장점을 체감했습니다. Git을 통한 변경사항 추적과 자동 배포, 그리고 즉시 롤백 기능은 운영 환경에서의 안정성을 크게 향상시켰습니다.
3.
자동화의 중요성
백업/복구 시스템 구축 과정에서 자동화가 얼마나 중요한지 깨달았습니다. 수동 백업의 한계와 사람의 실수 가능성을 줄이는 자동화된 시스템의 필요성을 실감했습니다.
4.
모니터링과 관측성
실제 서비스 운영에서 모니터링이 얼마나 중요한지 배웠습니다. Grafana 대시보드를 통해 시스템 상태를 실시간으로 파악하고, 문제 발생 전 미리 대응할 수 있는 예방적 운영의 가치를 이해했습니다.
5.
역할 분담의 효율성
각자의 전문 영역을 명확히 나누면서도 서로 도움을 주고받는 협업 구조가 효과적이었습니다. 특히 인프라 구축과 보안, 모니터링이 유기적으로 연결되면서 시너지를 창출할 수 있었습니다.
6.
문제 해결 과정
복잡한 클라우드 환경에서 발생하는 다양한 이슈들을 팀원들과 함께 해결해 나가는 과정에서 협업의 중요성을 다시 한번 느꼈습니다. 각자의 관점에서 바라본 문제 해결 방법을 공유하며 더 나은 솔루션을 찾을 수 있었습니다.
7.
지속적인 학습
빠르게 변화하는 클라우드 기술 트렌드를 따라가기 위해 팀원들과 함께 학습하고 지식을 공유하는 문화를 만들어갔습니다. 이는 개인적인 성장뿐만 아니라 팀 전체의 역량 향상으로 이어졌습니다.

[향후 발전 방향]

이번 프로젝트를 통해 구축한 자동화 시스템과 운영 노하우는 향후 더 큰 규모의 프로덕션 환경에서도 활용 가능한 소중한 자산이 되었습니다. 특히 코드로 관리되는 인프라와 GitOps 기반의 배포 프로세스는 확장성과 유지보수성 측면에서 큰 장점을 제공할 것으로 기대됩니다.