Broker pattern은 Apache ActiveMQ, Apache Kafka, RabbitMQ 등 메시지 미들웨어 같은 아키텍쳐에 주로 이용

春 春 33479 
Created at
Updated at  
530 0 0

브로커 아키텍처 패턴 정의

브로커 아키텍처 패턴은 클라이언트-서버(Client-Server) 또는 마스터-슬레이브(Master-Slave)와 같이 역할이 분리된 느슨하게 결합된(decoupled) 컴포넌트들을 구조화하는 데 주로 사용되는 아키텍처 패턴입니다. 이 패턴의 핵심인 '브로커' 컴포넌트는 시스템 내의 다양한 컴포넌트(주로 클라이언트와 서버) 간의 통신을 중재하고 조율하는 역할을 담당합니다. 이를 통해 클라이언트와 서버는 서로의 구체적인 구현 방식이나 네트워크 위치를 알 필요 없이 브로커를 통해 간접적으로 상호작용하게 됩니다. 이처럼 컴포넌트 간의 직접적인 의존성을 제거하여 유연하고 확장 가능한 시스템을 구축할 수 있습니다.

Broker pattern은 Apache ActiveMQ, Apache Kafka, RabbitMQ 등 메시지 미들웨어 같은 아키텍쳐에 주로 이용

 

동작 원리

브로커 아키텍처 패턴의 기본적인 통신 흐름은 다음과 같은 단계로 이루어집니다:
1. 클라이언트의 요청: 클라이언트 컴포넌트가 특정 기능 수행을 위한 요청(메시지, 명령, 데이터 등)을 생성하여 브로커에게 전달합니다. 클라이언트는 요청을 처리할 서버의 구체적인 위치나 식별자를 알 필요가 없으며, 단지 브로커에게 "어떤 서비스"가 필요하다는 의도를 전달합니다.
2. 브로커의 중재 및 라우팅: 브로커는 클라이언트로부터 받은 요청을 분석합니다. 이 요청을 처리할 수 있는 적절한 서버 컴포넌트를 식별하기 위해 브로커는 자체적인 서비스 레지스트리, 라우팅 테이블, 또는 로드 밸런싱 알고리즘 등을 활용합니다. 예를 들어, 요청 메시지의 특정 헤더나 토픽 정보를 기반으로 해당 메시지를 처리할 서버를 결정합니다.
3. 서버로의 전달: 브로커는 식별된 서버 컴포넌트에게 클라이언트의 요청을 전달합니다. 이 과정에서 브로커는 메시지 큐나 토픽 등을 활용하여 비동기 통신을 지원할 수 있습니다.
4. 서버의 처리 및 응답: 서버 컴포넌트는 브로커로부터 받은 요청을 처리하고, 그 결과를 다시 브로커에게 반환합니다.
5. 클라이언트에게 결과 전달: 브로커는 서버로부터 받은 처리 결과를 원래 요청을 보냈던 클라이언트에게 전달하여 상호작용을 완료합니다.
이러한 방식으로 브로커는 클라이언트와 서버 간의 복잡한 직접 통신을 추상화하고, 분리된 환경에서 효율적이고 안정적인 상호작용을 가능하게 합니다.

 

주요 특징 및 이점

브로커 아키텍처 패턴은 분산 시스템 구축에 있어 다음과 같은 중요한 특징과 이점을 제공합니다:

  • 느슨한 결합(Decoupling): 클라이언트와 서버 컴포넌트가 브로커를 통해 간접적으로 통신하므로, 서로의 구현이나 배포 위치에 대한 직접적인 의존성이 줄어듭니다. 이는 각 컴포넌트의 독립적인 개발, 배포, 유지보수를 가능하게 합니다.
  • 동적인 변경 및 확장성: 시스템의 구성 요소를 동적으로 추가, 삭제, 또는 재할당하기 용이합니다. 새로운 서버가 추가되거나 기존 서버가 제거되더라도 브로커는 이를 감지하고 라우팅 정보를 업데이트하여 시스템 전체의 중단 없이 유연하게 대응할 수 있습니다. 이는 시스템의 확장성(Scalability)과 가용성(Availability)을 크게 향상시킵니다.
  • 배포 투명성(Deployment Transparency): 개발자와 클라이언트 입장에서는 특정 서비스가 어느 서버에 배포되어 있는지 알 필요 없이 브로커에 요청을 보내면 됩니다. 브로커가 내부적으로 요청을 올바른 서버로 라우팅해주므로, 개발 복잡성이 줄어들고 배포 및 운영이 간소화됩니다.
  • 재사용성 증가: 컴포넌트들이 브로커를 통해 독립적으로 상호작용하므로, 특정 컴포넌트의 재사용성이 높아집니다.
  • 이질적인 환경 지원: 서로 다른 프로그래밍 언어나 운영체제로 개발된 컴포넌트들도 브로커를 통해 표준화된 방식으로 통신할 수 있습니다.

 

