인프라 (10) 썸네일형 리스트형 [MSA] Axon Framewor Axon Framework Axon Framework는 CQRS 및 이벤트 소싱을 구현하기 위한 자바 기반 오픈 소스 프레임워크입니다. Axon Framework의 아키텍처 1. Command 모듈 Command 모듈은 명령(Command)을 처리하는 데 필요한 구성 요소를 제공합니다. 명령은 시스템에서 변경을 일으키는 작업을 나타내며, 명령 핸들러(Command Handler)는 이를 처리합니다. 2. Event 모듈 Event 모듈은 이벤트를 처리하는 데 필요한 구성 요소를 제공합니다. 이벤트는 시스템에서 발생한 사건을 나타내며, 이벤트 핸들러(Event Handler)는 이를 처리합니다. 3. Query 모듈 Query 모듈은 읽기 모델을 처리하기 위한 구성 요소를 제공합니다. Query 모듈은 C.. [MSA] 분산 트랜잭션 - 이벤트 소싱 이벤트 소싱 (Event Sourcing) 분산 시스템에서 데이터 상태를 변경하는데 사용되는 디자인 패턴 중 하나입니다. 이 패턴은 시스템의 상태 변경을 이벤트의 연속된 흐름으로 저장하고, 이 이벤트를 기반으로 현재 상태를 재구성합니다. 이벤트 소싱은 주로 마이크로서비스 아키텍처와 같은 분산 시스템에서 데이터 일관성과 확장성을 유지하는데 활용됩니다. 이벤트 소싱의 원리 1. 이벤트 기록 시스템에서 발생하는 모든 상태 변경은 이벤트로 기록됩니다. 각 이벤트는 시간 순서대로 기록되며, 데이터베이스에는 현재 상태가 아니라 이벤트의 시퀀스가 저장됩니다. 2. 상태 재구성 현재 상태를 얻기 위해 이벤트의 시퀀스를 사용하여 상태를 재구성합니다. 이는 이벤트를 순차적으로 반복하면서 현재 상태를 만들어내는 과정을 의미.. [MSA] 분산 트랜잭션 - 보상 트랜잭션 보상 트랜잭션 (Compensating Transaction) 보상 트랜잭션은 마이크로서비스 아키텍처에서 분산된 트랜잭션을 롤백하거나 복구하기 위해 사용되는 메커니즘입니다. MSA에서는 여러 서비스 간의 트랜잭션을 일관성 있게 유지하기 어렵기 때문에 보상 트랜잭션이 필요하게 됩니다. 보상 트랜잭션의 원리 1. 원본 트랜잭션 수행 보상 트랜잭션은 기본적으로 어떤 작업을 수행하기 전에 원본 트랜잭션을 수행합니다. 이 트랜잭션은 여러 서비스 간에 분산되어 수행되는 경우가 많습니다. 2. 보상 로직 정의 각 트랜잭션은 보상 로직을 정의합니다. 이 보상 로직은 원래 트랜잭션이 실패할 경우 실행됩니다. 보상 로직은 주로 역으로 원래 작업을 취소하거나, 복구하는 작업을 수행합니다. 3. 보상 트랜잭션 실행 원본 트랜.. [MSA] 분산 트랜잭션 - 2PC 2-Phase Commit (2PC) 2단계 커밋은 분산 데이터베이스 관리 시스템에서 트랜잭션의 일관성을 보장하기 위한 프로토콜입니다. MSA는 여러 독립적인 마이크로서비스로 구성되어 있으며, 이러한 서비스들 간의 트랜잭션 일관성을 유지하기 위해 2단계 커밋이 사용될 수 있습니다. 2PC의 원리 1. 준비 단계 (Prepare Phase) - 트랜잭션 코디네이터(주로 분산 트랜잭션 매니저)는 모든 참여자 서비스에게 트랜잭션 수행에 동의할 것인지 물어봅니다. - 각 서비스는 트랜잭션이 성공적으로 수행될 수 있는지 여부를 판단하고 준비 완료 시 코디네이터에게 알립니다. - 만약 어떤 서비스라도 트랜잭션이 성공적으로 수행될 수 없다면 모든 참여자에게 롤백 명령이 전송됩니다. 2. 커밋 단계 (Commit Ph.. [MSA] 분산 트랜잭션 - ACID 트랜잭션 ACID ACID는 데이터베이스 트랜잭션의 속성을 나타내는 네 가지 기본적인 특성을 나타내는 약어입니다. MSA에서는 분산 환경에서의 트랜잭션 일관성을 유지하기 위해 이러한 ACID 특성을 어떻게 다룰지 고민해야 합니다. ACID 특성 1. 원자성 (Atomicity) 트랜잭션은 원자 단위로 수행되어야 합니다. 즉, 트랜잭션 내의 모든 연산이 성공하면 전체 트랜잭션이 성공하고, 하나라도 실패하면 전체 트랜잭션이 실패해야 합니다. 2. 일관성 (Consistency) 트랜잭션이 수행된 후에는 데이터베이스가 일관된 상태에 있어야 합니다. 트랜잭션 전과 트랜잭션 후의 데이터베이스 상태는 일관성이 있어야 합니다. 3. 고립성 (Isolation) 동시에 실행되는 여러 트랜잭션이 서로에게 영향을 미치지 .. [MSA] Hexagonal Architecture Hexagonal Architecture 란? Hexagonal Architecture, 또는 Ports and Adapters Architecture로도 알려진 이 패턴은 애플리케이션을 내부 핵심과 외부 요소로 구분짓는 것을 목표로 합니다. 이를 통해 외부 요소에 대한 의존성을 최소화하고 테스트 가능한 코드를 작성할 수 있습니다. Hexagonal Architecture의 구성 요소 1. Ports (포트) 애플리케이션의 외부와 상호 작용하는 인터페이스를 나타냅니다. 주로 인풋과 아웃풋을 처리하는 데 사용되며, 외부 시스템과의 통합 지점입니다. 2. Adapters (어댑터) 외부 시스템과의 통합을 담당하는 구현체입니다. 이는 실제로 외부 시스템과 통신하고 결과를 애플리케이션에 맞게 변환하는 역할을 수.. [MSA] MSA가 어려운 이유 IPC (Inter-Process Communication) MSA 환경에서 IPC는 여러 마이크로서비스 간에 효과적인 통신을 지원하는 중요한 측면입니다. MSA는 서로 독립적으로 배포되고 실행되는 여러 마이크로서비스로 구성되어 있으며, 이러한 서비스들은 특정 작업을 수행하기 위해 상호 작용해야 합니다. IPC 고려사항 1. HTTP/RESTful API HTTP 기반의 RESTful API는 가장 흔하게 사용되는 IPC 방법 중 하나입니다. 각 마이크로서비스는 HTTP 요청을 통해 다른 서비스에 요청을 보내고, RESTful 엔드포인트를 통해 데이터를 주고받습니다. 이러한 방식은 표준화되어 있고, 다양한 언어 및 플랫폼 간에 상호 운용성을 제공합니다. 2. Message Brokers 메시지 브로커는 .. [MSA] MSA의 핵심 원칙 마이크로서비스 아키텍처(MSA)는 여러 서비스로 애플리케이션을 분할하고 독립적으로 배포하는 아키텍처 패턴입니다. 이를 구현하기 위해 몇 가지 핵심적인 원칙이 존재합니다. Business Capabilities (비즈니스 기능) MSA의 핵심 원칙 중 하나는 Business Capabilities입니다. 이 원칙은 전체 소프트웨어 시스템을 기능 단위로 나누는 것을 강조합니다. 비즈니스 기능은 비즈니스의 핵심 기능 또는 업무 프로세스를 나타냅니다. 각각의 기능은 독립적인 업무를 수행하고, 비즈니스의 목표를 달성하는 데 필수적입니다. 예를 들어, 전자상거래 웹 애플리케이션에서 주문, 결제, 재고 관리 등은 각각 다른 비즈니스 기능에 해당합니다. Business Capabilities의 의미 1. 독립적인 서비.. 이전 1 2 다음