일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 배포
- RDS
- AWS
- 인프라
- Developer
- UNICON2023
- UNICON
- 위키북스
- 개발공부
- 인디게임
- 프리티어
- 42서울
- 게임개발동아리
- 전국대학생게임개발동아리연합회
- 프로그래밍
- 도커
- 온라인테스트
- 백엔드개발자
- 스프링
- EC2
- CICD
- 생활코딩
- 티스토리챌린지
- UNIDEV
- 라피신
- 오블완
- 백엔드
- 체크인미팅
- 스프링부트
- 자바개발자
- Today
- Total
목록Study/Java, Spring (34)
Hyun's Wonderwall
EFUB 4기 BackEnd Lead_ 도메인 주도 개발 스터디스터디 커리큘럼: 최범균, "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지"3주차 과제: Chapter 9. 도메인 모델과 바운디드 컨텍스트Chapter 9. 도메인 모델과 바운디드 컨텍스트Keywords: 바운디드 컨텍스트, 바운디드 컨텍스트 간 통합과 관계9.1 도메인 모델과 경계한 개의 모델로 모든 하위 도메인을 표현하려는 시도는 불가능하다.- 하위 도메인마다 같은 용어라도 의미가 다르고, 같은 대상이라도 지칭하는 용어가 다를 수 있다. 올바른 도메인 모델을 개발하려면 하위 도메인마다 모델을 만들어야 한다.- 각 모델은 명시적으로 구분되는 경계를 가져서 섞이지 않도록 해야 한다. 여러 하위 도메인의 모델이 섞이면 모델의..
EFUB 4기 BackEnd Lead_ 도메인 주도 개발 스터디 스터디 커리큘럼: 최범균, "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지" 3주차 과제: Chapter 7. 도메인 서비스, Chapter 8. 애그리거트 트랜잭션 관리 Chapter 8. 애그리거트 트랜잭션 관리 Keywords: 애그리거트 트랜잭션, 애그리거트 잠금 기법 8.1 애그리거트와 트랜잭션 애그리거트의 일관성이 깨지는 문제가 발생하지 않도록 하려면 다음 두 가지 중 하나를 해야 한다. 운영자가 배송지 정보를 조회하고 상태를 변경하는 동안 고객이 애그리거트를 수정하지 못하게 막는다 운영자가 배송지 정보를 조회한 이후에 고객이 정보를 변경하면, 운영자가 애그리거트를 다시 조회한 뒤 수정하도록 한다, 이 두 가지는..
EFUB 4기 BackEnd Lead_ 도메인 주도 개발 스터디 스터디 커리큘럼: 최범균, "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지" 3주차 과제: Chapter 7. 도메인 서비스, Chapter 8. 애그리거트 트랜잭션 관리 Chapter 7. 도메인 서비스 Keywords: 응용 서비스 구현, 표현 영역의 역할, 값 검증과 권한 검사 7.1 여러 애그리거트가 필요한 기능 결제 금액 계산 로직의 경우 고려할 사항이 많아 한 애그리거트에 넣기 애매하다. 애그리거트에서 자신의 책임 범위를 넘어서는 기능을 구현하게 하면 안 된다. 이를 해결하는 방법: 도메인 기능을 별도 서비스로 구현 7.2 도메인 서비스 도메인 서비스: 도메인 영역에 위치한 도메인 로직을 표현할 때 사용한다. -..
EFUB 4기 BackEnd Lead_ 도메인 주도 개발 스터디 스터디 커리큘럼: 최범균, "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지" 3주차 과제: Chapter 5. 스프링 데이터 JPA를 이용한 조회 기능, Chapter 6. 응용 서비스와 표현 영역 Chapter 6. 응용 서비스와 표현 영역 Keywords: 응용 서비스 구현, 표현 영역의 역할, 값 검증과 권한 검사 6.1 표현 영역과 응용 영역 그동안 도메인 영역 부분을 배웠는데, 도메인이 제 기능을 하려면 사용자와 도메인을 연결해 주는 매개체가 필요하다. => 응용 영역과 표현 영역의 역할. [ 사용자 -> 응용 영역 -> 표현 영역 -> 도메인 영역 ] 표현 영역: 사용자 요청 해석. HTTP 요청 받으면 URL,..
EFUB 4기 BackEnd Lead_ 도메인 주도 개발 스터디 스터디 커리큘럼: 최범균, "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지" 3주차 과제: Chapter 5. 스프링 데이터 JPA를 이용한 조회 기능, Chapter 6. 응용 서비스와 표현 영역 Chapter 5. 스프링 데이터 JPA를 이용한 조회 기능 Keywords: 스펙, JPA 스펙 구현, 정렬과 페이징, 동적 인스턴스와 @Subselect 5.1 시작에 앞서 CQRS: 명령 모델과 조회 모델을 분리하는 패턴. - 명령(Command) 모델: 상태를 변경하는 기능을 구현할 때 사용. // ex. 회원가입, 암호 변경, 주문 취소, 배송지 변경 ㄴ 도메인 모델(엔티티, 애그리거트, 리포지터리 등)은 명령 모델로 ..
EFUB 4기 BackEnd Lead_ 도메인 주도 개발 스터디 스터디 커리큘럼: 최범균, "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지" 2주차 과제: Chapter 3. 애그리거트, Chapter 4. 리포지토리와 모델 구현 Chapter 4. 리포지토리와 모델 구현 Keywords: 키워드 4.1 JPA를 이용한 리포지터리 구현 자바의 ORM 표준인 JPA를 이용해서 리포지터리와 애그리거트를 구현하는 방법에 대해 살펴보자. JPA: 도메인 모델과 리포지터리를 구현할 때 사용 *ORM(Object Relational Mapping): 객체 관계 매핑 4.1.1 모듈 위치 인터페이스는 애그리거트와 같이 도메인 영역에 속하고, 리포지터리를 구현한 클래스는 인프사라스트럭처 영역에 속한다..
EFUB 4기 BackEnd Lead_ 도메인 주도 개발 스터디 스터디 커리큘럼: 최범균, "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지" 2주차 과제: Chapter 3. 애그리거트, Chapter 4. 리포지토리와 모델 구현 Chapter 3. 애그리거트 Keywords: 애그리거트, 애그리거트 루트와 역할, 애그리거트와 리포지터리, ID를 이용한 애그리거트 참조 3.1 애그리거트 도메인 객체 모델이 복잡해지면 개별 구성요소 위주로 모델을 이해하게 되고, 상위 수준에서 모델 간의 관계를 파악하기 어렵다. => 해결책: 애그리거트. 애그리거트: 관련된 객체를 하나의 군으로 묶는 것. 복잡한 도메인을 이해하고 관리하기 쉬운 단위로 만듦으로써 상위 수준에서 도메인 모델 간의 관계를 쉽게..
EFUB 4기 BackEnd Lead_ 도메인 주도 개발 스터디 스터디 커리큘럼: 최범균, "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지" 1주차 과제: Chapter 1. 도메인 모델 시작하기, Chapter 2. 아키텍처 개요 Chapter 2. 아키텍처 개요 Keywords: 아키텍처, DIP, 도메인 영역의 주요 구성요소, 인프라스트럭처, 모듈 2.1 네 개의 영역 아키텍처 설계의 4개 영역: (1)표현, (2)응용, (3)도메인, (4)인프라스트럭처 (1) 표현 영역(UI 영역): 사용자의 요청을 받아 응용 영역에 전달하고, 응용 영역의 처리 결과를 사용자에게 보여준다. - 스프링 MVC 프레임워크가 표현 영역을 위한 기술에 해당한다. // Controller 클래스와 tem..
EFUB 4기 BackEnd Lead_ 도메인 주도 개발 스터디 스터디 커리큘럼: 최범균, "도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지" 1주차 과제: Chapter 1. 도메인 모델 시작하기, Chapter 2. 아키텍처 개요 Chapter 1. 도메인 모델 시작하기 Keywords: 도메인, 도메인 모델, 엔티티와 밸류, 도메인 용어 1.1 도메인이란? 도메인: 소프트웨어로 해결하고자 하는 문제 영역. (ex. 온라인 서점 - 온라인 서점 소프트웨어를 구현해야 함) - 한 도메인은 여러 하위 도메인으로 구성된다. (ex. 주문, 카탈로그, 회원, 혜택, 결제, 배송, 리뷰, 정산 등) - 하위 도메인 구성은 상황에 따라 달라진다. (ex. 기업 고객 대상 업체, 일반 고객 대상 ..
쿠버네티스의 객체(object) - Pod, Service, Deployment Pod(파드) : 상호 의존성이 높은 컨테이너의 집합 Service : Pod를 위한 영구적인 엔드포인트. 내부/외부 IP 제공 가능. ClusterIP, NodePort, LoadBalancer, ExternalName 제공 Pod를 관리하는 간편한 방법: 배포의 필요성 ‘kind: Pod’로 생성한 파드는 하나만 생성된다. 여러 개 생성하고 싶으면 name을 다르게 한 여러 파일을 생성해야 한다. 그러나 다른 내용은 같고 name만 다른 파드의 yaml 파일을 여러 개 관리하기는 어 려울 뿐만 아니라, Pod는 영구적인 것이 아니라 가끔 죽기도 한다는 문제가 있다. 이때마다 새롭게 Pod를 생성하기는 번거로우므로, 자동으..