주요 사례

브로커 아키텍처 패턴은 주로 메시지 미들웨어 및 분산 시스템에서 메시지 브로커 형태로 널리 활용됩니다. 대표적인 소프트웨어들은 다음과 같습니다:

  • Apache ActiveMQ: JMS(Java Message Service) 표준을 구현하는 오픈 소스 메시지 브로커입니다. 클라이언트(메시지 생산자)와 서버(메시지 소비자) 사이에서 메시지를 큐(Queue) 또는 토픽(Topic)을 통해 비동기적으로 중개합니다.
  • Apache Kafka: 고성능 분산 스트리밍 플랫폼으로, 발행-구독(Publish-Subscribe) 모델을 기반으로 대량의 실시간 데이터를 안정적으로 처리하고 저장합니다. Kafka 브로커는 프로듀서와 컨슈머 사이에서 메시지를 중개하고, 데이터를 분산 로그 형태로 관리하여 높은 처리량과 내결함성을 제공합니다.
  • RabbitMQ: AMQP(Advanced Message Queuing Protocol)를 구현하는 메시지 브로커로, 다양한 프로토콜(STOMP, MQTT 등)을 지원하며 유연한 라우팅 규칙을 통해 메시지를 전달합니다. 엔터프라이즈 환경에서 폭넓게 사용됩니다.
  • JBoss Messaging (현재 WildFly Core Messaging): JBoss 애플리케이션 서버의 메시징 컴포넌트로, 유사하게 클라이언트와 서버 간의 메시지 교환을 관리하며 엔터프라이즈 환경의 요구사항을 충족시킵니다.

이러한 소프트웨어들은 모두 브로커 컴포넌트를 통해 메시지 생산자와 소비자 간의 직접적인 결합을 해소하고, 메시지 전달을 조율하여 시스템의 복잡성을 관리하고 유연성을 높입니다.

 

고려 사항

브로커 아키텍처 패턴의 이점을 최대한 활용하고 안정적인 시스템을 구축하기 위해서는 몇 가지 중요한 고려 사항이 있습니다:

  • 서비스 표현 및 문서화의 표준화: 배포 투명성을 실현하기 위해서는 각 서비스가 제공하는 기능, 필요한 입력, 반환되는 출력, 발생 가능한 오류 등을 명확하고 표준화된 방식으로 정의하고 문서화하는 것이 필수적입니다 (예: OpenAPI/Swagger). 이는 클라이언트가 브로커를 통해 서비스를 요청할 때 필요한 정보를 명확히 이해하고 올바르게 사용할 수 있도록 돕습니다.
  • 통신 프로토콜 및 메시지 형식 표준화: 컴포넌트 간 통신에 사용될 프로토콜(예: HTTP, AMQP, Kafka 프로토콜)과 메시지 형식(예: JSON, XML, Protobuf)을 표준화하여 상호 운용성을 보장하고 개발 및 통합의 복잡성을 줄여야 합니다.
  • 브로커의 복잡성 및 단일 실패 지점(Single Point of Failure): 브로커가 모든 통신을 중재하므로, 브로커 자체의 구현이 복잡해질 수 있으며, 브로커가 다운될 경우 시스템 전체가 마비될 수 있는 단일 실패 지점이 될 위험이 있습니다. 대부분의 상용 브로커 시스템은 이러한 문제를 해결하기 위해 클러스터링, 복제, 분산 처리 기능을 제공하여 고가용성과 내결함성을 보장합니다.
  • 성능 오버헤드: 직접 통신하는 방식에 비해 브로커를 통한 간접 통신은 약간의 성능 오버헤드를 발생시킬 수 있습니다. 하지만 현대의 고성능 브로커들은 이 오버헤드를 최소화하며, 얻게 되는 유연성과 확장성이라는 이점이 이를 상회하는 경우가 많습니다.
