프로젝트/스마일게이트 윈터데브캠프

프로젝트/스마일게이트 윈터데브캠프

[윈터데브캠프] 팀 프로젝트 - 유저, 푸시 서버

유저 서버 유저 서버는 채팅 앱에서 친구 요청/수락/취소/삭제, 유저 검색, 프로필 수정의 기능을 수행한다. 유저 서버 주요 구현 내용 유저 쿼리 프로필 이미지 저장 - AWS S3 친구 상태 관리 유저 쿼리 유저 쿼리에서 유의미한 성능 향상과 좋은 팁들을 얻을 수 있었다. 우선 쿼리를 다시 점검하게 된 이유는 팀원의 Prometheus와 Grafana를 활용한 모니터링과 Ngrinder의 부하테스트 덕분이었다. 친구 목록 조회 쿼리가 채팅 앱의 거의 메인화면에 해당하기 때문에 가장 많이 사용되었다. 그러나 성능이 매우 뒤떨어 진다(TPS 20.8)는 결론을 얻을 수 있어서 성능 향상의 계기가 되었다. 성능 개선의 요인은 3가지가 있다. @Transactional(readOnly = true) 추가 쿼리..

프로젝트/스마일게이트 윈터데브캠프

[윈터데브캠프] 팀프로젝트 - 인증 (게이트웨이, 인증 서버)

1인 프로젝트에서 MSA 기반 인증 서버 만든 것을 확장하여 구현하였다. 게이트웨이 Gateway를 통해 Jwt 토큰을 검증하고 각 서버에서 필요 시 jwt토큰으로 부터 유저 정보를 확인한다. 게이트웨이를 활용하였기 때문에 각 서버에서 따로 검증하는 코드를 작성할 필요가 없게 되었다. 게이트웨이 주요 구현 내용 Jwt 검증 GlobalExceptionHandler ErrorCode Jwt 검증 게이트웨이에서 Jwt를 검증한 방법은 아래 코드를 통해 확인할 수 있다. header에 Jwt 토큰이 존재하는 지, 그리고 그 토큰이 유효한 지를 검증한다. 이 때 예외 발생 시 예외를 던진다. public class AuthorizationHeaderFilter extends AbstractGatewayFilte..

프로젝트/스마일게이트 윈터데브캠프

[윈터데브캠프] 팀프로젝트 - API,DB (+요청/응답, 포트)

프로젝트를 경험해보면서 API, DB 등 설계의 중요성을 많이 느꼈다. 프로젝트가 복잡해질수록 소프트웨어도 복잡해지고 이에따라 탄탄한 설계가 가져오는 장점들이 존재함을 몸소 느낄 수 있었다. 우리가 만들고하자는 요구사항(윈터데브캠프의 목표)을 효과적으로 만족시킬 수 있다. 유지보수 측면에서 용이하다. 협업에서 이점을 갖는다. 따라서, API,DB명세를 상세히 하고자 했고, 이에 따라 적용한 방법을 보이고자 한다. 내가 생각하는 API 명세를 작성하는 이유는 크게 3가지가 존재한다. 어떤 것을 구현해야하는지 명확히 한다. 협업에 있어 req/res 형태를 공유한다. 정해진 규칙을 따라 API를 명세한다. 이를 만족시키기 위해 기능 명세를 작성하였다. 기능 명세를 작성한 이유는 시간에 대한 한계가 있기 때문..

프로젝트/스마일게이트 윈터데브캠프

[윈터데브캠프] 팀프로젝트 - 아키텍처

스마일게이트 윈터데브캠프에서 채팅 애플리케이션을 개발하였다. 채팅 애플리케이션을 개발하기로 한 이유는 팀원들 간 회의를 통해 도출된 공통 목표에서 나오게 되었다. 공통 목표 경험해보지 못한 아키텍처와 기술들을 활용하여 문제 해결에 대한 폭을 넓힌다. 양방향 소켓 통신에 대한 경험 X 전체 서버의 아키텍처는 MSA를 기반으로 구성하였으며, 채팅 서버는 scale out 가능한 구조로 구성하고자 했다. 전체 구조는 아래 그림과 같다. 이번 프로젝트에서 서비스 레지스트리, 게이트웨이, 인증 서비스, 유저 서비스, 푸시 서비스는 내가 맡게 되었다. 추후 각 서비스 별 주요 내용을 정리할 예정이다. 실제 상호작용하는 부분이 추가된 상세화된 아키텍처는 아래와 같다. 전체 사용 스택은 Spring Boot, Spri..

프로젝트/스마일게이트 윈터데브캠프

1인 프로젝트 - MSA 기반 인증서버 개발

MSA 기반 인증 서버 스마일게이트 윈터데브캠프에서 팀 프로젝트 시작하기 전 개인 프로젝트 개발 과제를 진행했다. 블로그 , URL shortener , MSA 인증 서버 중 인증 서버 개발 과제를 선택했고 그 이유는 팀 프로젝트에서 백엔드 담당 이기 때문에 Spring Boot를 사용해보기 위해 선택했다. MSA 구성 기간이 1달 정도이고, 기말고사 기간이 2주 겹쳐있었기 때문에 React의 경우는 매우 간단하게 짰고 최대한 서버 부분에 집중했다. User 서비스 : 회원가입, 로그인 처리 Order 서비스 : User 서비스와 1:N관계를 갖는 주문 정보를 처리 Discovery 서비스 : 각 서비스들의 상태 정보를 처리 Gateway 서비스 : 각 서비스들로 중계 역할을 수행 요구 사항 윈터데브캠프..

쩨이호
'프로젝트/스마일게이트 윈터데브캠프' 카테고리의 글 목록