| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- JPA
- Spring Data JPA
- @ComponentScan
- DI
- kafka
- securitycontextholderfilter
- CORS
- 쿠버네티스
- JWT
- @Transactional
- Web
- dockerhub
- Routing Key
- DLQ
- JPQL
- 컨테이너
- Dead Letter Queue
- docker compose
- 지연 로딩
- Spring Container
- mybatis
- docker
- Spring
- redis
- AWS
- MSA
- 서블릿 컨테이너
- 페이징
- 스프링 부트
- JdbcTemplate
- Today
- Total
목록분류 전체보기 (199)
look-forest
기본적인 마이크로서비스 구축프로젝트 아키텍처실무에서 쓸 MSA를 구축하려면 각 Service와 DB를 전부 독립적인 서버에 실행시켜야 한다.하지만 프로젝트의 심플함을 위해 로컬 컴퓨터 한 대에서 포트 번호만 다르게 해서 실행시킬 것이다 DB설계[모놀리식 아키텍처]모놀리식 아키텍처에서는 위 그림과 같이 user_id를 참조한 채로 DB를 설계하게 된다. [마이크로서비스 아키텍처]하지만 마이크로서비스에서는 DB가 독립적으로 분리되어 있기 때문에 user_id를 참조할 수 없다.하지만 특정 게시글이 어떤 사용자의 게시글인지 파악하기 위해 user_id에 대한 정보는 있어야 한다. 따라서 boards 테이블에서 user_id는 FK를 설정하지 않은 채로 컬럼을 생성하면 된다. MSA에서는 DB를 독립적으로 분리..
MSA(Microservice Architecture)란?하나의 큰 애플리케이션을 여러 개의 작고 독립적인 서비스로 나누어 개발하고 배포하는 소프트웨어 개발 아키텍처. 프로젝트 하나에 모든 API(결제 관련 API, 인증 관련 API, 상품 관련 API)를 전부 구현하는 모놀리식 아키텍처 방식과 비교해보자.이에 반해, 마이크로서비스 아키텍처(MSA)는 서비스에 필요한 API들을 하나의 프로젝트가 아닌 여러 개의 프로젝트로 나눠서 구현하는 방식이다. 아래 그림을 보면 결제 관련 API들끼리 모아놓은 프로젝트와, 인증 관련 API들끼리 모아놓은 프로젝트와, 상품 관련 API들끼리 모아놓은 프로젝트를 분리해서 구성했다. 그리고 MSA에서는 독립적으로 분리된 하나의 프로젝트를 서비스(service)라고 부른다...
DB 연동 메시지큐의 트랜잭션 처리 개요 DB 연동 메시지큐의 트랜잭션 처리 실습 Publisher-confirms을 이용한 트랜잭션 처리 트랜잭션 처리의 확장 - TCC의 이해 참고 자료 & 이미지 출처RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기
Dead Letter Queue와 Dead Letter ExchangeDLQ (Dead Letter Queue)실패한 메시지가 저장되는 큐. 메시지가 큐에서 제대로 처리 되지 못할 경우 DLQ로 이동됨. DLQ로 이동하는 경우NACK 처리나 거부: basic.reject 혹은 basic.nackTTL 만료Overflow: 큐에 설정된 최대 메시지 갯수를 초과하면 가장 오래된 메시지가 삭제되고 DLQ로 이동DLX (Dead Letter Exchange)실패한 메시지를 어디로 보낼지 라우팅하는 Exchange. DLQ로 바로 보내는 것이 아니라 RabbitMQ는 Exchange를 통해 라우팅한다. 전체 구조Producer ↓ Exchange ↓ OrderQueue ↓ (reje..
Routing 모델메시지를 Routing Key에 따라 특정 큐에 전달하는 기능.Direct Exchange와 Topic Exchange 모두에서 사용 가능.특징Direct ExchangeTopic Exchange라우팅 키 매칭 방식정확히 일치패턴 기반 (*, # 지원)특징매칭에 제한이 있음매우 유연(다양한 패턴 매칭)사용 사례단순 명확한 목적의 라우팅복잡하고 동적인 라우팅Topic 의 경우 패턴 매칭 기반 라우팅으로 binding key와 매칭되는 메시지만 수신* : 한 단어에 해당하는 모든 단어 수신# : 0개 이상의 단어 (와일드 카드)주요 특징고성능메시지를 필요한 곳에만 전달하기 때문에, 네트워크 부하 감소 효과가 있고 브로드캐스팅보다 자원 효율적 사용라우팅 키 기반의 메시지 분배각 큐는 하나 이..
Publish / Subscribe 모델Pub/Sub은 메시지 발행(Publish)과 구독(Subscribe)의 개념을 기반으로 하는 메시징 패턴(메시지 전달 모델)으로, 하나의 메시지가 복제되어 여러 “독립적인 소비자 그룹”에 각각 전달되는 모델이다.Publisher는 특정 대상이 아니라 주제(이벤트)에 메시지를 발행여러 Subscriber가 동시에 메시지를 수신 (여러 독립 구독자에게 복제 전달)Fanout Exchange와의 차이Pub/Sub = "신문을 여러 사람이 구독"Fanout = "신문을 그냥 무조건 모든 우편함에 배달"경쟁 소비자 모델과의 차이큐가 여러 개에 각각의 컨슈머 / 메시지 복제 있음, 여러 구독자가 동일 메시지 수신 → Pub/Sub큐가 하나에 컨슈머 여러개 / 메시지 복제 없..
Consumer간 작업 분배 - WorkQueue Work Queues : Competing Consumers PatternWork Queue 패턴에서는 여러 소비자가 하나의 큐에서 메시지를 가져가 경쟁적으로 처리한다.작업 부하를 효율적으로 분산하고, 병렬 처리를 가능하게 만들어 처리량을 향상시키는 효과가 있다. Round-Robin 방식(default)과 Fair Dispatch 방식을 사용하여 메시지를 Consumer 간에 분배Fair Dispatch 방식은 개발자가 코드 레벨에서 컨슈머간 분배 조정.메시지 수동 확인(Manual Acknowledgement) 모드로 설정해야함. (AMQP 기본 값 Auto)메시지 처리 비중(Prefetch Count) 설정 등을 통해 조정 가능주요 특징경쟁적인 메시..
Exchange 유형에 따른 처리 흐름1. Direct Exchange메시지를 발행할 때 사용하는 라우팅 키와 동일한 키로 익스체인지에 바인딩 된 모든 큐에 메세지를 전달.해당 라우팅 키와 일치하는 큐에만 메시지가 전달되는 방식이기 때문에 Direct Exchange 라고 한다.매핑이 정확하게 되는 한개의 키만 있으니까 1:1로 가능할거 같은데, 하나의 라우팅 키에 대해 여러 큐가 바인딩될 수 있기 때문에 1:N 매칭이 가능하다. 활용메시지가 명확하게 특정 큐로 전달되어야 할 때 큐마다 고유한 라우팅 규칙을 적용하여 메시지를 분류해야 할 때 예시 업무: 주문 상태 처리, 결제 처리, 사용자 알림 시스템 등- 주문 상태별로 라우팅 키를 정의하고, 각 상태에 해당하는 큐가 메시지를 받는다 2. Topic E..