처음 처음 | 이전 이전 | 1 | 2 |다음 다음 | 마지막 마지막
도메인 주도 개발 시작하기 - DDD 핵심 개념 정리부터 구현까지
최범균 지음 / 한빛미디어 / 2022년 3월
평점 :
장바구니담기


 

이 책의 독자는 DDD의 입문자를 위한 책입니다. 이 책은 Java, Spring 그리고 JPA코드로 주로 설명이 되어 있어서 해당 기술들을 조금 알고 있으면 도움이 될 것 같습니다. (객체 지향의 다형성, 상속, 캡슐화, DIP 개념도 알고 있으면 좋을 것 같습니다.)

사실 이 책이 재출간되기 전 DDD start!란책을 갖고는 있었지만 읽지는 못한 상태였습니다. 이 책을 재출간된다는 소식을 알고는 있었는데 4월 도서 리뷰 리스트에 이 책이 있는 걸 보자마자 주저 없이 바로 선택했습니다. 요즘 하고 있는 우아한테크코스 pro 프리코스에서도 도메인 단위로 기능 명세를 만들고 그 순서대로 테스트, 구현을 매우 중요하게 요구하고 있었는데, 그런 점으로 보아 도메인의 중요성은 크구나 느꼈습니다. 

사실 DDD는 예전에 MSA 스터디할 때 조금 공부해본 것 말고는 잘 모르지만 이 책을 읽으면서 그때 공부했던 기억을 리마인드 할 수 있었던 게 개인적으로 좋았습니다. "마이크로 서비스 아키텍처는 도메인 중심으로 서비스를 모델링하는 것이 중요하다."라고 공부했던 게 기억이 나는데 서비스가 충분히 커서 MSA로 갈 때 그만큼 중요한 것이 도메인이라는 것이 다시 한번 생각났습니다. 개인적으로는 리뷰하기 어려운 상급(?) 난이도의 책인 거 같은데... 생각보다 두께가 두껍고 기술적인 내용이 거의 다여서 그냥 중요하다고 생각되는 일부분만 정리하고 마무리하려고 합니다. 

 

내용 정리

도메인이란 소프트웨어로 해결하고자 하는 문제 영역입니다. 도메인은 여러 하위 도메인으로 구성되면 도메인끼리 연동하여 기능을 제공합니다. DDD 하면 떠오르는 것 중에 하나가 각각 Layer별 특징이 있는데 아래와 같습니다.

사용자 인터페이스 계층 : 사용자의 요청을 처리하고 사용자에게 정보를 보여준다. 여기서 사용자는 소프트웨어를 사용하는 사람뿐만 아니라 외부 시스템일 수 도 있다.

응용 계층 : 사용자가 요청한 기능을 실행한다. 업무 로직을 직접 구현하지 않으며 도메인 계층을 조합해서 기능을 실행한다.

도메인 계층 : 시스템이 제공할 도메인 규칙을 구현한다.

인프라스트럭쳐 계층 : 데이터베이스나 메시징 시스템과 같은 외부 시스템과의 연동을 처리한다.

위 DDD에서 네 영역 중 가장 핵심은 아무래도 도메인 계층입니다. 도메인 계층의 주요 구성요소는 아래와 같습니다.

엔티티(Entity) : 고유의 식별자를 갖는 객체로 자신의 라이프 사이클을 갖는다. 

밸류(Value) : 고유의 식별자를 갖지 않는 객체로 주로 개념적으로 하나인 값을 표현할 때 사용된다.

애그리거트(Aggregate) : 애그리거트는 연관된 엔티티와 밸류 객체를 개념적으로 묶은 것이다.

리포지토리(Repository) : 도메인 모델의 영속성을 처리한다. 예를 들어 DBMS 테이블에서 엔티티 객체를 로딩하거나 저장하는 기능을 제공한다.

도메인 서비스(Domain Service) : 특정 엔티티에 속하지 않는 도메인 로직을 제공한다.

 

  "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
프로그래머의 뇌 - 훌륭한 프로그래머가 알아야 할 인지과학의 모든 것, 2022 세종도서 학술부문 선정
펠리너 헤르만스 지음, 차건회 옮김 / 제이펍 / 2022년 1월
평점 :
장바구니담기


이 책은 두뇌가 프로그래밍을 어떻게 처리하는지 알려주고 있습니다.
처음엔 책에서 알려주는 방법들이 유용하게 사용될 수 있을까 하는 의구심이 들긴 했습니다.
하지만 코딩을 정말로 좋아하는 사람이라면 내 뇌에서 읽어 나는 일들에 대해서 알아보는 것도 좋을 것 같습니다.

댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
프로그래머의 뇌 - 훌륭한 프로그래머가 알아야 할 인지과학의 모든 것, 2022 세종도서 학술부문 선정
펠리너 헤르만스 지음, 차건회 옮김 / 제이펍 / 2022년 1월
평점 :
장바구니담기


 

