Home
Dohyun's Blog
Cancel

데이터 조회 쿼리 성능 개선기

유레카를 진행하면서 프로젝트 중 내가 담당하지 않았던 부분들을 해보고자 했다. 여러 기능들을 맡아서 했었지만 데이터 조회 등에서 쿼리 실행 계획을 분석해서 성능 개선을 해본다던가, 배치 작업에 대해 구현은 했지만 배치 작업 또한 데이터가 많아졌을 때 성능에 문제가 있을 수 있어 그 부분을 개선해본다던가 하는 것을 안해봐서 따로 진행해보고자 했다. 우...

댕댕살롱 최종 배포 구조도 (+ 아쉬운 점)

프로젝트가 성공적으로 마무리 됐고, 최종적으로 선택했던 배포 구조도를 정리해보려 한다. 최종 배포 구조 이번 프로젝트를 진행할 때 AWS에 대한 비용을 지원받을 수 있었기 때문에 개인적으로 프로젝트를 진행할 때 보다 여러가지를 시도해볼 수 있었다. 최종적으로 어떤 아키텍처를 가져갔고, 어떤 점들을 보완해야 하는지 정리해보려고 한다. 서버 아키텍...

쿠폰 이벤트 구현 (실시간 대기열 보여주기 - SSE)

이번 프로젝트에서 쿠폰 발급 이벤트를 구현하기로 했다. 결제 시스템이 존재했고, 해당 결제 시스템에 쿠폰을 적용하는 것을 구현하고 싶었기 때문이다. 이전 프로젝트에서 비슷한 기능을 구현했었기 때문에 원래 내 담당은 아니었지만 시간이 촉박해서 도와주게 되었다. 이번에는 배포까지 하기 때문에 운영환경에서의 부하도 고려해야 했고 그 때문에 이전 포스트에...

로그 추적기, Flyway, RestAssured, Jacoco 도입

이번 프로젝트를 시작하기 전 백엔드 팀원들과 회의를 하면서 로그 추적기, Flyway, RestAssured를 도입하기로 결정하고 시작했었다. 프로젝트를 마무리한 시점에 각 도구를 왜 사용하는지, 실제로 사용해보면서 어떤 장점을 가질 수 있는지 정리해보고자 한다. 로그 추적기 이전 프로젝트를 진행했을 때 필요한 로그를 직접 하나하나 작성했었다....

AWS에서 부하테스트

AWS Distributed Load Testing AWS Solutions Library에서 Distributed Load Testing 솔루션을 사용하여 부하테스트를 진행한다. 이 AWS 솔루션을 배포하면 서버를 프로비저닝하지 않고도 일관된 속도로 트랜잭션 레코드를 생성하여 수천 명의 연결된 사용자를 구축하고 시뮬레이션할 수 있다. 위 링크에...

APM 도구 도입하기 (Pinpoint, Scouter)

핀포인트 네이버에서 만든 APM (Application Performance Management) 도구이다. 분산된 애플리케이션의 성능을 모니터링하고 분석하는 용도로 활용된다. 실시간으로 애플리케이션의 서버맵, 실시간 활성 쓰레드 차트, 요청/응답 차트, API 호출 상세 기록 등등을 추적하고 문제가 발생하면 그 원인을 쉽게 찾을 수...

채팅 시스템 Kafka 도입

Kafka 도입 STOMP를 도입했을 때 WebSocket을 활용하여 직접 구현한 방식보다 성능이 좋지 않았다. 따라서 외부 메시지 브로커를 도입하고자 한다. 예전에 사용해보았던 Kafka를 채택하려고 한다. Kafka를 썼을 때 아래와 같은 문제가 해결된다. SimpleBroker는 인메모리에 메세지를 저장하고 있으므로, 서버가 다운될 경우 ...

채팅 시스템 프로토콜 전환 (STOMP) + 겪었던 문제

STOMP 기존에 작성했던 채팅 로직을 그대로 프로토콜만 변경해보고자 한다. 그 전에 STOMP에 대해 알아보자. 기존에 구현했던 WebSocket을 사용했을 때와 어떤 차이가 있는지 보자. WebSocket WebSocketHandler를 통해 수동 처리중 특정 사용자가 보낸 메시지를 특정 방이나 사용자에게 ...

채팅 시스템 구현 (WebSocket)

강아지 미용 중개에 있어 미용사가 견적서를 보내면 사용자는 채팅을 통해 흥정을 할 수 있도록 만들었다. 채팅을 통해 가격에 대한 설명을 받고, 가격이 변동되면 채팅창 내에서 견적서를 즉시 수정해 보내주면 채팅방에서 변경된 견적서 내용을 바탕으로 결제가 가능한 구조이다. 이 기능을 위한 채팅 시스템을 구현해보자. 채팅 시스템 고려 사항 흔히 채팅...

소셜로그인 구현 (구글, 네이버)

소셜 로그인을 구현해보자. 소셜 로그인 우선 기존 Spring Security + JWT 구조의 구현 방식에 OAuth2 소셜 로그인 기능을 추가해 확장하는 방식을 채택하려고 한다. 소셜 로그인 구현 고민 구글, 네이버, 카카오 소셜 로그인을 구현할 예정인데, 각각 다른 API를 사용할 뿐 기본적인 구조는 비슷하다. 우선 OAuth2 인증 방...