본문 바로가기

전체 글311

Spring Boot + RabbitMQ를 DDD 구조에 넣는 방법 Spring Boot에서 RabbitMQ를 쓸 때, 메시징 코드를 아무 데나 흩어 놓으면 금세 도메인 로직과 뒤섞입니다. 이 글은 DDD(도메인 주도 설계) 레이어 구조 안에 RabbitMQ를 어디에, 어떤 모양으로 넣을지 구성 위주로 정리한 글입니다. 예시는 "주문이 생성되면 후속 처리(결제 준비, 알림 등)를 비동기로 넘기는" 흐름으로 잡았습니다. (Java 21, Spring Boot 3.x, Spring AMQP 기준)1. 전체 흐름[Client] │ POST /orders ▼[interfaces] OrderController ▼[application] OrderApplicationService ← 트랜잭션 경계 ▼[domain] Ord.. 2026. 10. 12.
AWS EC2 기본 새 사용자 생성, SSH 키 인증, 자바 21 설치까지 EC2를 처음 만들면 기본 계정(ubuntu)으로 접속하게 됩니다. 이 기본 계정을 비활성화하고, 새 계정을 만들어 SSH 키로만 접속하도록 바꾸는 과정을 정리했습니다. 글 속의 {내용}은 직접 정해서 넣는 값(계정명, 비밀번호, IP 등)입니다.순서작업1새 사용자 생성 + sudo 권한 부여2새 계정용 SSH 키 만들기3키 파일을 내 PC(Mac)로 옮기기4SSH 설정 변경 + 접속 테스트5기본 ubuntu 계정 비활성화6자바(JDK 21) 설치1. 새 사용자 생성# 새 사용자 생성 (비밀번호를 물어보면 {내용} 입력)sudo adduser {내용}# sudo 권한 부여sudo usermod -aG sudo {내용}adduser 중에 설정한 비밀번호는 나중에 sudo 명령을 쓸 때 필요하니 잘 보관해 .. 2026. 10. 12.
AWS에서 k3s + Jenkins + ECR로 Spring Boot 배포 환경 만들기 모든 EC2는 t4g.small(vCPU 2, RAM 2GB, ARM64)로 구성했습니다.서버역할설치된 것EC2 #1 Jenkins빌드, 이미지 생성, 배포 명령Gradle, Docker, AWS CLI, kubectlEC2 #2 k3s Master클러스터 관리(API 서버, 스케줄러)k3s serverEC2 #3 k3s Worker실제 Spring Boot Pod 실행k3s agent, Swap 2GBAWS ECRDocker 이미지 보관-0. 전체 그림예전에는 Jenkins가 .jar 파일을 SSH/SCP로 서버에 보내고 nohup java -jar로 실행했습니다. 이번에는 Docker 이미지 + k3s(경량 쿠버네티스) 방식으로 바꿨습니다.구분예전 방식 (FreeStyle Job)현재 방식 (Pipe.. 2026. 10. 12.
RabbitMQ 개념 - EDA 환경에서 이벤트 순서 역전 해결법 (Delayed Message Exchange) 대용량 분산 환경에서 이벤트 기반 아키텍처(EDA)를 구축할 때 가장 흔하게 겪는 걸림돌 중 하나가 바로 "이벤트 메시지 순서 역전 현상"임.예를 들어 1번 이벤트(주문 생성 - buy)가 처리된 후 2번 이벤트(재고 확인/차감 - stock_check)가 실행되어야 하는데, 네트워크 지연이나 분산 스레드 환경 특성상 2번 이벤트가 1번보다 먼저 도착해 버리는 문제가 발생하는 것.이번 글에서는 EDA 환경에서 이러한 순서 역전 문제를 어떻게 해결하는지, 그리고 RabbitMQ의 지연 큐(Delayed Message Exchange)를 활용해 자바(Spring Boot)로 구현하는 방법에 대해 정리해 봄.💡 대용량 이벤트 순서 보장 전략 (2단계)대용량 환경에서 이벤트 순서를 잡는 기본 전략은 크게 2단.. 2026. 8. 18.