분류 전체보기(126)
-
CQRS
보통 데이터를 조회 시에 여러 에그리거트에서 데이터를 가져와야 한다. 여러 애그리거트의 데이터가 필요하면 다양한 방안의 구현 방법을 고민해야 하는데, 식별자를 이용해서 애그리거트를 참조하는 방식을 사용하면 즉시 로딩과 같은 JPA 쿼리 관련 최적화 기능을 사용할 수 없다. 직접 참조하는 방식을 사용한다 하더라도, 같은 연관도 즉시/지연 로딩 등 다양한 방법으로 처리애햐 하고, DBMS가 제공하는 전용 기능이 필요하면 네이티브 쿼리를 사용해야 할 수도 있다. ORM 기법은 도메인 상태 변경 기능을 구현하는 데는 적합하지만, 데이터를 가져와 출력하는 기능울 구현하기에는 고려할게 많아서 구현을 복잡하게 한다. 상태 변경을 위한 모델과 조회를 위한 모델을 분리하면 위 문제를 해결할 수 있다. # CQRS 시스템..
2023.09.21 -
이벤트
## 시스템 간 강결합 문제 쇼핑몰에서 구매를 취소하면 환불처리를 해야한다. 보통 결제 시스템은 외부에 있으므로 Order 도메인에서 구매 취소에 관련된 서비스를 다음과 같이 파라미터로 주입할 것이다 위처럼 외부 시스템을 도메인에서 호출 시 3가지 문제가 발생할 수 있다. 1. 외부 서비스가 비정상일 경우 트랜젝션 처리를 어떻게 할까? - 롤백을 해야할까? 일단 커밋을 해야할까?, 아니면 상태만 변경한 후에 나중에 다시 시도를 해야할까? 2. 외부 시스템의 응답 시간이 길어지면 어떻게 할까? - 대기 시간만큼 응답시간이 길어져서 성능에 악영향을 주지 않을까? 3. 도메인 객체에 서비스를 전달하면 설계상 문제가 발생하지 않을까? - 도메인 로직과 외부 로직이 뒤섞이지 않을까? 위 문제가 발생하는 이유는 바..
2023.09.09 -
io.awspring 라이브러리를 활용한 Spring-Amazon S3 연동
개요 최근에 Spring 환경 프로젝트에서 S3로 파일을 업로드를 해야 하는 일이 있었다. 이전에는 org.springframework.cloud 라이브러리를 활용했는데, 상당 기능이 deplicate 되어 있었다. 따라서 io.awspring-s3 라이브러리를 활용했는데, 이전보다 훨씬 S3를 이용하는 것이 쉬웠다 세상 좋아졌네 위 라이브러리를 통한 S3 파일 업로드 구현 과정을 설명하고자 한다 전체 샘플 코드는 아래 링크로 https://github.com/phjppo0918/spring-io-awspring-s3-practice 0. 버킷 생성 이름 넣고, 리전 한국으로 설정하고, 퍼블릭 엑세스 차단 해제하고 시작하자 1. 라이브러리 추가 implementation platform("io.awspr..
2023.09.06 -
도메인 모델과 바운디드 컨텍스트
# 도메인 모델과 경계 - 도메인 모델을 만들 때 처음부터 완벽하게 단일 모델을 만들 수는 없음. - 한 도메인은 다시 여러 하위 도메인으로 구분됨. - 한 도메인을 논리적으로 같아 보여도 하위 도메인에 따라 다른 용어를 사용할 수 있음 - 하위 도메인마다 같은 용어라도 의미가 다르기 때문에 한 개의 모델로 모든 하위 도메인을 표현할 수 없음 - 올바른 도메인 모델을 개발하려면 하위 도메인 마다 모델을 다르게 만들어줘야 - 각 모델은 명시적으로 구분되는 경계를 가져야 함. - 바운디드 컨텍스트 : 구분되는 경계를 갖는 컨텍스트 # 바운디드 컨텍스트 - 모델의 경계를 결정 - 하나의 바운디드 컨텍스트는 논리적으로 한 개의 모델을 가짐 - 이상적으로는 하위 도메인과 바운디드 컨텍스트가 일대일이면 좋겠으나, ..
2023.09.02 -
모듈 12 : 엣지 서비스
- AWS 엣지 컴퓨팅 서비스는 필요에 따라 엔드포인트에 가깝게 데이터 처리 및 분석 기능을 제공 # Route 53 - DNS, 도메인 이름 등록 및 상태 확인 기능 제공 - EC2, ELB, S3, CloudWatch 등과 효율적으로 연결 # Route53 라우팅 정책 - 단순 라우팅 정책 : 도메인 관련하여 특정 리소스 하나에 사용. 웹서버 등 이용 - 장애 조치 라우팅 정책 : 액티브-패시브 장애 조치 구성하는 경우 사용 - 지리적 위치 라우팅 정책 : 사용자 위치 기준으로 트래픽을 라우팅하는 경우 사용 - 지리 근접 라우팅 정책 : 리소스 위치를 기반으로 트래픽을 라우팅하고, 선택적으로 한 위치 리소스에서 다른 리소스로 트래픽을 이동하려는 경우 사용 - 지연 시간 라우팅 정책 : 여러 AWS 리..
2023.08.28 -
모듈 11 : 서버리스
# 서버리스 # API Gateway - 애플리케이션을 위한 진입점 생성 - 수천 건의 동시 API 호출 처리 - 인터넷 연결 또는 내부 트래픽만 선택 - API 생성, 게시, 유지 관리, 모니터링, 보호 가능 - AWS 서비스와 기타 퍼블릭 또는 프라이빗 서비스 연결 가능 - 모바일 또는 웹앱 AWS 서비스 및 호스팅, RESTful, HTTP API 지원 # SQS - 메시지 큐 - 수십억 건의 메시지 처리 - 여러 이중와 가용 영역 사용 - 애플리케이션 구성 요소 느슨하게 결합 가능 - 비동기식 처리에 사용 - 실패한 단계에 대한 내결합성 제공 - 급증하는 수요 처리 기능 # SQS 대기열 유형 - 표준 대기열 : 최소 1회 메시지 전송 지원, 최선 정렬, 일반적으로 수신된 순서와 동일한 순서이나,..
2023.08.28