%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4

2019-02-19
해당 코드는 Github 에 공개되어있습니다. 스프링은 다양한 테스트 전략을 제공하고 있습니다. 대표적으로 Slice Test 라는 것으로 특정 레이어에 대해서 Bean을 최소한으로 등록시켜 테스트 하고자 하는 부분에 최대한 단위 테스트를 지원합니다. 다양하게 지원해주는 만큼 테스트 코드를 통일성 있게 관리하는 것이 중요합니다. 더 안전하고 통일성 있게 테스트를 진행하는 방법에 대해서 제 나름의 노하우를 정리해보았습니다. 테스트 전략 어노테이션...
2019-02-15
소개 안녕하세요. Popit에서 글을 쓰고 있는 김대희라고 합니다.  백엔드 개발자로서 , 프런트 개발자 분들이 쓰는 프레임워크 비교 기사를 보게되었는데 이 글이 흥미롭고 재미있게 읽을 수 있어서 해당 글을 번역하게 되었습니다. 기사와 개발자분들이 접하는 부분이 많이 다를 수 있고, 다소간 매끄럽지 않더라도 많은 좋은 피드백 부탁드립니다. 원본글은 다음글에 참고하세요. React vs. Angular Compared: Which One Suits Your Project Better? React vs Angular  : 둘 중 어떤 것이 당신의 프로젝트에 알맞을까요?...
2019-02-15
연휴 [1] 를 마치고 출근해서 처음으로 머리써서 처리한 일은 동료 개발자 가 두레이에 남겨 놓고 간 작업입니다. 필자가 먼저 서울에 갔을 때 북경에 남아 있던 [2] 그가 갱신한 작업 내용을 보고, 필자가 '무얼 더 개선할 수 있을까?' 생각하는 일입니다. 그가 나에게 작업을 요청한 것이 아니라 우리가 서로 나눴던 의견을 상기하고, 그의 개선에 대해 살펴보는 일인 터라 매우 느슨한 협업이라 할 수 있습니다. 그는 왜 UML 그림을 그렸는가? 지난 번에 둘이 만나 나눈 이야기부터 떠올려봅니다. 매일 일상이 Go로 프로그램을 짜는 그가 굳이 UML 도해를 그려 두레이에 공유했습니다. 필자가 Go 개발자가 아닌 탓도 있겠지만, 그가 UML로 표현하는 목적을 친절하게 써두었습니다....
2019-02-15
해당 코드는 Github 를 확인해주세요. Repository Code JpaRepository를 이용해서 복잡한 쿼리는 작성하기가 어려운점이 있습니다. findByEmail , existsByEmail 같은 유니크한 값을 조회하는 것들은 쿼리 메서드로 표현하는 것이 가독성 및 생산성에 좋습니다. 하지만 복잡한 쿼리가 복잡해지면 쿼리 메서드로 표현하기도 어렵습니다. @Query 어노테이션을 이용해서 JPQL을 작성하는 것도 방법이지만 type safe 하지 않아 유지 보수하기 어려운 단점이 있습니다. 이러한 단점은...
2019-02-07
해당 코드는 Github 를 확인해주세요. step-12: 페이징 API 만들기 에서 JPA와 Pageable 를 이용해서 간단한 페이징 API를 만들었습니다. 이번 포스팅에서는 Query Dsl 동적 쿼리를 이용해서 검색 페이징 API를 만들어 보겠습니다. 기초 작업 Maven을 기준으로 설명드리겠습니다. 아래의 코드를 pom.xml 에 추가하고 mvn compile 을 진행합니다. complie이 성공적으로 완료되면 target/generated-sources/java 디렉토리에 QXXX 클래스 파일 생성되는 것을 확인할 수 있습니다. Controller...
2019-01-28
첫 연재에서 소개한 개념 정제 후에 동료 개발자 가 해당 내용 구현에 나섰습니다. 두 계층으로 나누어 연결한 상품 개념 이전에 그린 그림을 조금 수정해서 상황에 대한 설명을 보강합니다. Product와 Item 개념 사이에 그린 두 가지 관계를 동료 개발자 가 구현한 것이 아닙니다. 그래서, 둘 사이를 연결하는 Catalog 개념을 추가하여, 그의 구현을 Catalog 개념 구현으로 바라보겠습니다. [caption id="attachment_20462" align="aligncenter" width="600"] 두 개념 사이에 카타로그 개념을 추가하기[/caption]...
2019-01-26
해당 코드는 Github 를 확인해주세요. JPA를 이용해서 Paging API를 만들어 보도록 하겠습니다. 페이징 처리는 거의 모든 웹 개발에서 사용하고 있습니다. 그렇게 복잡하고 어려운 구현은 아니나 실제 쿼리로 작성할 때는 상당히 번거로운 작업이 됩니다. 또 데이터베이스마다 페이징 쿼리가 조금씩 다르다는 점도 복잡도를 높이는 요인 중 하나입니다. Spring Data JPA에서는 이러한 문제를 아주 쉽게 해결할 수 있어 핵심 비즈니스 로직에 집중할 수 있게 해줍니다. 지금부터 예제를 설명하겠습니다....
2019-01-22
필자는 도메인 주도 설계 Domain-Driven Design (이하 DDD) 빌딩 블록 Building blocks[1] 으로 애플리케이션을 구현하면서 엔티티 ENTITY[2] 마다 리파지토리 REPOSITORY 를 만드는 것을 자주 보았는데 자세히 살펴보면 여러 엔티티를 묶어서 하나처럼 사용하는 경우가 대부분이었다. DDD에서는 이러한 연관 객체의 묶음을 애그리게잇 AGGREGATE 이라고 정의하고 애그리게잇에 포함된 특정 엔티티를 루트 Root 엔티티라고 부른다. 그리고 리파지토리를 만들 때 애그리게잇 루트 엔티티에 대해서만 리파지토리를 제공하라...
2019-01-21
처음으로 공개 블로그인 Popit에 글을 올려봅니다. 단어나 표현이 조금 부족하더라도 너그러운 마음으로 읽어 주세요. 감사합니다. 초고속 인터넷망의 지속적인 확산과 모바일 환경이 빠른 속도로 진화를 거듭해왔지만 , 고 해상도 디지털 비디오를 인터넷으로 전송하는 작업은 항상 품질에 대한 확신을 할 수 없는 어려운 일이다 . 최근 VoD(Video-on-Demand) 사업의 경쟁이 치열해지다보니 라이브 비디오 스트리밍 서비스를 이용한 새로운 사업들이 디지털 비디오 시장의 새로운 성장 동력이 되어 많은 회사들이 시장에 진입하고 있는 상황이다....
2019-01-18
커머스 혹은 유통 도메인 설계에 대한 연작 내용 중에서 아래 그림이 있습니다. 그림에 대한 설명으로 계층이란 표현을 썼지만, 그림 자체에는 계층에 대한 어떤 내용도 없습니다. 연작이기 때문에 뒤에 쓴 다른 글 에 계층을 왜 두었는지 설명이 있을 뿐입니다. 그림만보면 상품 이라고 불리는 같은 개념을 구분 해보고, 각각을 Product 와 Item 이라고 불러보자고 결정한 사항이라 할 수 있습니다. [caption id="attachment_19550" align="alignnone" width="600"] 두 계층으로 나누어 연결한 상품 개념[/caption] 어쩌면 위스토어...
더보기