- 동창들과의 연락과 만남을 만들어주는 앱입니다.
- 앱의 완성 보다는 공부 목적으로 기술들의 구현에 초점을 두었습니다.
JAVA 17, spring boot 3.2.2, spring data jpa,QueryDsl, mysql, docker, prometheus, grafana, ngrinder, nginx
- OpenAPI spec 적용
- Docker 활용
- 모니터링(APM)
- 부하 테스트 (ngrinder 사용)
- 로드밸런서(nginx)를 사용한 분산 처리, 분산처리 전후 부하테스트 비교
- MSA 구현
- 디비 캐싱 (Redis)
- CI/CD
prometheusd와 grafana를 사용하여 모니터링 환경을 만들었습니다.
docker compose 로 board app의 cpu와 memory를 제한시킨 뒤 세 개로 scale하고, nginx를 로드밸런서로 활용하여 분산처리를 구현했습니다.
nGrinder를 사용하여 분산처리 전후로 나누어 부하테스트를 진행 했습니다.
nGrinder를 실행하는 환경과 Spring boot app을 실행하는 환경은 서로 간섭이 일어나지 않게 분리하여 진행했습니다.
결과를 봤을 때 분산처리를 했을 때가 하지 않았을 때보다 TPS가 3배 높아진 모습을 볼 수 있습니다.
또한 밑의 이미지를 보면 중간에 Tenured Gen의 메모리 공간이 다 차면서 GC가 실행됨에 따라 STW가 발생해 잠시 응답을 받지 못하는 현상도 볼 수 있었습니다.
![Screenshot 2024-03-14 at 4 18 02 PM](https://private-user-images.githubusercontent.com/46589339/312767660-c7e35197-01ba-47e2-bd1e-190d488ec439.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg3MTIxMDksIm5iZiI6MTcxODcxMTgwOSwicGF0aCI6Ii80NjU4OTMzOS8zMTI3Njc2NjAtYzdlMzUxOTctMDFiYS00N2UyLWJkMWUtMTkwZDQ4OGVjNDM5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDExNTY0OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA5MjA4NGJiYWZmNjg0ZDg3MDUyYjNiZWY4Y2Q5NzBmYWRhYzhjNjNhYmE4NGRlOTA1YWNhOGJjMmE4YzFkMTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.stu2TemdNP3LnUeRrUaAuWvPE_3x1ZWTRel344W2MX4)
![Screenshot 2024-03-14 at 4 18 13 PM](https://private-user-images.githubusercontent.com/46589339/312767148-204322d0-9fcf-424a-898b-590769546db8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg3MTIxMDksIm5iZiI6MTcxODcxMTgwOSwicGF0aCI6Ii80NjU4OTMzOS8zMTI3NjcxNDgtMjA0MzIyZDAtOWZjZi00MjRhLTg5OGItNTkwNzY5NTQ2ZGI4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjE4VDExNTY0OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVjZjdmYzIwNjRlMGY0MjdlYjVjZDA3NjJiM2IyYzJkMDg1ZTMwMWVlM2QxNjI2N2U0YmRkZWQzMGNkYzQ1ZjEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.cj5DnZcrNFcm4hni7G3spSTxSJrZhmr5z6pm9yJvrbA)