종목 토론방은 사용자들이 주식에 대한 정보를 공유하고 토론할 수 있는 웹 플랫폼입니다.
Details
마이크로 서비스(MSA)로 4개의 서비스로 분리 -docker-compose 환경구축
-API Gateway -해당 API로 들어온 요청을 내부의 마이크로 서비스로 전달 -회복탄력성 -Java Resilience 4j를 이용한 Circuit Breaker 회복탄력성 구축.
-
User-service
- 가입
- 아이디 및 닉네임 중복체크
- 비밀번호 암호화, 업데이트
- jwt 토큰를 활용한 로그인, 로그아웃
- 프로필 관리
-
Activity-service
- 게시글 관리
- 게시글 & 파일 추가, 삭제, 수정, 조회
- 유저 정보, 게시글 제목, 게시글 내용 등
- 게시글 검색 기능
- 작성 유정 아이디
- 게시글 제목, 게시글 내용 등을 통해 검색
- 댓글 작성 및 상호작용 기능
- 팔로우 기능
- 알람 기능
- 게시글 관리
-
Newsfeed-service
- 팔로우한 사용자들의 활동 확인
- 뉴스피드 정렬
-
Stock-sevice
- 스프링 배치 작업을 통하여 매일 정해진 시간에 주기적으로 데이터 업데이트
- 도커와 젠킨스로 작업 관리자로 스케쥴 관리
- 종목 리스트 및 데이터 관리 -배치 멀티쓰레드를 이용한 대규모 트래픽 처리
- 주가 차트 확인
- 이동평균선, 볼린전 밴드, MACD 기술적 지표
- 스프링 배치 작업을 통하여 매일 정해진 시간에 주기적으로 데이터 업데이트
클릭하여 섹션 열기/닫기
컴포즈 파일이 존재하는 디렉터리에서 실행합니다.
docker-compose up -d다른 컴포즈 파일을 사용하려면 파일 경로를 지정합니다.
docker-compose -f 컴포즈파일_경로 up컴포즈를 백그라운드에서 실행합니다.
docker-compose up -d특정 서비스의 컨테이너 개수를 조정합니다.
docker-compose --scale 서비스_명=서비스수 up모든 컴포즈 컨테이너를 종료하고 삭제합니다.
docker-compose down모든 컴포즈 컨테이너를 정지합니다.
docker-compose stop컴포즈로 실행 중인 컨테이너의 상태를 확인합니다.
docker-compose ps특정 서비스의 로그를 확인합니다.
docker-compose logs 서비스_이름 -f실시간으로 로그를 확인합니다.
서비스에 지정된 컨테이너를 실행합니다.
docker-compose run 서비스_명서비스에 지정된 컨테이너를 시작, 정지, 일시정지, 재개합니다.
docker-compose start 서비스_명
docker-compose stop 서비스_명
docker-compose pause 서비스_명
docker-compose unpause 서비스_명컴포즈로 실행 중인 서비스의 공개된 포트를 표시합니다.
docker-compose port클릭하여 섹션 열기/닫기
-
각 서비스를 독립적으로 개발 및 배포할 수 있으므로 개발 속도가 향상
-
이전에는 전체 시스템에 문제가 발생하면 모든 서비스에 영향을 미쳤지만, 마이크로서비스 아키텍처를 도입하면 문제 발생 시 영향 범위를 쉽게 제한하고 해결 가능.
-
특정 서비스 트래픽 증가에 맞춰 개별 서비스를 확장하여 시스템 성능을 유지.
-
이번 프로젝트에서는 개인프로젝트로 쓰지않았지만 각 서비스를 서로 다른 기술 스택을 사용하여 개발할 수 있음.
-
문제
-
특정 서비스 트래픽 증가 시 시스템 전체 성능 저하
-
새로운 기능 추가 시 시스템 아키텍처 변경 어려움
-
해결
- 로드밸런서 나 api 게이트웨 중 api게이트웨이 도입
- 로드밸런서는 사용자 인증 및 권한 관리하기가 어렵고 API 관리 기능, 기능 확장성이 좋아 api게이트웨이 선택
- 서비스를 모듈화하여 각 모듈을 독립적으로 개발하고 배포하여 시스템 유연성을 향상시킵니다.
- 재사용 가능한 코드를 개발하여 개발 및 유지 관리 효율성을 높입니다.
- 로드밸런서 나 api 게이트웨 중 api게이트웨이 도입
-
- 문제
- 종목데이터는 엄청난 양이며, 실시간 처리가 중요.
- 기존 단일 스레드 방식으로는 데이터 처리 속도가 느리고, 실시간 처리가 어려웠습니다.
- 종목데이터 260만건을 처리는 하는 속도가 15분가량 나옴
- 해결
- 스프링 배치를 통해 주가 데이터 자동화.
- 수집된 데이터를 여러 스레드에서 분할하여 병렬 처리.
- 8개의 멀티스레드를 동시에 실행하여 260만건 처리속도가 1분 40초로 10배이상 속도향상.




