[항해 플러스 LITE 1기] 서버 구축(3주차)

2025. 6. 11. 01:13·TIL

알게 된 점

  1. 아키텍처란?
    코드의 큰 그림이자, 팀 전체가 공유해야 할 변경 난이도 높은 의사결정의 집합임을 실감했다.
  2. 속도가 느려지는 원인
    프로젝트가 커질수록 구조적 부채가 누적되고, 설계 원칙과 패턴을 활용해야 유지보수가 수월해진다.
  3. SOLID & TDD
    ‘유지보수하기 쉬운 구조’를 위한 최소 단위 습관이다. 원칙을 인지하고 적용해야 의미가 있다는 점을 배웠다.
  4. 아키텍처 진화
    Layered → Hexagonal → Clean 아키텍처로 갈수록 도메인 독립성이 높아지고, 테스트와 확장 편의성도 함께 커진다.
    현실적으로는 기존 구조(Layered) 위에 Clean 원칙을 점진적으로 도입하는 리팩터링 전략이 많이 쓰인다.

SOLID

  • SRP : 한 클래스는 하나의 이유로만 변경해야 한다.
  • OCP : 기존 코드 변경 없이 확장이 가능해야 한다.
  • LSP : 구현체가 인터페이스 규약을 지켜야 다형성이 유지된다.
  • ISP : 한 클래스가 자신과 무관한 메서드들까지 가진 커다란 인터페이스를 구현하지 않도록 한다.
  • DIP : 상위 모듈은 구체 구현이 아니라추상에 의존해야 테스트가 쉬워진다.

TDD 설계

단계 설계 신호 도입된 패턴/원칙
Red 가짜 객체 필요 DIP (인터페이스 추출)
Green 테스트 격리 OK DI / SRP
Refactor 확장성 확보 OCP / LSP / ISP

아키텍처 패턴

패턴 설명 적용 예시
Layered Controller → Service → Repository 단방향 의존 소규모 팀 / CRUD
Hexagonal 도메인 중심 육각형, 포트/어댑터구조 멀티 인터페이스, 도메인 공유 서비스
Clean 의존성 역전, 추상계층 극대화 멀티모듈 대규모 서비스

실습: 콘서트 목록 조회 기능 구현 PR

이번 강의를 바탕으로 GitHub PR #3을 콘서트 목록 조회 기능을 구현했다.

  • Concert, ConcertDate 엔티티 및 JPA 레포지토리 구현
  • 콘서트 목록/공연 날짜 조회 API 및 단위 테스트 추가
  • BaseTimeEntity 생성, JPA Auditing 적용
  • DTO 및 패키지 구조 정비, 서비스·레포지토리 테스트 코드 보완

고민

  • 테스트 코드 작성과 리팩토링:
    Mock 객체 생성, 테스트 데이터 중복이 반복되었다.
  • 계층별 테스트 책임:
    컨트롤러/서비스/레포지토리/통합 테스트 경계가 여전히 헷갈렸다.
  • 커밋/PR 관리:
    서비스와 테스트 코드를 한 번에 리팩터링 할 때, 커밋을 어떻게 쪼갤지 많이 고민했다.

받은 피드백 요약

  • Mock 반복/테스트 데이터 생성: Mockito 어노테이션, Builder/Fixture 활용 추천
  • 계층별 테스트: 컨트롤러는 서비스 모킹 후 입출력 검증, 통합테스트는 실제 객체로 연동 검증
  • 커밋: 파일 단위가 아닌 기능/변경 단위로 쪼개기 권장

회고

  • 실제 코드를 짜며 ‘불편함’을 겪어보니 SOLID, TDD, 계층별 책임 구분의 중요성을 알게되었다.
  • 테스트 데이터 중복 제거(Buider/Fixture 활용), 커밋/PR 단위 쪼개기, 도메인 중심 설계와 레이어 분리를 실천해 볼 계획이다.
  • 기존 구조를 한 번에 바꾸기보다, 복잡하고 핵심적인 모듈부터 점진적으로 클린 아키텍처를 적용해 나갈 계획이다.

'TIL' 카테고리의 다른 글

[항해 플러스 LITE 1기] 서버 설계(2주차)  (0) 2025.06.01
[TIL] 백준 11060 - 점프 점프 ( python )  (0) 2025.03.22
[TIL] 백준 13702 - 이상한 술집 ( python )  (0) 2025.03.20
[TIL] 백준 25418 - 정수 a를 k로 만들기 ( python )  (0) 2025.03.19
[TIL] 백준 2467 - 용액 ( python )  (0) 2025.03.18
'TIL' 카테고리의 다른 글
  • [항해 플러스 LITE 1기] 서버 설계(2주차)
  • [TIL] 백준 11060 - 점프 점프 ( python )
  • [TIL] 백준 13702 - 이상한 술집 ( python )
  • [TIL] 백준 25418 - 정수 a를 k로 만들기 ( python )
밀27
밀27
  • 밀27
    밀2
    밀27
    • 분류 전체보기 (35)
      • Git (1)
      • AWS (1)
      • Flutter (3)
      • Spring (3)
      • MariaDB (2)
      • TIL (25)
      • Daily (0)
  • 블로그 메뉴

    • 홈
    • 태그
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
밀27
[항해 플러스 LITE 1기] 서버 구축(3주차)
상단으로

티스토리툴바