프론트엔드 개발자 중규리 입니다 ദി ᷇ᵕ ᷆ ) 자세히보기

기술/학습

RabbitMQ(2) - RabbitMQ, GemFire 개념 및 등장 배경

중규리 2024. 4. 17. 18:19

 

🥸 모놀리식 아키텍쳐

하나의 어플리케이션에 여러가지 비즈니스 서비스가 번들되는 형태

  • 전통적인 모놀리식 아키텍쳐에선 개발팀의 규모가 컸다.
  • 결합도가 너무 높았음 (리스크 높음)
    • 개발자간 지식을 공유하는 것도 어려웠다.
    • 데이터 거버넌스 세팅을 공유하는 것도
  • 레거시 기술에 국한될 수 밖에 없음
    • 신기술 도입이나, 레거시에 알맞는 개발자를 찾기도 어려움

 

😎 모던 소프트웨어 아키텍쳐

독립적인 각각의 Micro Service를 구축해서, 상호 작용하도록 만든 형태

  • 각각의 서비스는 본 서비스에 맞는 데이터베이스를 가져야함
  • 비즈니스 서비스 간 결합도가 낮아짐
    • 독립적으로 개발되고, 테스트되고, 배포되기 때문에 빠르다
  • 데이터가 늘어나는 상황에서 서비스를 스케일업하는 데에 강점을 가짐
    • 테스트나 배포도 마찬가지
  • 인력이나 신기술 도입 면에서도 강점을 가짐

 

🔥 GemFire

key:value 형태의 응답 속도가 밀리세컨드 수준의 데이터 스토어

  • 빠른 속도가 필요한 경우는 ux와 직결됨
    • 실시간에 가까운 서비스의 경우, 액션이 즉각적으로 일어나길 기대하기 때문
  • MSA의 경우 독립적인 데이터베이스를 갖추고 있는데, 뱅킹 트랜잭션 같은 곳에서 상호간의 데이터를 참조하는 데에 시간을 줄일 수 있다.
  • 예를 들어, 이상거래의 가능성을 밀리세컨드 수준으로 탐지할 수 있어야한다.
    • 즉각적으로 알람이 가고, 트랜잭션을 막아버리는 행위가 진행될 수 있어야한다.
  • 기존의 비즈니스 로직은 수정하기 어렵고, 기술적인 향상으로 성능을 이끌어내야하는 상황에서 도움이 됨
  • 뱅킹 시스템 중 예시) 인출 장소 근처의 소비 장소를 추천해주는 형태
    • 결국 전부 실시간성을 강조하고 싶은 것 같음

 

🐰 RabbitMQ

기본적으로 메시지 브로커이며, 정보를 전달하는 역할을 담당함.

  • 다양한 매체와 디바이스에서 데이터를 전달하기 위한 미들웨어로 사용된다.
    • 빠르고, 안전하고, 신뢰성있게 전달할 수 있다.
  • 중요한 정보를 전달하는 상황에서, 여러 사용자와 매체, 상황에 대해 시스템 간 연결이 필요하다.
    • 이런 모든 경우를 범용할 수 있는 공통의 언어를 제공한다.
    • 한개의 메시지에 여러가지 액션이 붙어야하는 상황이 발생하기도 함.
  • 빠르고 안전하게 메시지를 전달하기 위해
    • 안정성도 있어야함 (공용 와이파이를 이용할 때에도 기밀성을 유지해야함)

 

🍖 RabbitMQ + GemFire

데이터를 빠르고 안전하게 전달하는 RabbitMQ

실시간으로 데이터를 분석하고 액세스하는 Gemfire

'기술 > 학습' 카테고리의 다른 글

RabbitMQ(1) - RabbitMQ 기초, Kafka와 차이점  (0) 2024.04.14