전체 글
-
스프링 DI 기반 전략 패턴 : 레지스트리 패턴(Registry Pattern)백엔드 : 서버공부 2025. 12. 21. 01:12
들어가며입사하고 처음으로 도메인을 처음부터 설계해서 구성하고 구현하는 일을 맡게되었다!! 맡게된 도메인은 사실 간단한데, 사용자의 파일 다운로드 요청을 처리하고, 요청 자체를 기록하는 리포트 도메인이었다.아마 모든 회사에서, 대부분의 프로젝트에서 해당 도메인이 존재할 것이라고 생각이 된다. ( 요청 로그 같은 것 ) 이와 관련에서 이번에 파일을 생성하고 클라이언트에게 내려주는 유틸을 만드는 기능을 개발하게 되었다.대략적인 배경을 설명하자면 리포트 도메인이 사용자의 파일 생성 다운로드 요청에대한 기록을 관리하게 되니해당 도메인에서 파일 생성에 대한 작업을 담당하자는 것이었다.정리하자면 현재 각자 도메인에 흩어저있던 파일 생성에대한 책임을 리포트 도메인 한곳에서 관리하자는 것으로 볼 수 있다.이렇게 되면 추..
-
대용량 Excel 다운로드 설계: OOM피하기백엔드 : 서버공부 2025. 12. 14. 16:27
주주총회 전자표결 시스템을 개발하는 과정에서, 주주/위임/출석 등 여러 도메인에서 엑셀 다운로드 기능에 대한 요구가 반복적으로 발생했다.엑셀 생성 로직을 도메인별로 분산 관리하는 대신, 백엔드 팀 내부 논의를 통해 이를 공통 기능으로 분리해 관리하기로 결정했고, 해당 공통 Excel 다운로드 기능의 설계와 구현을 맡게 되었다.처음에는 단순한 기능처럼 보였지만, 실제 데이터 규모와 운영 환경을 고려하면서 메모리 구조, 스트리밍, 트랜잭션 경계, 계층별 책임 분리까지 연쇄적인 설계 문제를 마주하게 되었다.이 글은 Excel 다운로드 기능을 구현하며 실제로 문제가 되었던 지점과, 그 문제를 어떻게 구조적으로 해결했는지를 정리한 기록이다. 초기 구조: List> 기반 행렬 설계초기 구현 단계에서는 별다른 고민 ..
-
Spring Boot 4.0의 등장 : 작아지고 빨라지고백엔드 : 서버공부/Spring 2025. 12. 10. 17:12
Spring Boot 4.0 주요 변경점2025년 겨울, 스프링 진영에는 큰 변화가 찾아왔다.Spring 7의 등장과 JDK 25의 동시 릴리즈는 그 자체로 하나의 시대 전환처럼 느껴졌다.이번 업데이트를 통해 스프링 역시 현대적인 개발 환경에 적극적으로 반응하고 있으며, AI 시대에 발맞춰 진화하고 있다는 인상을 강하게 받았다. 무엇보다 인상 깊었던 점은, 실무에서 자주 마주치는 문제들을 기대 이상으로 해소해 주었다는 점이다. 그리고 가장 감명 깊었던 부분은, 이 모든 변화와 개선 사항을 반영한 대규모 버전 업그레이드임에도 불구하고 기존 코드 수정이 사실상 필요 없었다는 점이다.이를 통해 스프링 팀이 오랫동안 일관되게 지켜온 강력한 추상화 철학을 다시 한 번 체감할 수 있었다.스프링 개발자로서, 팀에서 ..
-
헥사고날에서 QueryDSL 지키기백엔드 : 서버공부 2025. 11. 30. 23:08
들어가며 박정민 배우의 불안에 대한 인터뷰를 보며, 나의 불안이라는 감정에 대해 다시 생각하게 되었다.곱씹어 보면 나의 불안은 대부분 “하지 않아서” 생겨나는 경우가 많다. 오늘 해야 할 일을 미루었을 때 드는 불안, 기간 안에 정말 끝낼 수 있을까 하는 걱정, 오늘 미룬 일을 내일은 다 해낼 수 있을까 하는 막연한 압박감 같은 것들이다. 하지만 막상 부딪혀 보면, 그런 불안의 대부분은 생각보다 아무것도 아닌 경우가 많았다.그리고 또 하나의 불안은, 더 잘하고싶다는 마음에서 비롯된다.오늘 이 글도 사실 그런 불안에서 시작되었다. 하하... record vs @QueryProjection를 둘러싼 고민 정리 QueryDSL을 실무에 도입하면 어느 시점에는 반드시 이런 질문과 마주하게 된다. “Projec..
-
2025 하반기 결산잡다한 글 2025. 11. 11. 01:05
드디어 눈코뜰새없이 바쁘고도 바빴던 9월 10월을 지나 거취가 확정되었다. 그간 있었던 일을 우선 종합해보자면 첫 번째 회사 취업SCM 시스템을 구축하는 회사에 9월 취업했다. 그곳에서 맡은 일은 풀스텍 개발..풀스텍 개발을 한달 반 찍먹한 소감으론.. 흠,,나랑 안맞다 이다.한 분야를 깊이 파는 것을 좋아하는 나로써는 모든 분야를 제너럴하게 알아야하는 풀스텍 개발은 전문성이 떨어진다는 느낌을 받았다. 출근 - 퇴근 - 스터디카페 - 수면 : 지옥문 개방솔직히 말해서 9월 10월은 나에게 2018 재수시절 악몽을 떠오르게 만든 시기였다.그 좋아하던 운동도 못가며.. 뭔가에 시달린다는 느낌을 받았다.. 그 뭔가는 바로 .. 요놈으로 부터 시작되었다. 살면서 저렇게 제대로된 인적성은 처음 준비해보던 터라...
-
이름을 박아버려 : Querydsl 오픈소스 개선하기백엔드 : 서버공부/Spring 2025. 11. 7. 10:51
들어가며요즘 내 인생에 귀감이 되는 일이 많은 것 같다. 얼마전에 LA 다져스가 우승했는데, 그 과정에서 야마모토의 엄청난 희생이 있었다.전날 완투를 하고 다음날 마무리 투수로 나온다는 것은 야구선수로썬 정말 불가능에 가까운 헌신인데 최고의 위치에서 저런 노력을 한다는 것, 자신의 일을 진심으로 사랑한다는 것무엇보다 자신이 결정하고 맡은 일에 대한 책임감에 대해 참 많은 것을 느끼게 하는 선수인것 같다. 이쯤되면 고시엔 출신 야구선수들은 다들 엄청난 것 같다는 생각이 든다. 오타니도 그렇고 하여간 지금은 인생에서 몰입해야하는 시기라는게 피부로 느껴지는 시기인거 같다. 배경1년 전에 내가 만든 SimpleDtoProjection 아이디어가 Querydsl 6.8 릴리스에 반영되었었다. (새삼 시간..
-
책임 : 유스케이스는 입력 검증이 아니라 도메인 상태 변경백엔드 : 서버공부/Spring 2025. 11. 7. 10:49
시작전 들어가며: 유스케이스와 입력 검증의 역할 혼동헥사고날 아키텍처(클린 아키텍처)에서는 유스케이스(use case) 계층이 핵심 비즈니스 로직을 담당한다.그런데 개발하다 보면 한 번쯤은 "입력 값 검증은 어디에서 해야 하지?"라는 고민을 해본적이 있을 것이다.예를 들어 사용자가 제출한 폼이나 API 요청의 값이 형식에 맞는지 검사하는 작업을 도메인 계층에서 해야 할지, 유스케이스 계층에서 해야 할지 혼란스러울 때가 있다.처음에는 "입력 값의 유효성 검사는 도메인 모델이 알아서 해야 하지 않을까?" 하고 생각하기 쉽다.그러나 클린 아키텍처 관점에서 보면, 유스케이스 코드는 오로지 도메인 로직(비즈니스 규칙)에 집중해야 하며, 이런 코드가 입력 값 검증 로직으로 오염되어서는 안 된다.다시 말해, 유스..
-
MVC에서 헥사고날 아키텍처로의 여정 - 2편: 매핑 전략백엔드 : 서버공부/Spring 2025. 11. 2. 02:51
새벽3신데..잠이 오지않아 책을읽었는데 그래도 잠이 오지않아서 정리까지 하게되었다. 본격적으로 글 시작에 앞서서 한로로의 정류장, 이 노래 가사가 참 좋은거같다.나도 이런 말을 해보고 싶다는 생각이 들기도..그나저나 갑자기 추워졌는데 감기조심https://youtu.be/zaQn86wvYJs?si=FL1O0vHEsPybXi_J 들어가며만들면서 배우는 클린 아키텍처를 읽고 정리하는 글이다. 예시 코드는 지피티의 도움을 받아 작성했다.이 책은 웹, 애플리케이션, 도메인, 영속성 계층을 어떻게 나눠야 하고, 하나의 유스케이스가 이 네 계층을 통과하면서 어떤 역할을 수행하는지를 설명한다. 실제로 우리가 서비스 코드를 작성할 때 많이 부딪히는 것은 “그럼 각 계층이 쓰는 모델은 어떻게 하지?” 라는 문제다...