아파치 웹서버란아파치는 웹 서버 소프트웨어로 웹 사이트 파일을 인터넷을 통해 사용자들에게 제공하는 역할을 한다고 합니다서버 HTML, 이미지, 프로그램 파일 등을 두면 웹브라우저를 통해서 이를 웹사이트 형태로 볼 수 있다고 합니다컨테이너 기술과 아파치의 연동포트 설정 필요성브라우저를 통해 컨테이너에 접근하려면? 컨테이너가 외부와 통신할 수 있도록 별도의 포트 설정이 필요하다. 포트 설정은 보통 그 통신이 드나드는 통로를 의미하는데. 웹은 80 번이고. 메일은 보통 25 번을 사용하게 된다고 합니다.아파치, 웹서버 포트아파치 웹서버는 80번 포트에서 웹사이트에 대한 접근을 기다리는데사용자 요청에 따라 웹페이지를 제공하게 됩니다컨테이너 내부에서 실행 중인 아파치는 기본적으로 외부와 직접적으로 연결되지 않으므..
계산 로직과 도메인 서비스할인 금액 계산과 같이 애그리거트에 포함시키기 애매한 도메인 개념을 구현할 때도메인 서비스를 사용해서 해당 개념을 명시적으로 표현할 수 있음.서비스 응용 영역이 어떤 서비스에 대한 로직을 다루는 반면에 도메인 서비스에서는 도메인 로직과 관련되어 있지만 도메인 안에서 처리하기 더 범위가 넓은 개념의 로직을 해당 도메인 서비스 로 옮긴다.할인 금액 로직을 위한 DiscountCalculationServicepublic class DiscountCalculationService { public Money calculateDiscountAmounts( List orderLines, List coupons, MemberGrade grade) { Money couponDiscount = c..
개요외부 시스템이나 타 도메인과의 연동 기능도 도메인 서비스가 될 수 있음.도메인 서비스는 도메인의 로직 관점에서 인터페이스를 작성, 인프라스트럭처 영역에서 구현예시도메인 서비스 인터페이스public interface SurveyPermissionChecker { boolean hasUserCreationPermission(String userId); }응용 서비스public class CreateSurveyService { private SurveyPermissionChecker permissionChecker; public Long createSurvey(CreateSurveyRequest req) { validate(req); // 도메인 서비스를 이용해서 외부 시스템 연동을 표현 if (!perm..
문제 상황상황한 주문 애그리거트에 대해 운영자가 배송 상태로 변경하려고 하는 동안 사용자가 배송지 주소를 변경한다면 어떤 문제가 발생할까?상황 설명운영자 스레드:주문 애그리거트를 구함배송 상태로 변경트랜잭션 커밋고객 스레드:주문 애그리거트를 구함배송지 변경트랜잭션 커밋충돌!문제점운영자와 고객이 동시에 같은 주문 애그리거트를 수정할 때 발생한다.트랜잭션마다 리포지터리는 새로운 애그리거트 객체를 생성한다.운영자 스레드와 고객 스레드는 같은 주문 애그리거트를 나타내지만물리적으로 다른 객체를 사용한다.같은 Order라도 서로 다른 메모리주소를 가지며,속성도 다를 수 있음.운영자 스레드가 주문 애그리거트 객체를 배송 상태로 변경해도, 고객 스레드가 사용하는 객체에는 영향을 주지 않는다.고객 스레드는 주문 애그리거..
문제 상황@Entity public class Order { @Id private Long id; @Version private Long version; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true) private List orderLines; // 기타 필드와 메서드 } @Entity public class OrderLine { @Id private Long id; private String product; private int quantity; @ManyToOne private Order order; // 기타 필드와 메서드 }@Service public class OrderService { @Persis..
개요아틀라시안의 컨플루언스의 경우 문서를 편집하는 경구 다른 사용자가 이미 편집중인 경우, 충돌 가능성을 사전에 안내하는 기능을 제공함.여러 사용자가 동시에 한 문서를 수정할 때 발생하는 충돌을 방지함.오프라인 선점 잠금?한 사용자가 문서를 편집할 때 다른 사용자가 해당 문서의 수정 화면을 열지 못하도록 하는 기능입니다.이는 단일 트랜잭션에서의 선점 잠금 방식과는 달리 여러 트랜잭션에 걸쳐 동시 변경을 방지할 수 있다고 한다.작동 원리사용자 A가 문서 수정 폼을 요청하면 시스템은 오프라인 잠금을 구한다.사용자 B가 동일한 문서의 수정 폼을 요청하면이미 잠금이 선점된 상태이므로 잠금을 구할 수 없고, 에러 화면이 표시됩니다.사용자 A가 수정을 완료하고 요청을 보내면시스템은 데이터를 수정하고오프라인 잠금을 ..