분류 전체보기(126)
-
응용 서비스와 표현 영역
# 표현 영역과 응용 영역 - 응용 영역과 표현 영역이 사용자와 도메인을 연결해주는 매개체 역할을 함 - 표현 영역은 응용 서비스가 요구하는 형식으로 사용자 요청을 변환. - 응용 서비스를 실행한 뒤에 표현 영역은 실행 결과를 사용자에게 알맞은 형식(HTML/JSON)으로 응답 # 응용 서비스의 역할 - 응용 서비스는 사용자가 요청한 기능을 실행 - 사용자 요청을 처리하기 위해 리포지터리에서 도메인 객체를 가져와 사용 - 도메인 영역과 표현 영역을 연결해주는 창구 - 응용 서비스가 복잡하다면 응용 서비스에서 도메인 로직 일부를 구현하고 있을 가능성이 높음 - 응용 서비스는 트랜젝션 처리도 담당 도메인 로직을 응용서비스로 분산시 문제점 1. 코드 응집성이 떨어짐 2. 여러 응용 서비스에서 동일한 도메인 로..
2023.08.12 -
스프링 데이터 JPA를 이용한 조회 기능
# 시작에 앞서 CQRS : 명령 모델과 조회 모델을 분리하는 패턴. 상테(데이터) 변경 기능 구현시에는 명령 모델, 데이터를 보여주는 기능을 구현할 때는 조회 모델 사용 # 검색을 위한 스펙 스팩 Specification : 검색 조건을 다양하게 조합해야 할 때 사용할 수 있는 것 agg는 애그리거트 루트, agg는 검색 결과로 리턴할 데이터 객체가 됨. 만약 리포지터리가 메모리에 모든 애그리거트를 보관하고 있다면 다음과 같이 사용 가능하나, 실제로는 모든 데이터를 메모리에 저장을 못하기에 사실상 위와 같이 사용 불가능 실제 스펙은 사용하는 기술에 맞춰 구현하게 됨 # 스프링 데이터 JPA를 이용한 스펙 구현 JPA 크리테리아 API를 같이 이용 스펙은 and 혹은 or, where 등으로 조합이 가능..
2023.08.05 -
docker - nginx - certbot https 설정하기
docker 환경에서 nginx와 certbot을 띄우고 https를 적용해보자. 디렉터리 구조는 다음과 같다 application.yml version: "3" services: nginx: image: nginx restart: unless-stopped ports: - 80:80 - 443:443 volumes: - ./data/nginx:/etc/nginx/conf.d - ./data/certbot/conf:/etc/letsencrypt - ./data/certbot/www:/var/www/certbot command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'" c..
2023.07.28 -
리포지터리와 모델 구현
매핑 구현 - 애그리거트와 JPA 매핑을 위한 기본 규칙 - 애그리거트 루트는 엔티티이므로 @Entitiy로 매핑 설정 - 벨류는 @Embeddedable로 매핑 설정 - 벨류 타입 프로퍼티는 @Embedded로 매핑 설정 - 타 애그리거트는 ID로 참조 AttributeConverter - int, long, String, LocalDate 같은 타입은 DB 테이블에 한 개의 컬럼에 매핑됨. - 이와 비슷하게 벨로타입의 프로퍼티를 한 개의 컬럼에 매핑해야할 때도 있음. - AttributeConverter을 통해 벨류 타입과 칼럼 데이터 간의 변환 처리 가능 - 벨류 컬렉션을 별도 테이블로 매핑시에는 @ElementCollection과 @CollectionTable을 함께 사용 - List에 자체 인덱..
2023.07.28 -
3. 기본 사용법
terraform init 테라폼 구성 파일이 있는 작업 디렉터리를 초기화하는 데 사용 이 작업을 실행하는 디렉터리를 루트 모듈이라고 함. 테라폼에서 사용되는 프로바이더, 모듈 등의 지정된 버전에 맞게 루트 모듈을 구성 구성에서 필요한 의존성 정의를 읽고, 최초 실행 시 실행에 필요한 아티팩트나 라이브러리를 다운로드하고 준비시킴 생성 후 잡업자가 의도적으로 버전 변경시에 terraform init -upgrade 수행 terraform validate 디렉터리에 있는 테라폼 구성 파일의 유효성 확인 API 작업은 발생하지 않고, 코드적인 유효성만 검토 terraform plan plan 명령은 테라폼으로 적용한 인프라의 변경 사항에 대한 실행 계획을 생성. 실행 이전 상태와 비교해 현재 상태가 최신화되었..
2023.07.19 -
1. IaC와 테라폼
코드형 인프라(Infrastructure as Code) : 인프라가 코드로 표현되고, 코드가 인프라를 설명. UI나 커멘드를 이용한 수동 조작이 아닌 코드로 대상을 관리 1.1 인프라 자동화의 성숙도 변화 1단계 : 메뉴얼 인프라 관련 모든 정보와 구성-변경 방법, 기존 아키텍처를 워드-엑셀 등으로 문서화 (와...쌍팔년도야?) 2단계 : 스크립트 반복되는 작업은 작업자가 스크립트를 작성하여 자동화 비슷한 스펙의 인프라나 애플리케이션 런타임 선호 반복적인 지루한 작업 줄이고, 미리 정의한 동작을 한 번에 실행해서 오류가 줄어듬 허나, 동작하는 코드 양이 많아지면 시스템 응답 및 상태도 고려해야. 최종 상태가 스크립트 결과와 일치하지 않을 수도 있음 3단계 : 가상 머신(VM) 미리 구성된 가상 머신 이..
2023.07.19