There are 14 posts.

공간 인덱스 적용기

October 19, 2023

이 글은 우아한테크코스 괜찮을지도팀의 가 작성했습니다. 배경 서비스는 아래와 같이, 위치와 관련된 정보를 별도의 테이블로 관리하고 있습니다. 장소를 등록할 때, 주소 검색을 사용할 수도 있지만, 지도 위의 좌표를 클릭하여 등록할 수도 있습니다. 사용자들이 동일한 장소를 등록하기 위해 지도상의 특정 위치를 클릭한다고 가정해 보겠습니다. 이때, 미터 …


괜찮을지도 사이트 최적화 진행

October 18, 2023

이 글은 우테코 괜찮을지도팀의 이 작성했습니다. 홈페이지에서 용량을 많이 차지하고 페이지 로딩 속도에 영향을 미치는 이미지와 번들 사이즈 최적화를 진행하였습니다. 이미지 최적화 홈페이지에서 가장 많은 용량을 차지하고 페이지 로딩 속도에 가장 큰 영향을 미치는 것은 이미지라는 의견이 나왔습니다. 백엔드 쪽에서는 이미지 업로드 용량 한계치를 두고 프론트 단에…


백엔드와 협력해 S3에 이미지 저장하기

October 18, 2023

이 글은 우테코 괜찮을지도팀의 가 작성했습니다. 백엔드 크루 '매튜'와 협력해 S3에 이미지를 저장하는 작업을 진행하였습니다. 생각보다 시간도 오래 걸리고 어려움도 많았지만 많이 배웠고 보람있는 시간이었습니다. 이미지 관련 사용자 피드백 이미지를 string으로 저장하고 있어 이미지를 저장하는데 번거럽다는 피드백을 받았습니다. formData를 통해 이미…


N + 1 문제 해결 도중 맞닥뜨린 Set 과 List 의 차이

October 15, 2023

이 글은 우테코 괜찮을지도의 가 작성하였습니다. 서론 간단한 도메인 설명 저희 서비스에는 이라는 도메인이 존재하고, 이는 를 의미합니다. 그리고 해당 는 , , 들과 를 이루고 있습니다. 문제 발생 상황 문제 상황 이 글에서 주로 탐구하고 있는 문제는 서비스 홍보를 앞두고 성능 개선을 하기 위해 문제를 해결하고 있던 와중 발생하였습니다. 일단 유의…


JPA 엔티티를 삭제할 때 영속성과 연관 관계가 중요한 이유

October 13, 2023

이 글은 우테코 괜찮을지도의 가 작성하였습니다. 삭제 기능에 대한 리팩터링 중, 회원 차단에 대한 기존 테스트가 실패해 이를 해결해야 했는데요. JPA에 대한 지식이 부족한 상태에서 삽질을 하며 알게 된 것들을 기록하고자 합니다. 문제 상황 1 : 쿼리의 발생 시점 찾기 도메인: 회원 차단 기능 도메인에 대해 먼저 설명드리겠습니다. 관리자 API에서 회원…


HikariCP 적용기

October 10, 2023

이 글은 우아한테크코스 괜찮을지도팀의 가 작성했습니다. 배경 CPU 코어가 하나인 컴퓨터라도 수십 또는 수백 개의 쓰레드를 지원할 수 있습니다. 하지만, 실제로 하나의 코어는 하나의 쓰레드만 실행할 수 있습니다. 을 통해, 하나의 코어에서도 여러 개의 쓰레드를 동시에 지원할 수 있는 것이죠. 물론, 두 개의 쓰레드 A, B가 존재할 때 이를 순차적으…


Fetch join 사용 시 MultipleBagFetchException의 발생 이유와 해결 방법

October 04, 2023

이 글은 우테코 괜찮을지도팀의 가 작성했습니다. N+1과 Fetch join 백엔드에서는 조회 API로 여러 연관 관계로 인해 발생하는 N+1 문제를 해결해야 했는데요. 예를 들면 장소(이하 핀) 다건 조회의 경우, 각 핀이 속한 지도(topic), 위치, 생성자, 핀 이미지들을 모두 별도로 조회하는 심각한 문제가 있었습니다. 지도(topic) 조회 시에…


FetchType.EAGER, FetchType.LAZY 에 대해서 알아보자!

October 04, 2023

이 글은 우테코 괜찮을지도의 가 작성하였습니다. 배경 쿼리 개선... 필요할지도? 9월 말, 추석을 앞두고 사용자 유치 계획 실행을 앞두고 있었다. 우리는 행복회로를 돌리며, 많은 사용자들이 서비스에 들어올 것이라고 생각했고, 사용자들에게 좋은 경험을 선사하고 싶었다. 하지만, 문제가 있었다. 많은 사용자가 들어옴에 따라 평소보다 많은 트래픽이 발생할 것…


@Modifying 어노테이션의 옵션이 정상 동작하지 않는 문제

October 02, 2023

이 글은 우테코 괜찮을지도의 가 작성하였습니다. 배경 괜찮을지도 서비스에서는 테스트를 방식으로 수행하고 있습니다. 란 우리가 알고 있는 테스트에서 따온 네이밍입니다. (서비스 -> 레포지토리까지의 테스트만으로도 E2E라고 불리는지는 잘 모르겠습니다) 이때, Layer는 각 계층(Service, Repo 등)을 말합니다. 서비스 계층에서 데이터를 삭제…


괜찮을지도의 Nginx 활용법

August 01, 2023

이 글은 우아한테크코스 괜찮을지도팀의 가 작성했습니다. 지난 글 GitHub Actions로 CI/CD 구축하기에서 현재 저희 프로젝트의 인프라 구조를 간략하게 이미지로 설명드렸습니다. 다시 이미지를 보여드리자면, 서버의 앞단에서 Nginx를 사용하고 있는데요. ⚠️ 편의상 개발 서버, DB 서버 부분은 생략하고 확대한 이미지입니다. 개발 서버의 Ngin…