본문 바로가기

분류 전체보기

(49)
TestContainer 로 테스트환경 셋업하기 기존의 레거시 서버들의 테스트 환경에서는 1. 특정 테스트용 스키마를 이용하여 테스트 2. In-Memory DB (H2) 를 이용하여 테스트 2가지 방법으로 동작되고 있었습니다. 하지만 이로 인해 많은 파생되는 문제들을 겪었는데요. 1. 특정 테스트용 스키마를 이용하여 테스트 의 경우 멱등성있는 환경을 유지하기가 어려웠고. 2. In-Memory DB (H2) 를 이용하여 테스트는 운영에서 사용하는 RDBMS 와 다른 환경으로 인한 차이로 인한 오류를 잡지 못하고 운영에 배포되거나, 반대로 리얼에서는 돌아가나 테스트를 실패하는 경우가 존재할 수 있다는 문제점이 있었습니다. 또한, 다양한 3rd Party 서비스를 사용하고 있었지만 대부분 Mocking을 통한 테스트 혹은 제대로 테스트가 되지 않은 케이..
Hexagonal Architecture (헥사고날 아키텍쳐) 란? MSA 에 있어서 디커플링된 시스템 아키텍쳐도 중요하지만, MSA 역시 작은 어플리케이션의 집합이기 때문에, 어플리케이션 레벨에서의 설계 역시 매우 중요하다. 인프라스트럭쳐 레벨의 큰 관점에서 관심사를 응집시키고, 의존성을 줄였어도 어플리케이션 레벨에서 의존성이 거미줄 처럼 얽혀있고 확장성이 없다면 MSA가 가지는 이점을 결코 활용할 수 없을 것 이다. 전통적인 아키텍쳐인 레이어드 아키텍쳐를 먼저 살펴보자. 1. 레이어드(Layered) 아키텍쳐 레이어드 아키텍쳐를 가지는 어플리케이션은 일반적으로 Presentation Layer, Business Layer, Persistence Layer 세개의 계층을 가진다. 레이어드 아키텍쳐는 각 레이어의 응집도를 높히고 레이어 간 결합도를 낮추기 위하여 다음과 ..
Enum 을 BeanProvider로 사용해보기 대략 이런 구조의 여러개의 도메인 루트들이 여러 셋팅 값들의 집합인 Mapper 라는 엔티티를 도메인 루트로 지니는 도메인과 의존성을 맺고 있다고 예시를 들겠습니다. 이때, 각 루트 엔티티의 ID 로 Mapper 의 ID 를 조회하는 API 가 필요하다는 요구사항이 있었습니다. 단순히 생각하면, 3개의 API 를 생성하는것으로 해결할 수 있지만, 다른 방법을 찾고 싶었고 아래와 같이 어떤 도메인인지 Enum 을 받아 처리하는 API 를 구현하기로 했습니다. GET /settings/owners/{owner}/{id} ex) /settings/owners/PROJECT/50a10f9e-32b5-4a0d-8773-fa2413cd0a75 처음엔 단순히 구현해봅니다. @RequiredArgsConstructor..
SQL Antipatterns - 빌 카윈 https://book.interpark.com/product/BookDisplay.do?_method=detail&sc.shopNo=0000400000&sc.prdNo=208517184&sc.saNo=003002001&bid1=search&bid2=product&bid3=title&bid4=001 싸니까 믿으니까 인터파크도서 book.interpark.com 엔진 성능이 좋아지면서, 그리고 ORM 의 사용이 널리 퍼지면서 SQL 보다는 코드에 더 신경쓰는 분위기가 된 것 같습니다. 하지만 결국 성능에 가장 큰 영향을 주는것은 DBMS 고 최적화에서 최 우선적으로 고려되는 부분이기 때문에, 여전히 DB 설계, 그리고 ORM 을 사용하더라도 성능이 좋은 쿼리가 나가도록 하는것이 중요하다고 생각합니다. SQ..
도메인 주도 설계 - 에릭 에반스 https://book.interpark.com/product/BookDisplay.do?_method=detail&sc.shopNo=0000400000&sc.prdNo=240925953&sc.saNo=003002001&bid1=search&bid2=product&bid3=title&bid4=001 싸니까 믿으니까 인터파크도서 JPA를 처음 접했을 때의 놀라움은 아직도 잊혀지지 않는다. 지금까지 관계형 데이터베이스에서 객체를 관리하려고 작성했던 무수한 CRUD 코드와 SQL들이 머릿속을 스쳐 지나갔다. 마치 시골에서 book.interpark.com 요즘 가장 관심있는 키워드입니다. 객체지향 코드의 문제점인 깊은 객체 그래프 탐색으로 인한 갈수록 비대해지고 이해하기 어려워지는 서비스를 바운더리 컨텍스트,..
Java ORM 표준 JPA 프로그래밍 - 김영한 https://book.interpark.com/product/BookDisplay.do?_method=detail&sc.shopNo=0000400000&sc.prdNo=240925953&sc.saNo=003002001&bid1=search&bid2=product&bid3=title&bid4=001 싸니까 믿으니까 인터파크도서 JPA를 처음 접했을 때의 놀라움은 아직도 잊혀지지 않는다. 지금까지 관계형 데이터베이스에서 객체를 관리하려고 작성했던 무수한 CRUD 코드와 SQL들이 머릿속을 스쳐 지나갔다. 마치 시골에서 book.interpark.com 도메인주도설계를 위해 JPA 단점을 해결하기 위해 나온 Spring Data JDBC 등도 요즘 핫하지만, 아무래도 아직까지는 Java 진영의 대표 ORM ..
테스트 주도 개발 - 켄트백 https://book.interpark.com/product/BookDisplay.do?_method=detail&sc.shopNo=0000400000&sc.prdNo=214078987&sc.saNo=003002001&bid1=search&bid2=product&bid3=title&bid4=001 싸니까 믿으니까 인터파크도서 생년월일 - 저자 김창준은 현재 애자일 컨설팅 대표이며, 애자일 이야기라는 블로그를 운영하고 있다. 또한 2002년에 한국 XP 사용자 모임(http://xper.org)을 설립했다. 삼성전자, LG전자, 다음커뮤니 book.interpark.com 개인적으로는 테스트 주도 설계에 처음 관심이 생겼을때 읽었으나, 큰 도움이 되지는 않았던 책입니다. 저자의 문제 해결을 위해 테스트 ..
OBJECT - 조영호 https://book.interpark.com/product/BookDisplay.do?_method=detail&sc.shopNo=0000400000&sc.prdNo=308716476&sc.saNo=003002001&bid1=search&bid2=product&bid3=title&bid4=001 싸니까 믿으니까 인터파크도서 book.interpark.com 객체지향의 사실과 오해의 저자 조영호님의 책입니다. 객체지향의 사실과 오해는 코드보다는 이야기로서 객체를 대하는 시선과 개념의 이해를 알게해주었다면, 오브젝트는 많은 코드 예제와 함께 실제 코드를 작성할 때, 어떻게 객체를 캡슐화하고 추상화하며 설계를 개선해 나가는지 보여줍니다. 객체지향의 사실과 오해를 가볍게 먼저 읽고 오브젝트를 읽으면 많은 도..