전체 글(131)
-
Runtime Data Area
Runtime Data Area 란? Process 로서, JVM 이 프로그램을 수행하기 위해 OS 로부터 할당 받는 메모리 영역 각각의 목적에 따라 5개의 영역으로 나뉜다 PC Register JVM Stack Native Method Stack Method Area Heap Register, JVM Stack, Native Method Stack 은 스레드별로 생성되고 Method Area와 Heap 영역은 모든 스레드에게 공유된다 PC Register 레지스터란, CPU가 1+2 라는 연산을 수행할 때, 연산을 수행하기 위해 1, +, 2 라는 데이터를 잠깐 저장해놔야하는데 이 때 사용되는 저장공간이다. 하지만 PC Register 는 저런 레지스터와 다르다. JVM은 CPU에 직접 연산을 수행하지..
2023.02.03 -
도메인 주도 설계 - 리포지토리의 조회 기능
이 장에서 다룰 내용 스펙 동적 인스턴스와 @Subselect 검색을 위한 스펙 애그리거트를 찾을 때 식별자를 이용하는 것이 기본. 다양한 검색 조건으로 애그리거트를 찾아야한다면? 스펙 1 2 3 public interface Specification { boolean isSatisfiedBy(T agg); } Colored by Color Scripter cs 스펙은 애그리거트가 특정 조건을 충족하는지 여부를 검사하는 것. 애그리거트가 조건에 맞으면 true를, 틀리면 false를 리턴합니다. 예) OrdererSpec - 스펙 정의 1 2 3 4 5 6 7 8 9 10 11 12 public class OrdererSpec implements Specification { private String o..
2022.05.09 -
도메인 주도 설계 JPA를 이용한 리포지터리 구현
도메인 주도 설계에서 애그리거트를 어떤 저장소에 저장하느냐에 따라 리포지터리를 구현하는 방법이 다릅니다. 이번에는 JPA를 중심으로 리포지터리를 구현하는 방법에 대해 알아보는 시간입니다. 모듈 위치 DIP에 따라서 리포지터리 인터페이스는 도메인 영역에 속하고, 리포지터리를 구현한 클래스는 인프라 영역에 속합니다. 리포지터리 기본 기능 구현 리포지터리의 기본 기능은 다음 두 가지 입니다. 아이디로 애그리거트 조회 애그리거트 저장 1 2 3 4 public interface OrderRepository { Order findById(OrderNo id); void save(Order order); } Colored by Color Scripter cs 1 2 3 4 5 6 7 8 9 10 11 12 13 1..
2022.03.17 -
메시지 플랫폼 장애 에러 처리 비교 - SQS, RabbitMQ, Kafka
메시지 플랫폼을 선택할 때, 각 제품별로 장애가 났을 때 어떻게 대처할 수 있는지 확인해봅시다. 그 전에, 해당 제품들의 기본 개념, 구조, 동작 등을 모르신다면 먼저 아래 링크에서 확인해주세요. 1. AWS SQS란? - https://yoonbing9.tistory.com/126 2. Kafka란? - https://yoonbing9.tistory.com/128 3. RabbitMQ란? - https://yoonbing9.tistory.com/129 그럼 먼저, 에러 처리의 대표적인 몇 개의 유형을 정의해봅시다. 1. 메시지 생산자 메시지 유실 장애 - 상품을 주문했는데, 메시지 유실로 인해 실제 주문처리가 되지 않는다면 큰 장애라고 할 수 있습니다. 메시지 생산자는 메시지가 메시지 브로커에 제대로 ..
2022.02.15 -
메시징 플랫폼 비교 - SQS, SNS, Kafka, RabbitMQ
메시징 플랫폼을 선택할 때, 각 제품의 특징, 장단점을 비교하여 선택에 도움이 될 수 있도록 비교해보겠습니다. 먼저 각 제품에 대한 기본적인 개념과 특징들은 아래 글들을 참고해주세요. 1. AWS SQS란? - https://yoonbing9.tistory.com/126 2. AWS SNS란? - https://yoonbing9.tistory.com/127 3. Kafka란? - https://yoonbing9.tistory.com/128 4. RabbitMQ란? - https://yoonbing9.tistory.com/129 SQS vs SNS vs Kafka vs RabbitMQ 스펙 비교 SQS SNS Kafka RabbitMQ 오픈소스 - - 오픈소스 오픈소스 브로커 구분 메시지 브로커 메시지 브..
2022.02.11 -
RabbitMQ란?
RabbitMQ란? AMQP(Advanced Message Queueing Protocol)를 구현한 메시지 브로커입니다. AMQP란? AMQP는 간단하게 메시지 큐 프로토콜이라고 생각하면 됩니다. 메시지 생산자와 메시지 브로커, 메시지 소비자 간에 데이터 통신에 대해 정의하고 있습니다. RabbitMQ 동작 과정 RabbitMQ는 AMQP를 구현한 제품이기 때문에 AMQP를 구성하는 개념들을 먼저 살펴 봅시다. Exchange - 메시지를 생산자에게 전달받아 어떤 큐에 해당 메시지를 전달할지 결정하는 라우팅 역할을 합니다. 이 때, Exchange Type이라는 라우팅 알고리즘을 사용합니다. AMQP에서는 4가지 타입이 있는데 이에 대해서는 밑에서 자세히 알아봅시다. Binding - 라우팅 테이블과 ..
2022.02.09