분류 전체보기

단계별로 성장하자!
최근 프로젝트에서 분리되어 있는 여러 DB에 대해 2 Phase Commit을 적용해야 하는 일이 생겨 정리하게 되었다.설명을 시작하기에 앞서, 간단하게 분산 트랜잭션에 대해 얘기하고 넘어가겠다.분산 트랜잭션은 글로벌 트랜잭션이라고도 하며, 통합되어 관리되는 여러 개의 트랜잭션 묶음을 의미한다.이때, 1️⃣ 분산 트랜잭션에 포함되는 트랜잭션은 서로 동일한 DB에 존재할 수도 있고, 2️⃣ 서로 다른 DB에 존재할 수도 있다.XA Datasource와 2 Phase Commit 이란?XA는 2 Phase Commit을 통한 분산 트랜잭션 처리를 위해 X/Open에서 정의한 표준이다.분산 트랜잭션에서 사용되는 각각의 DB에는 하나의 XA Datasource가 존재하고, 이 XA Datasource가 XA C..
CQRSCQRS는 Command Query Responsibility Segregation 의 약자이며,Command(명령)과 Query(쿼리)의 책임 분리라는 의미를 가지고 있다. Query는 SQL Query를 의미하는 게 아니다. 그럼, Command와 Query는 각각 무엇을 의미할까?Command (명령)애플리케이션의 데이터를 변경 ( 예약, 예약취소)Query (쿼리)애플리케이션의 데이터를 조회 (예약내역 조회) 따라서, CQRS를 다시 설명하자면애플리케이션 데이터를 변경하는 명령 역할을 수행하는 구성 요소애플리케이션 데이터를 조회하는 쿼리 역할을 수행하는 구성 요소이 두 가지를 분리하는 것을 의미한다. 다루는 코드 영역의 차이Command와 Query는 다루는 데이터의 영역의 크기가 다르다...
이전에 진행했었던 데브톡이라는 상담 애플리케이션 예제와 함께 Micro Service 내부 구성에 대해 간략하게 애기해보겠다. 1. 상담 Aggregate 예시로 가져온 상담 애플리케이션에 대해 간단하게 설명하겠다. 액터는 상담사, 내담자로 구성되며 현재 가져온 예시는 상담 매칭 Micro Service를 대상으로 한다. Consultation이라는 도메인 Entity는 아래와 같이 구성되어 있다. 상담이라는 Aggregate는 상담 등록, 수정, 취소, 리뷰 작성에 대한 책임을 갖고 있으며, 여러 Entity와 관계를 가지고 있다. 헥사고날 아키텍처를 엄격하게 따르자면 JPA Entity와 POJO Entity를 구분하는게 맞지만, JPA는 어노테이션 기반으로 그렇게 도메인에 대한 이해를 방해한다고 생..
Micro Service 외부, 내부 Architecture를 편하게 구성할 수 있게 도와주는 오픈소스 플랫폼 Jhipster에 대해서 얘기하고자 한다. JHipster(Java Hipster)란? JHipster는 자바 진영에서 modern 한 모놀리스 애플리케이션 또는 마이크로 서비스를 빠르게 적용, 개발, 배포할 수 있게 도와주는 오픈소스 플랫폼이다. https://www.jhipster.tech/ JHipster - Full Stack Platform for the Modern Developer! JHipster is a development platform to quickly generate, develop, and deploy modern web applications and microserv..
Bounded Context 기반 도출 바운디드 컨텍스트란 DDD를 적용한 설계에서 비즈니스 응집성이 있는 도메인을 정의하고 도메인 간의 경계를 식별하는 단위를 의미한다. 이 바운디드 컨텍스트가 마이크로서비스를 식별하는데 좋은 단위로 사용된다. 우선, 하나의 큰 도메인을 전략적으로 중요도에 따라 나누어야 한다. 또한, 하나의 큰 도메인을 여러 개의 하위 서브 도메인으로 분리해야 한다. 이때, 똑같은 회원이더라도 예약 도메인에서의 회원과 결제 도메인에서의 회원은 의미가 다르다. 예약 도메인에서는 예약자의 개인정보를 가지고 있는 예약자의 역할, 결제 도메인에서는 결제자의 역할로 카드 정보 등을 가지고 있는 회원을 의미한다. 따라서, 각 바운디드 컨텍스트마다 같은 회원이더라도 각 컨텍스트에서 사용되는 언어로 ..
Layerd, Clean, Hexagonal과 같이 Micro Service 내부에서 사용되는 아키텍처에 대해 얘기해보고, 마지막 부분에서는 Hexagonal Architecture에 대한 생각과 커스텀하게 사용했던 패키지 구조에 대해서도 얘기해보겠다. 비즈니스 로직은 왜 분리해야 할까? 우선, 비즈니스 로직은 Process Rule, Flow, Concept 세 가지를 표현하는 용어이다. 이러한, 비즈니스 로직을 개발자는 코드로 풀어내야 하고 유지보수하기 쉽게 만들어내야 한다. (유연성과 확장성을 고려) 애플리케이션에서 사용하는 추후에 변경될 수 있는 기술과 비즈니스 로직이 분리되어야 복잡성이 낮고 오랫동안 안정성 있게 유지보수할 수 있게 된다. 하지만, 내가 지금 참여하고 있는 프로젝트만 하더라도 P..
DevPoong
'분류 전체보기' 카테고리의 글 목록