이 책의 독자는 이 책의 목적이 두뇌가 코드를 처리하는 방식에 대한 이해를 돕는 것이기 때문에, 프로그래밍 관련 직종에 종사하시는 어떠한 분이든 이 책을 읽으시면 좋을 것 같습니다.

책의 목차를 보면 프로그래밍을 하다가 생기는 인지 과정과 그 한계에 대해서 알려주고, 한계 넘어 효과적으로 프로그래밍을 할 수 있는 방법에 대해서 알려주고 있습니다. 최근에 많은 프로그래밍 책을 읽었는데, 읽은 책 중에서 가장 신선하게 다가왔습니다. 약간 김창준님의 함께자라기와 비슷한 느낌을 주는 책이었습니다.

개인적으로 책에서 제공해주는 내용이 너무 방대해서 밑줄 치면서 책을 읽어야 그나마 머릿속에 저장되는 느낌을 받았습니다. 책의 모든 내용을 정리할 순 없지만, 리마인드 할 겸 밑줄 친 내용들을 간략하게 정리해보겠습니다.(읽은 부분까지만)

책 초반에는 우리가 프로그래밍을 잘하지 못하는 이유는 지식이 부족하거나, 정보가 부족하거나, 처리 능력이 부족함 때문임을 알려주고 LTM(Long-term memory), STM(Short-term-memory), 작업 기억 공간(working momory)의 영역이 존재한다. 체스 말을 복기하는 방식에 대한 일반인들과 전문가 그룹의 차이, 청킹 연습, 플래시카드를 사용한 문법 기억, 복잡한 코드를 읽는 방법, 리팩토링..

이 책은 두뇌가 프로그래밍을 어떻게 처리하는지 알려주고 있습니다. 초반 부분을 읽을 때 느낀 것은 처리 방식을 안다고 해서 프로그래밍을 더 잘해지는 건 아닐 것 같고, 이 책에서 알려주는 방법들이 실제 업무에서 유용하게 사용될 수 있을까 하는 의구심이 들긴 했습니다. 하지만 코딩을 정말로 좋아하는 사람이라면 한 번쯤은 내 뇌에서 읽어 나는 일들에 대해서 알아보는 것도 좋을 것 같습니다.

가장 인상적인 부분이 있었는데 리팩토링은 무조건 좋은 것이 아니라는 구절이 이었습니다. "코드가 전체적으로 유지 보수하기 좋게 수정됐다고 해서 그게 가독성까지 반드시 좋아지는 것은 아니다. 탈국지화된 코드는 여러 군데에서 메서드의 내부 구현을 찾아봐야 하기 때문에 작업 기억 공간에는 어려움을 줄 수 있다. 유지 보수하기 좋은 코드를 작성하기보다는 장기적으로 가독성이 높은 코드를 작성하도록 리팩터링하는 것이 좋을 수도 있다." 

1. 내가 읽기 좋은 코드

2. 내 동료들이 읽기 좋은 코드

3. 유지보수하기 좋은 코드

사이에서 trade-off를 잘 따져가면서 코딩하자.!

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=285967039 


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
그래프QL 인 액션
사메르 부나 지음, 김완섭 옮김 / 한빛미디어 / 2021년 12월
평점 :
장바구니담기


 

예제 코드

https://github.com/jscomplete/graphql-in-action

 

대상 독자

좋은 API를 만들고 싶은 프론트엔드, 백엔드 개발자

선수지식으로 javascript, node.js, RDBMS, 몽고 DB, REST API에 대한 지식이 있으면 예제를 이해하는데 좋을 것 같습니다.

구성

1장 : GraphQL에 대한 소개, 왜 GraphQL인지, REST API와의 차이점 및 비교, GraphQL의 문제점은 무엇인지

2장 : GraphQL API에 대해, 그래피컬 편집기, 기초 GraphQL 언어, 깃헙 GraphQL예제

3장 : GraphQL에 대한 작업 수정 및 구성, 필드 변경, GraphQL 조각

4장 : GraphQL 스키마 설계, 쿼리, 모델링

5장 : GraphQL 개발환경 실행, 런타임 설정, 스키마 생성

6장 : GraphQL DB설정

7장 : GraphQL 캐싱, 작업 최적화

8장 : GraphQL 변경 작업

9장 : 라이브러리 쓰지 않는 GraphQL 사용방법

10장 : Apollo를 통한 GraphQL API 사용방법

 

주요 내용 요약

페이스북이 GraphQL을 만들기로 한 이유는 모바일 애플리케이션 개발 시 발생하는 여러 기술적 문제를 해결하기 위해서였다. 하지만 현재 GraphQL이 인기를 얻고 있는 이유는 기술적 문제보다는 커뮤니케이션 문제를 해결하기 때문이다.

