개발 일지16 근처에 있는 사용자 조회 기능: Redis Geospatial가 적합한 선택일까? 들어가면서..IT 연합 동아리 디프만에서 진행한 프로젝트에서 '위치기반 주변 유저를 조회'하는 기능을 구현해야 했습니다. 이번 글에서는 다양한 공간 인덱싱 알고리즘과 시스템을 비교 분석하고, Redis Geospatial를 선택한 과정과 구현 방법에 대해 공유하려 합니다. 관련 Issue 및 PR:https://github.com/depromeet/Took-BE/issues/62 [Feat] : 주변 유저 검색 기능을 위한 Redis Geospatial의 사용성 검증 · Issue #62 · depromeet/Took-BE✨ 이슈 내용 주변 유저 검색 기능을 위해 Redis Geospatial의 사용성 검증 진행 ✅ 체크리스트 Assignees / Labels 선택github.com https://git.. 2025. 3. 17. 모니터링으로 성능 개선점 찾기 (with Prometheus, Grafana, Loki, Promtail) 들어가면서..Maru-egg (입시 정보 안내 RAG 챗봇) 프로젝트를 실제 운영 환경에 배포하면서 모니터링 시스템 구축에 대한 필요성을 느끼게 되었습니다. 학교 입학 홈페이지가 공개되고 실제 입시생들이 사용하기 시작하면서, 예상치 못한 트래픽과 시스템 부하에 어떻게 대응할지 고민하게 되었습니다. 처음에는 단순히 서버가 잘 돌아가는지 확인하는 정도로만 생각했지만, 실제 사용자들이 늘어나면서 서버의 상태를 실시간으로 파악하고 잠재적인 성능 병목이나 오류를 조기에 발견하는 것이 얼마나 중요한지 깨닫게 되었습니다. 이에 Prometheus를 활용해 메트릭을 수집하고, Loki와 Promtail로 로그를 집계한 다음, Grafana를 통해 이를 시각화하는 모니터링 환경을 구축했습니다.특히 CPU 사용률, DB .. 2025. 3. 13. JPA 없이 통계 시스템 구축하기: QueryDSL + Flyway로 데이터 접근하기 들어가면서..인턴십 기간 동안 저는 기존 DB에 쌓여 있던 데이터를 활용해 통계 서비스(대시보드 형태)를 구축하는 과제를 맡았습니다. 이를 구현하면서 자연스럽게 JPA(Java Persistence API) 기반의 ORM(Object-Relational Mapping)을 사용했는데, 개발을 진행할수록 몇 가지 불편함이 드러났습니다. 예를 들어, 기존에 JPA로 짜여진 데이터를 사용하기 위해서 기존에 존재하던 Entity 클래스에 의존해야하는 문제가 있었습니다.(저의 역량 부족일 확률이 높지만..) 또한 서비스 도메인 모델과 DB 엔티티 클래스들을 1:1로 매핑하여 설계했는데, 실제 통계 로직을 작성하다 보니 이러한 도메인-엔티티 1:1 매핑 방식에 의문이 생겼습니다. 이런 고민을 겪으면서 기존 JPA 중.. 2025. 2. 28. 개발 고민 | 테스트 가능한 코드와 테스트의 범위에 대하여 들어가기 전...최근 테스트 코드를 작성하면서 "어떤 코드가 테스트하기 좋은 코드일까?" 라는 고민을 하게 되었습니다. 테스트 코드의 범위를 어떻게 설정해야 하는지, 그리고 테스트하기 좋은 코드의 특징이 무엇인지에 대한 고민이 많았습니다.테스트 가능한 코드란 무엇일까?테스트의 범위는 어디까지 설정해야 하지?테스트 코드에서 관리할 수 없는(라이브러리와 같은) 코드를 어떻게 다뤄야 할까?이런 고민을 하다 보니, 테스트의 목적과 코드의 구조적 설계가 밀접한 관계가 있음을 깨달았습니다. 특히, 프로덕트 코드에서는 의존성을 줄이고, 테스트 코드에서는 동작을 제어할 수 있도록 설계하는 것이 테스트 코드와 프로덕트 코드를 모두 고려하는 방법이라고 생각이 들었습니다. 그래서 이번 글에서는 테스트하기 좋은 코드란 무엇인.. 2025. 2. 17. DB와 Application 코드의 역할과 범위를 어떻게 나눌까? 들어가기 전..인턴십에서 통계 관련 작업을 진행하며 DB와 Application 코드 중 어디에서 로직을 처리할지 고민해야 하는 상황이 있었습니다. 특히, 주차에 맞는 날짜를 반환하는 로직을 작성할 때 선택지가 다음과 같았습니다.1. DB에서 처리:`WEEK()` 함수로 주차별로 그룹화한 후, 적절히 날짜를 반환하는 쿼리를 작성한다.2. Application 코드에서 처리:간단한 SELECT 문으로 날짜 데이터를 조회한 뒤, Java의 `LocalDateTime` 을 활용해 처리한다.예: `date.with(java.time.DayOfWeek.MONDAY).toLocalDate().atStartOfDay()`이 간단한 로직을 작성하는 과정이 작은 고민의 시작이었지만, 결과적으로 “DB와 Applicati.. 2025. 1. 22. [디프만] 16기 서버 파트 최종 합격 후기 2024년 12월, 디프만 16기에 지원했고 감사하게도 최종 합격하여 새로운 분들과 함께 새로운 경험을 할 기회를 얻게 되었습니다.☺️디프만은 다른 연합 동아리와 달리 4개월이라는 긴 기간 동안 진행되고, 직장인분들과 협업할 수 있는 좋은 기회를 제공한다는 점에서 꼭 참여해보고 싶었던 활동이에요. 평소 개발하면서 디프만 같은 연합 동아리를 꾸준히 레퍼런스로 삼았는데, 제가 직접 그곳에 참여하게 되다니 정말 신기하고, 지난 1년 동안 많이 성장했다는 생각에 뿌듯함이 가득합니다..! 😉이번 글에서는 개발이 즐거운 지금의 시간을 기록하며, 디프만 지원 과정을 공유해 다음 기수에 지원하시는 분들께 조금이나마 도움이 되고자 합니다. 🎉 디프만을 진행하면서 있었던 일은 추후에 작성해보겠습니다.참고로 16기 경쟁.. 2024. 12. 31. 이전 1 2 3 다음