Tags Apache ActiveMQ Apache Kafka Architectural Patterns Broker Broker Architectural pattern Broker pattern Client-server Decoupled components JBoss Messaging Master-slave RabbitMQ 마스터-슬래이브 마스터-슬레이브 브로커 브로커 아키텍쳐 브로커 컴포넌트 브로커 패턴 브로커아키텍쳐 패턴 아키텍쳐 아키텍쳐 패턴 클라이언트-서버 Facebook X
Comments 0
Similar posts
  1. Pipe-filter pattern은 컴파일러와 같이 통해 연속되는 필터링 기법을 통한 분석을 하는 아키텍쳐에 주로 이용
    496
  2. Peer-to-peer pattern은 BitTorrent와 같이 파일공유 솔루션이나 P2PTV, PDTP와 같은 멀티미디어 프로토콜에 주로 이용
    473
  3. Master-slave pattern은 장애 대응을 위한 Database 복제 등 병렬처리 및 Disaster Recovery 대응 로직에 주로 이용
    581
  4. Event-bus pattern은 Push Notification Service, 안드로이드 앱 개발에 주로 응용되는 아키텍쳐
    548
  5. MVC(Model-view-controller) pattern은 Django, Rails와 같은 웹 어플리케이션 개발에 주로 응용되는 아키텍쳐
    612
  6. Client-server pattern은 TCP/IP를 통해 데이터를 주고 받는 이메일, 웹하드 등이 주로 이용하는 아키텍쳐
    559
  7. Blackboard pattern은 오늘날 NLU(Natural Language Understanding)이나 차량인식 등에 응용되는 아키텍쳐
    770
  8. Layered pattern은 PC App, 쇼핑몰(이커머스) 웹사이트 등이 주로 쓰는 아키텍쳐 패턴
    280
  9. Interpreter pattern은 SQL 또는 통신프로토콜을 기술하는 언어 구현시 주로 이용되는 아키텍쳐
    495
  10. 아키텍쳐 패턴이란 - 소프트웨어 디자인 패턴
    490
  11. 아틀라시안 뱀부(Atlassian Bamboo)를 활용한 CI(Continuous Integration) 환경 구축
    495
  12. 플러거블 스토리지 엔진을 가진 MySQL 아키텍쳐 - InnoDB는 인메모리 캐싱을 하는 고성능 솔루션
    240
  13. 넷플릭스 서비스 오토스케일링 아키텍쳐
    413
  14. AWS 기반 서버 없는 아키텍쳐(Server-less back-end architecture)
    330
  15. 마이크로 서비스 아키텍쳐 (MSA, Micro Service Architecture)의 장단점 및 구현 방법
    712
  16. Machine Learning Tool의 종류와 용도
    637
  17. 자연어처리(NLU)를 하기 위한 소프트웨어 아키텍쳐 - 걸음마단계부터 인간 수준으로 진화하는 방향에 대해 알아본다
    485
  18. 구글 머신러닝 솔루션 텐서플로(Google Machine Learning - TensorFlow) 오픈소스 공개에 따른 현재와 미래의 비젼
    282
  19. EIDR(Entertainment IDentifier Registry) - 콘텐츠 ID 표준화를 이끄는 미디어/엔터테인먼트 서비스 연관 국제 표준 단체
    611
  20. 인텔이 주장하는 데이터 센터 아키텍쳐의 미래는 Software-Defined Infrastructure(SDI)
    290
  21. 집단지성을 활용하는 Collaborative Filtering(CF) 알고리즘 - 추천 알고리즘으로 많이 이용되고 있지만, 한계도 알아야 해
    595
  22. 서버 인프라 설계시 장애를 고려하여 만드는 Single Infra, Active-Stand-by,Active-Active, Active-Stand-by/Active-Active+DR Center
    456
  23. 2-Tier 아키텍쳐와 3-Tier 아키텍쳐의 다른점
    353
  1. 카나리 배포 vs A/B 테스팅
    166
  2. 바이브코딩은 나의 명확한 의도(Vibe)와 AI의 폭발적인 생산성을 결합하여, 어제는 불가능했던 일을 오늘 현실로 만드는 혁신적인 과정
    907
  3. 그림으로 보는 CI/CD Pipeline
    335
  4. ChatGPT로 그려보는 그림 - 행복한 토끼를 그려 본다
    115
  5. Google Docs/Slide에서 화살표 -> 를 → 로 자동 변환하는 꿀팁
    1,691
  6. 엑셀 스프레드시트 프린트 범위 설정하기
    486
  7. 샤오미 YI 웹캠 덕분에 카메라에 녹화된 아버지의 모습을 복원하여 볼 수 있어 감사
    259
  8. Delphi Community Edition - 비영리/개인 개발자에게 완전 무료
    757
  9. 멀티도메인(Multi-domain) SSL 인증서 무료로 만드는 방법
    349
  10. CENTOS 7.x에 ffmepg 설치하는 방법
    312
  11. 삼성 wyz070 SIP Phone 설정 방법
    965
  12. ffmpeg으로 mov file을 mp4로 변환하는 방법
    420
  13. Windows Live Writer로 글 올릴 때 프로그램이 freeze되는 현상 해결 방법
    926
  14. HP EliteBook 8440p 시리즈 노트북 PC - 8440p 에 장착된 메모리 정보
    555
  15. 삼성 MG900 블루투스 헤드셋 페어링 방법 (EO-MG900)
    1,153
  16. 추억의 스타크래프트 사무실에서 한판 뜨기 - IPX가 안되어 방법을 찾아 보았습니다
    618
  17. 갑자기 컴퓨터가 너무 느려져 내가 한 일 - 백신프로그램 하나를 제외한 나머지를 다 지우니 해결
    235
  18. 코드리뷰도 생산성 있게 - Visual Studio Code를 이용하여 코드리뷰 중 JIRA에 이슈 등록하는 방법
    305
  19. 구입 후 만족스러웠던 맥북프로 케이스 - insquare 2017 맥북프로 13/15 터치바 케이스
    651
  20. 원격 폴더를 외장 하드처럼 자유롭게 써 보자 - 마운틴덕(Mountain Duck)
    587
  21. CentOS에서 포트 여는 방법 - iptables를 이용하여 80포트, 22번 포트 등을 열어
    286
  22. CentOS 6.x에 APM(Apache+PHP+MySQL) 설치 및 초기 설정 방법
    398
  23. 논문/특허 인용여부를 검색해주는 웹사이트
    239
  24. LED 리폼으로 보다 밝은 거실/부엌 만들고, 더불어 전기요금 절감에 도전
    213
  25. SK 텔링크 선불전화 충전 방법
    226
  26. 스마트 TV에 이어 스마트폰까지 진출한 중국의 동영상 업체 LeTV
    259
  27. 엑셀(EXCEL) 사용시 한자(중국어)를 한글로 번역하는 방법
    535
  28. 서버 해킹 도대체 누가?
    316
  29. 8K 고화질 영상 - 섬세한 화질과 현란한 색상에 매료되
    220
