본문 바로가기

프로젝트/부기온앤온

(3)
HikariCP가 Pending되는 현상과 해결과정 개발과정에서 마주한 문제 하나를 소개하려고 합니다.저희 프로젝트의 구조는 Spring MVC를 메인 WAS로 두고 사용합니다. 핵심 비즈니스 로직과 거리가 멀거나 WAS에게 부담이 되는 기능 및 서비스의 다른 프로젝트에서 사용이 가능한 것들은 외부에 따로 서버를 두고 사용하고 있습니다. 그 중에 푸시 알람과 같은 서비스는 AWS Lambda + Gateway를 통해서 처리하고 있습니다.게시글 추가와 맨션 요청이 같이 POST /posts로 들어오는 경우를 예시로 들어보며 흐름을 이해해보도록 하겠습니다유저가 글 내용과 A유저에게 맨션을 하며 글을 추가한다 (POST / posts 요청)WAS는 해당 요청을 받고 글을 추가한다마지막에 Controller 계층에서 AWS Gateway에게 A유저의 맨션 푸시알..
인덱스를 이용한 쿼리 튜닝 API 개발부터 리펙토링까지 어느정도 프로젝트가 완료되었습니다. 그러면서 자연스럽게 성능 이슈에 대해 관심을 가지게 되었습니다. WAS Thread Pool, Connection Pool 등등 다양하게 성능을 튜닝할 수 있지만 가장 극적인 효과를 볼 수 있는 SQL 쿼리 튜닝을 한번 해보았습니다.어떤 쿼리에서 많은 시간이 소요되는 지 알아보기 위해서 DB에 많은 Row를 넣고 여러 API를 호출해보았습니다. 일반적으로 findById와 같이 PK기반으로 하나의 Row를 찾거나, insert/update/delete에 큰 문제는 없었습니다. 병목지점이 발생하는 부분은 많은 조인과 페이지네이션, 검색하는 부분이었습니다.가장 크게 소요시간이 걸린 것은 커뮤니티 / 게시글을 검색하는 부분이었습니다.커뮤니티 검색..
부기온앤온 프로젝트 회고 2022.01 ~ 2023.03 동안 진행한 프로젝트가 드디어 끝났습니다. 중간에 코딩테스트나 면접 준비, 건강상의 문제로 중단된 것도 있었지만, 약 1년 2개월 동안 진행한 프로젝트를 마무리해서 기분이 좋습니다.저는 학교에서 사용하는 커뮤니티 앱의 서버를 구축하는 프로젝트를 진행했습니다. 일반적인 커뮤니티와는 다르게 실명으로 진행하는 커뮤니티입니다. 코로나로 인해 선/후배 간의 인적교류가 줄어들어, 이를 해소하기 위해 실명 커뮤니티를 만들었습니다.이 프로젝트는 기능 추가만 하고 끝나는 프로젝트가 아닌, 기능을 계속 추가하고 리팩토링하는 것을 목표로 했습니다. 일반적으로 프로젝트는 기능을 추가하고 끝나게 됩니다. 이는 일반적인 회사 업무와 다르다고 생각합니다. 기능의 구현도 많이 집중했지만, 전체적으로 ..