인프런

진화하는 아키텍처

date
Mar 12, 2025
slug
test-on-spring-with-architecture-6
status
Public
tags
테스트를 추가하고 싶은 개발자들의 오답노트
author
summary
아키텍처와 테스트 그리고 헥사고날
type
Post
thumbnail
updatedAt
Mar 24, 2025 01:19 PM
category
인프런

📝 강의 정리


테스트 하기 좋은 코드가 정답일 확률이 높다

 

아키텍쳐


  • 고정된 산출물이 아니라 계속된 탐구 과정이다
 

아키텍트의 목표

  • 인적 자원 절감
    • 동시 작업이 가능하게
      • → 관심사를 분리
        의존성 역전 및 다른 여러 방법
    • 이는 결국 경계를 만드는 과정
  • 정책을 만들고 세부사항을 미루는 시스템 개발
    • 개발 초기에는 세부사항을 선택할 필요가 없다
      • → DBMS, 웹 서버, REST, 의존성 프레임 워크
    • 도메인이 먼저 개발되어야 한다.
 
 
 
 

헥사고날 아키텍쳐


[1] JpaRepository as Repository


  • JPA Repository 또한 인터페이스이기 때문에 테스트에서 FakeRepository를 상속하게 할 수 있다.
    • 그러나,
    • Fake가 불필요한 인터페이스를 구현해야 한다.
    • Domain Entity가 Persistence Entity에 종속된다.
 

[2]. JpaRepository as RepositoryImpl


interface UserRepositoryImpl extends UserRepository, JpaRepository<UserEntity, Long> ... interface UserRepository { Optional<UserEntity> method(); }
  • 가령 findByIdAndStatus라는 메서드를 호출할 때, JpaRepository가 해당 메서드만 호출해준다. 따라서, 1에서의 모든 메서드를 구현할 필요가 없다.
    • 그러나,
    • JpaRepository의 메소드에서 UserEntity를 반환받으므로,
      • 이 또한, Domain Entity가 Persistence Entity에 종속되는 같은 문제가 발생
 

📎 출처