목록Spring/트러블 슈팅 (14)
개발자는 기록이 답이다
📌 웹 서버란?웹 서버는 HTTP 요청을 받아들이고 해당 요청에 대한 응답을 제공하는 프로그램입니다. 주로 정적 컨텐츠를 제공하는 서버 (주로 정적 컨텐츠 캐싱이나 리버스 프록시 용도로 사용)로서 사용됩니다.Apache와 Nginx는 가장 인기 있는 웹 서버 프로그램 중 두 가지입니다.📌 Apache vs Nginx Apache의 구동방식오랜 기간동안 웹 서버로 사용되어 왔으며, 오픈소스 프로젝트로 가장 유명한 프로그램 중 하나입니다.Prefork MPM(Multi Processing Module) 방식HTTP 요청이 올때마다, 프로세스를 복제하여. 각각 별도 프로세스에서 해당 HTTP 요청을 처리합니다.이러한 방식은 새로운 요청이 올때마다 새로운 프로세스를 생성해야 하므로 처리 속도가 느릴 수 있습..
2024.04.19 - [SQL/쿼리 최적화] - 1000만건의 데이터를 대상으로 쿼리최적화 with. 복합인덱스, 커버링인덱스 1000만건의 데이터를 대상으로 쿼리최적화 with. 복합인덱스, 커버링인덱스2024.04.05 - [SQL/쿼리 최적화] - Index를 활용한 10만건의 레코드 Join쿼리를 최적화하자 Index를 활용한 10만건의 레코드 Join쿼리를 최적화하자 마이페이지에서 유저가 발급받은 쿠폰 이력을 조회하는strong-park.tistory.com 지난번 포스팅에서 쿼리 최적화에 대해 작성했었는데, 복합인덱스와 커버링인덱스를 적용했음에도 대규모 데이터셋이라 속도가 느린편이었습니다. 그리고 MySQL상에서 최적화를 해도, API로 연동하고나면 1~2s 정도 더 느려지는 현상이 있었습니..
프로젝트를 진행하면서 상태코드를 반환할때 ResponseEntity와 @ResponseStatus 를 동시에 사용했었는데요. 아래와 같이 PR 리뷰를 받게 되어 자세히 알아보고자 포스팅하려고 합니다. 일반적으로 REST API를 만들 때 @RestController를 사용하여 JSON 형식으로 응답을 반환합니다. 이는 프론트엔드와 API가 연동될 때 상태 코드를 전달해야 하는 이유가 있습니다. 프론트엔드는 서버로부터 받은 상태 코드를 기반으로 다음 동작을 결정하기 때문입니다. 이러한 상황에서는 ResponseEntity나 @ResponseStatus를 사용하여 상태 코드를 반환할 수 있습니다. 이 둘 간의 차이를 이해하기 위해 먼저 각각의 개념을 살펴보고, 동시에 사용할때 어떤 문제가 발생하는지 알아보겠..
프로젝트에서 비동기 쿠폰 발행시 유저에게 발급 완료 알림을 주는 기능을 구현했습니다. 실시간 알림 기능은 여러가지 방식으로 구현이 가능한데 그 중에서 제가 왜 SSE를 선택했는지 얘기해보고자 합니다. 비동기식으로 MQ를 활용해서 쿠폰 발급 기능을 구현하려고 하다보니, 쿠폰 발급이 즉시 이루어지지 않았습니다. 따라서 유저가 쿠폰을 발급받았는지 알림을 받으면 사용자 경험이 개선될 것이라 판단했습니다. 실시간 알림 방식에는 5가지 방법이 있습니다. polling Long polling Socket SSE FCM 1. Polling 가장 기본적인 데이터 처리 방식으로, 클라이언트가 특정 주기로 http request를 서버로 계속 날려서 이벤트 내용을 전달받습니다. 특징 가장 쉬운 방법이지만, 클라이언트가 계속..