Recently updated
  1. 떡꼬치 양념이 착! 중독성 대박 두툼한 매콤 통스팸김밥 만들기
    27
  2. 살 안 찌는 레몬즙, 많이 마시면 위험한 의외의 이유
    50
  3. 겨울철 꿀차 효능과 매일 마시면 살찔까? 오해와 진실
    60
  4. 실바 넘은 극한 몰빵 배구, 귀화 준비 인쿠시 홀로 48득점 폭주
    49
  5. 히트곡을 딸과 함께 부르는 박남정 박시은 부녀 동반 무대
    90
  6. 계란찜 뚝배기 그릇에 하는 방법
    334
  7. 라면 사리와 라면 스프로 만드는 라면 피자
    493
  8. 순두부와 라면의 알싸한 조화로 만들 수 있는 순두부 찌게 라면
    388
  9. 모션데스크 공간 200% 활용하기: 엔지니어가 찜한 페그보드 데스크 오거나이저 리뷰
    223
  10. 삼성전자 3분기 영업이익 107조 돌파! 국내 최초 '분기 100조원' 시대 열었다
    102
  11. 야! 남규리님 프로야구 레전드 시구 봤던 사람 있냐?
    516
  12. 내 유튜브 알고리즘을 점령한 남규리 여인의 향기 쇼츠 추천
    81
  13. 씨야 데뷔 20주년 콘서트로 전한 남규리의 반가운 근황
    83
  14. 요즘 다시 반복해서 듣고 있는 클론의 음악에서 느껴지는 김태영님의 피쳐링 파워
    71
  15. 솔직해서 더 매력적인 아일릿 원희의 성격 알아보기
    94
  16. 걸그룹 베스티 '연애의 조건', 13년 만의 역주행 신화 분석
    103
  17. YG '베이비몬스터'의 모든 것: 7인 멤버 프로필부터 앨범 활동 역사까지 완전 정리
    103
  18. 보험에서 질병당일 입원금 보상 받는 방법
    411
  19. 사고시 가입 된 보험에서 통원비가 지급되는 경우
    193
  20. 상해의료실비란?
    244
  21. 일본 예능부터 샤넬쇼까지 완벽 소화! 독보적인 일본어 실력 보여준 아일릿 원희
    76
  22. 호랑이 감독 김연경 - 인쿠시와 함께 갓생 댄스 폭발
    77
  23. 군인들을 설레이게 했던 군통령 - 걸스데이
    133
  24. 베이비몬스터 아사 일본 현지 근황
    160
  25. 지마켓의 재미난 컨셉 광고
    105
  26. 재결성한 터보, 그 이후의 행보와 최근 근황
    81
  27. 한때 소셜미디어를 흔들었던 나루토 댄스 챌린지
    66
  28. 성경 역사와 세계사를 한눈에 비교해보는 아담의 역사 지도 연표 추천
    114
  29. 외계에서 온 우뢰메 - 에스퍼맨의 목소리는 지금 들어도 뭔가 어색한
    89
  30. 중국 6대2 무규칙 매치, 링 줄로 몰아붙인 압도적 경기 전개
    90
  31. 공부가 하고 싶었던 가난한 소년 - 하고자 하는 의지만 있다면 원하는 바를 이룰 수 있어
    206
  32. 돌아온 인쿠시와 신인감독 김연경! 벌써부터 설레는 원더독스 기대평
    132
  33. 별 이유 없이 혼인신고를 미루어 왔는데 최근 남편이 부정한 관계에 있는 여자와 먼저 혼인신고를 한 경우, 정식 결혼한 저는 어떻게 됩니까?
    270
  34. 전광훈 목사가 빤스목사로 불리우는 이유
    418
  35. 자녀배상책임 보험 가입시 배상 범위
    286
  36. 태아보험 가입시 저체중아 인큐베이터 특약
    304
  37. 추석 아침 식사와 혈당 관리의 중요성 - 아침 공복에 피해야 할 대표 명절 음식 3가지
    93
  38. 교통사고 합의는 보험회사와 언제까지 합의해야 하는가? 소멸시효?
    473
  39. 사고로 인하여 장해가 발생하면 소송이 필요할수도 있는가?
    252
  40. 사고시 보험사들의 장해 판단 유형
    217
  41. 각종 사고 발생시 합의금 계산 방법
    350
  42. 세무조정의 개념적 이해
    225
  43. 결산조정사항의 개념 및 분류
    297
  44. 불길속의 영웅
    94
  45. 외국인인척 하고 통인시장 가보기
    136
  46. 재고자산의 평가방법을 신고치 않을 경우 받는 영향
    268
  47. 법인세의 중간예납이 가지는 의미
    227
  48. 매콤달콤 황금비율 라면 떡볶이 (라볶이) 레시피
    508
  49. 참치로 간단히 만드는 매운탕
    644
  50. 라면으로 고로케 만드는 방법
    375