책 공부
-
07. 도메인 서비스책 공부/DDD 도메인 주도 개발 시작하기 2024. 1. 30. 20:07
1. 여러 애그리거트가 필요한 기능 p. 234 도메인 영역의 코드를 작성하다 보면, 한 애그리거트로 기능을 구현할 수 없을 때가 있다. 한 애그리거트에 넣기 애매한 도메인 기능을 억지로 특정 애그리거트에 구현하면 안 된다. 억지로 구현하면 애그리거트는 자신의 책임 범위를 넘어서는 기능을 구현하기 때문에 코드가 길어지고 외부에 대한 의존이 높아지게 되며 코드를 복잡하게 만들어 수정을 어렵게 만드는 요인이 된다. 게다가 애그리거트의 범위를 넘어서는 도메인 개념이 애그리거트에 숨어들어 명시적으로 드러나지 않게 된다. 이런 문제를 해소하는 가장 쉬운 방법은 도메인 기능을 별도의 서비스로 구현하는 것이다. 2. 도메인 서비스 p. 237 도메인 서비스는 도메인 영역에 위치한 도메인 로직을 표현할 때 사용한다. ..
-
06. 응용 서비스와 표현 영역책 공부/DDD 도메인 주도 개발 시작하기 2024. 1. 29. 09:56
1. 표현 영역과 응용 영역 p. 200 표현영역 표현 영역은 URL, 요청 파라미터, 쿠키, 헤더 등을 이용하여 사용자가 실행하고 싶은 기능을 판별하고 그 기능을 제공하는 응용 서비스를 실행한다. 응용 서비스 응용 서비스는 기능을 실행하는 데 필요한 입력 값을 메서드 인자로 받고 실행 결과를 리턴한다. 응용 서비스의 메서드가 요구하는 파라미터와 표현 영역이 사용자로부터 전달받은 데이터는 형식이 일치하지 않기 때문에 표현 형역은 응용 서비스가 요구하는 형식으로 사용자 요청을 변환한다. 응용 영역은 사용자가 웹 브라우저를 사용하는지 REST API를 호출하는지, TCP 소켓을 사용하는지를 알 필요가 없다. 2. 응용 서비스의 역할 p. 202 응용 서비스는 사용자의 요청을 처리하기 위해 리포지터리에서 도메..
-
05. 스프링 데이터 JPA를 이용한 조회 기능책 공부/DDD 도메인 주도 개발 시작하기 2024. 1. 24. 08:39
1. CQRS 패턴에 대한 간단한 소개 CQRS에 대해서는 11장에서 학습 p. 174 명령(Command) 모델과 조회(Query) 모델을 분리하는 패턴 명령 모델 command 상태를 변경하는 기능 구현 ex : 회원 가입, 암호 변경, 주문 취소 엔티티, 애그리거트, 리포지터리 등 모델은 명령 모델로 주로 사용된다. 조회 모델 query 데이터를 조회하는 기능 구현 ex : 주문 목록, 주문 상세 정렬, 페이징, 검색 조건 지정과 같은 기능은 조회 기능에 사용된다. 이 장에서 사용하는 예제 코드는 리포지터리(도메인 모델에 속한)와 DAO(데이터 접근을 의미)라는 이름을 혼용해서 사용한다. 2. 검색을 위한 스펙 p. 175 검색 조건이 고정되어 있고 단순하면 다음과 같이 특정 조건으로 조회하는 기능..
-
DDD - 02. 아키텍처 개요책 공부/DDD 도메인 주도 개발 시작하기 2024. 1. 16. 22:12
응용 영역 p. 63 표현 영역을 통해 사용자의 요청을 전달받는 응용 영역은 시스템이 사용자에게 제공해야 할 기능을 구현한다. 응용 영역은 로직을 직접 수행하기 보다는 도메인 모델(도메인 영역)에 로직 수행을 위임한다. 인프라스트럭처 영역 p. 64 인프라스트럭처 영역은 구현 기술에 대한 것을 다룬다. 이 영역은 RDBMS 연동을 처리하고, 메시징 큐에 메시지를 전송하거나 수신하는 기능을 구현하고(Messging Service), 몽고DB나 레디스와의 데이터 연동(NoSQL 연동)을 처리한다. 이 영역은 SMTP를 이용한 메일 발송 기능을 구현하거나 HTTP 클라이언트(ex. RestTemplate, OpenFeign)를 이용해서 REST API를 호출하는 것도 처리한다. 인프라스트럭처 영역은 논리적인 ..
-
DDD - 01. 도메인 모델 시작하기책 공부/DDD 도메인 주도 개발 시작하기 2024. 1. 16. 21:40
p. 30 어플리케이션 아키텍처 일반적인 어플리케이션의 아키텍처는 네 개의 영역으로 구분된다. 사용자 인터페이스 또는 표현(Presentation) 사용자의 요청을 처리하고 사용자에게 정보를 보여준다. 여기서 사용자는 소프트웨어를 사용하는 사람뿐만 아니라 외부 시스템일 수도 있다. 응용 Application 사용자가 요청한 기능을 실행한다. 업무 로직을 직접 구현하지 않으며 도메인 계층을 조합해서 기능을 실행한다. 도메인 Domain 시스템이 제공할 도메인 규칙을 구현한다. 인프라스트럭처 데이터베이스나 메시징 시스템과 같은 외부 시스템과의 연동을 처리한다. p.41 문서화 문서화를 하는 주된 이유는 지식을 공유하기 위함이다. 코드는 상세한 모든 내용을 다루고 있기 때문에 코드를 이용해서 전체 소프트웨어를..
-
[면접을 위한 CS 전공지식 노트] 네트워크 - 처리량과 지연시간책 공부/면접을 위한 CS 전공지식 노트 2023. 12. 10. 00:01
🐙 책 정보 📖 네트워크 ? 노드 와 링크 가 서로 연결되어 있거나, 연결 되어 있으면서 리소스를 공유하는 집합. * 노드 : 서버 , 라우터 , 스위치 등 네트워크 장치 * 링크 : 유선 , 무선 좋은 네트워크란 ? 많은 처리량을 처리할 수 있는 네트워크 지연 시간이 짧은 네트워크 장애 빈도가 적은 네트워크 좋은 보안을 갖춘 네트워크 처리량 Throughput 링크를 통해 전달되는 단위 시간당 데이터량. 단위 : bps - Bits Per Second - 초당 전송 (or 수신)되는 비트 수를 의미 처리량에 영향을 주는 요소들 - 트래픽 : 사용자들이 많이 접속할 때마다 커짐 - 네트워크 장치간의 대역폭 : 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수 - 네트워크 중간에 발생할 ..
-
스프링 부트 핵심 가이드 8주차: 13책 공부/스프링 부트 핵심 가이드 2023. 12. 8. 00:01
📖 책 정보 모바일 가이드 서비스의 인증과 권한 부여 보안 용어 이해 스프링 시큐리티 스프링 시큐리티 동작 구조 JWT 스프링 시큐리티와 JWT 적용 1. 보안 용어 이해 스프링 시큐리티를 활용하기 위해 보안과 관련된 용어를 먼저 학습해야 한다. 1. 인증 Authentication 사용자가 누구인지 확인하는 단계. 인증 authentication 의 대표적인 예로 로그인 이 있다. 로그인은 데이터베이스에 등록된 아이디와 비밀번호를 사용자가 입력한 아이디와 비밀번호와 비교해서 일치 여부를 확인하는 과정이다. 로그인에 성공하면 애플리케이션 서버는 응답으로 사용자에게 토큰을 전달한다. 로그인에 실패한 사용자는 토큰을 전달받지 못해 원하는 리소스에 접근할 수 없게 된다. 2. 인가 Authorization 앞..
-
스프링 부트 핵심 가이드 7주차: 11-12책 공부/스프링 부트 핵심 가이드 2023. 12. 7. 00:01
📖 책 정보 모바일 가이드 11장 액추에이터 활용하기 엔드포인트 액추에이터 기능 살펴보기 커스텀 기능 만들기 12장 서버 간 통신 RestTemplate? RestTemplate 사용하기 WebClient? WebClient 사용하기 11장 액추에이터 활용하기 프로젝트에 종속성 추가 , 엔드포인트 액추에이터 기능 살펴보기 액추에이터 커스텀 기능 만들기 1. 프로젝트에 종속성 추가 , 엔드포인트 애플리케이션을 개발하는 단계를 지나, 운영 단계에 접어들면 애플리케이션이 정상적으로 동작하는지 모니터링하는 환경을 구축하는 것이 매우 중요해진다. 스프링 부트 액추에이터는 HTTP 엔드포인트나 JMX를 활용해 애플리케이션을 모니터링하고 관리할 수 있는 기능을 제공한다. 👉 JMX 란? Java Management ..
-
스프링 부트 핵심 가이드 6주차: 10장책 공부/스프링 부트 핵심 가이드 2023. 12. 6. 00:02
📖 책 정보 모바일 가이드 유효성 검사와 예외 처리 일반적인 애플리케이션 유효성 검사의 문제점 Hibernate Validator 스프링 부트에서 검증에 사용되는 대표적인 어노테이션 스프링 부트에서의 유효성 검사 + BindingResult로 valid 에러 다루기 예외 처리 10장 유효성 검사와 예외 처리 일반적인 애플리케이션 유효성 검사의 문제점 Hibernate Validator 스프링 부트에서의 유효성 검사 예외 처리 1. 일반적인 애플리케이션 유효성 검사의 문제점 일반적으로 사용되는 데이터 검증 로직에는 몇 가지 문제점이 있다. 1. 관리의 어려움 계층별로 진행하는 유효성 검사는 검증 로직이 각 클래스별로 분산돼 있어 관리하기가 어렵다. 2. 중복 코드 검증 로직에 의외로 중복이 많아, 여러 곳..
-
스프링 부트 핵심 가이드 5주차: 9장책 공부/스프링 부트 핵심 가이드 2023. 12. 6. 00:01
📖 책 정보 모바일 가이드 연관관계 매핑 연관관계 매핑 종류와 방향 1:1 매핑 N:1 , 1:N 매핑 N:M 매핑 영속성 전이 9장 연관관계 매핑 종류와 방향 1:1 매핑 N:1, 1:N 매핑 N:N 매핑 영속성 전이 RDBMS를 사용할 때는 테이블 하나만 사용해서 애플리케이션의 모든 기능을 구현하기란 불가능하다. 대체로 설계가 복잡해지면 각 도메인에 맞는 테이블을 설계하고 연관관계를 설정해서 조인 Join 등의 기능을 활용한다. JPA를 사용하는 애플리케이션에서도 테이블의 연관관계를 엔티티 간의 연관관계로 표현할 수 있다. 1. 연관관계 매핑 종류와 방향 연관관계를 맺는 두 엔티티 간에 생성할 수 있는 연관관계의 종류는 다음과 같다. @OneToOne 1 : 1 @OneToMany 1 : N @Man..