본문 바로가기

전체 글63

개발 고민 | 테스트 가능한 코드와 테스트의 범위에 대하여 들어가기 전...최근 테스트 코드를 작성하면서 "어떤 코드가 테스트하기 좋은 코드일까?" 라는 고민을 하게 되었습니다. 테스트 코드의 범위를 어떻게 설정해야 하는지, 그리고 테스트하기 좋은 코드의 특징이 무엇인지에 대한 고민이 많았습니다.테스트 가능한 코드란 무엇일까?테스트의 범위는 어디까지 설정해야 하지?테스트 코드에서 관리할 수 없는(라이브러리와 같은) 코드를 어떻게 다뤄야 할까?이런 고민을 하다 보니, 테스트의 목적과 코드의 구조적 설계가 밀접한 관계가 있음을 깨달았습니다. 특히, 프로덕트 코드에서는 의존성을 줄이고, 테스트 코드에서는 동작을 제어할 수 있도록 설계하는 것이 테스트 코드와 프로덕트 코드를 모두 고려하는 방법이라고 생각이 들었습니다. 그래서 이번 글에서는 테스트하기 좋은 코드란 무엇인.. 2025. 2. 17.
개발 고민 | JPA Entity와 Domain 모델은 1:1이어야하는걸까? 들어가기 전... 최근에 토비님의 공유된 글에서 이런 문장이 있었습니다.“도메인 레이어에 엔티티와 밸류 오브젝트가 거의 대부분이고, 결국 스토리지에 저장하는 영속 모델과 매번 1:1로 매핑만 하는 도메인 모델을 굳이 깨끗해야 한다는 이유로(애노테이션이 없으면 깨끗한 건가) 번거롭게 분리할 필요가 있을까.” 오늘은 이 부분을 보고 생각한 내용을 정리해보겠습니다. 저는 DDD에 대해서는 잘 알지 못하기도 하지만, 흔히 말하는 “DDD = 엔티티와 도메인 모델 분리”라는 공식을, 무의식 중(?) 마치 반드시 1:1 매핑해야 하는 것으로 이해하고 있던 것 같습니다. 하지만 이 글을 읽고 어떤 의미일지 생각해보았을 때, 결론적으로는 “도메인 모델을 DB 구조와 꼭 1:1로 맞출 필요가 없다”는 뜻으로 이해했습니다.. 2025. 2. 12.
Transaction(트랜잭션) Spring에서 톺아보기 - 트랜잭션 지원모델과 관리 방식 들어가기 전..Spring은 다양한 환경에서 일관된 트랜잭션 관리를 제공하여 비즈니스 로직과 트랜잭션 처리를 분리합니다.이때, 일관된 트랜잭션 관리 란 데이터 접근 기술(JDBC, JPA 등)이나 여러 리소스를 사용하는 경우에도 동일한 방식으로 트랜잭션을 관리할 수 있도록 해준다는 것을 의미합니다.즉, 비즈니스 로직 코드에는 트랜잭션 시작, 커밋, 롤백과 같은 세부 처리가 전혀 포함되지 않고, 오로지 핵심 비즈니스 로직에 집중할 수 있습니다.Spring이 내부에서 해당 메서드 실행 전후로 트랜잭션을 자동으로 관리하여, 예외 발생 시 자동으로 롤백하는 등의 처리를 해줍니다.예시아래는 주문 처리 서비스를 예로 든 코드입니다:@Servicepublic class OrderService { @Autowired .. 2025. 2. 10.
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.
Trasaction(트랜잭션) 기본적으로 톺아보기 들어가기 전..오늘은 트랜잭션에 대해 톺아보겠습니다. 특히 Spring에서 어떻게 적용되는지를 중점으로 알아보겠습니다.목차는 다음과 같습니다.Transaction(트랜잭션)의 이해Transaction 전파 속성(Propagation)Transaction 격리 수준(Isolation Level)과 발생 가능한 동시성 문제MVCC(Multi-Version Concurrency Control) Undo/Redo 로그트랜잭션의 동작 과정 예시Transaction(트랜잭션)의 이해트랜잭션은 작업을 처리하는 최소 단위로, 데이터베이스에서 데이터를 수정하거나 관리할 때 예외가 발생하는 등의 변수를 고려해 작업의 성공, 실패, 복구를 보장하기 위해 사용됩니다.트랜잭션은 작업이 성공하면 commit으로 결과를 확정하고,.. 2025. 1. 16.
[디프만] 16기 서버 파트 최종 합격 후기 2024년 12월, 디프만 16기에 지원했고 감사하게도 최종 합격하여 새로운 분들과 함께 새로운 경험을 할 기회를 얻게 되었습니다.☺️디프만은 다른 연합 동아리와 달리 4개월이라는 긴 기간 동안 진행되고, 직장인분들과 협업할 수 있는 좋은 기회를 제공한다는 점에서 꼭 참여해보고 싶었던 활동이에요. 평소 개발하면서 디프만 같은 연합 동아리를 꾸준히 레퍼런스로 삼았는데, 제가 직접 그곳에 참여하게 되다니 정말 신기하고, 지난 1년 동안 많이 성장했다는 생각에 뿌듯함이 가득합니다..! 😉이번 글에서는 개발이 즐거운 지금의 시간을 기록하며, 디프만 지원 과정을 공유해 다음 기수에 지원하시는 분들께 조금이나마 도움이 되고자 합니다. 🎉 디프만을 진행하면서 있었던 일은 추후에 작성해보겠습니다.참고로 16기 경쟁.. 2024. 12. 31.