GraphQL은 현실 세계의 데이터를 표현하는 가장 적합한 방법이 그래프라는 사실에서 착안했다. GraphQL에서 QL은 Query Language를 의미해 오해를 불러일으킬 수 있다. API를 사용하는 프런트엔드 입장에서만 보면 GraphQL은 데이터 API용 쿼리 언어가 맞지만 한편으로는 백단에서 구현해야 하는 런타임 계층의 역할도 하기 때문이다.

필자에게 "왜 GraphQL인가?"라고 묻는다면, 한 단어를 답할 것이다. 바로 표준(Standard)이다. 클라이언트-서버 구조에서 서 GraphQL을 선택하는 가장 중요한 기술적 이유는 효율성이다. API 클라이언트는 종종 서버에게 여러 리소스를 요청해야 하지만 API 서버는 보통 하나의 리소스만 응답하는 방법을 안다. 결과적으로 필요한 모든 데이터를 얻기 위해선 클라이언트가 서버에게 여러 번 요청하게 된다. GraphQL은 이런 다중 요청의 복잡성을 백엔드에 부담시켜?(묶어서? 책에는 부담시킨다고 표현하였으나 문맥상 다중 요청을 하나로 묶는다의 의미로 추정됨) GraphQL 런타임이 처리하도록 만든다.

GraphQL과 REST API의 차이점

REST API의 단점

1. REST API가 가진 가장 큰 문제점은 여러 개의 데이터 API 엔드포인트와 커뮤니케이션을 한다는 것이다.

2. REST API에는 클라이언트 용 요청 언어가 없다. 클라이언트가 서버에 무엇을 원하는지 정확하게 알 수 있는 언어가 없으므로 서버가 변환하는 데이터를 제어할 수 없다.

3. REST API의 또 다른 큰 문제는 버전 관리이다. 여러 버전을 제공해야 한다면, 엔드포인트도 여러 개 준비해야 한다.

REST API의 장점

1. GraphQL의 응답보다 캐싱하기 쉽다.

2. 여러 REST 엔드포인트의 코드를 최적화하는 것이 GraphQL의 단일 엔드포인트를 최적화하는 것보다 쉽다.

GraphQL의 방식

1. 타입이 정해진 스키마

2. 선언적 언어 : 선언적 언어를 통해 GraphQL을 보다 사용하기 쉽게 만든다.

3. 단일 엔드포인트와 클라이언트 언어 : 클라이언트 요청 언어는 클라이언트가 제어권을 갖도록 해준다. 클라이언트는 필요한 것을 정확하게 요청할 수 있으며, 서버 또한 요청받은 데이터를 정확하게 응답할 수 있다. 이것은 불필요한 데이터의 과다 추출 문제도 해결해 준다.

4. 간단한 버전 관리

서평 

서버 개발자로서 여태까지 REST API로 개발만 하다가 GraphQL이라는 것을 이 책을 통해 처음 접해보았습니다. REST하진 않지만 REST라고 자체적으로 부르는 API를 사용해 왔고 머릿속도 REST API구조만 박혀 있다가, 요즘 핫한 최신 기술 스택인 GraphQL을 배울 수 있어서 좋았습니다. 옮긴이의 말처럼 REST API에 익숙한 개발자라면 GraphQL에 익숙해지는데 시간이 걸리겠지만, 이 책을 통해 실제 업무에 적용해 볼 수 있는 계기가 되지 않을까 생각합니다. 이 책의 장점은 javascript와 node의 간단하고 쉬운 예제들로 구성되어 이해하기 쉬고 따라 하기 쉽다입니다. 뒷부분으로 갈수록 백 단에 관심이 있는 사람으로서(저를 포함) 리액트라던지, 웹 UI 라이브러리라던지, 아폴로 라이브러리가 나오면서 다시 지루해질 수 있으므로, 그런 분들은 앞부분을 중점적으로 보는 것을 추천드립니다.

아쉬웠던 부분으로는 이해를 돕기 위해 특징 및 구조를 서술하는 부분이 굉장히 많은데 오히려 이러한 부분이 지루함을 유발할 수 있을 것 같습니다. 또한 책을 번역하는 과정에서 의미가 조금 모호한 표현과 오탈자가 조금 있던 부분은 아쉬웠습니다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
그래프QL 인 액션
사메르 부나 지음, 김완섭 옮김 / 한빛미디어 / 2021년 12월
평점 :
장바구니담기


옮긴이의 말처럼 REST API에 익숙한 개발자라면 GraphQL에 익숙해지는데 시간이 걸리겠지만, 이 책을 통해 실제 업무에 적용해 볼 수 있는 계기가 되지 않을까 생각합니다.
˝한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.˝

댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
처음 처음 | 이전 이전 | 1 | 2 |다음 다음 | 마지막 마지막