RabbitMQ 기본 개념 정리 (+ RabbitMQ vs Kafka vs ActiveMQ)
·
🌊 Data Engineering
이전 회사에서는 메세지 브로커(Message Broker)의 역할로서 Kafka와 ActiveMQ를 주로 사용하였습니다. 새로운 회사에서는 Kafka와 RabbitMQ를 사용하게 되어 관련 내용을 정리해보려고 합니다. 어떤 점이 다르고, 왜 RabbitMQ를 사용하는 것일까요? MSA 아키텍처 관점에서 메세지 브로커는 왜 필요할까요?쉽게 이야기 해서 A 서비스와 B 서비스 간의 직접 호출을 하지 않고, 중간에 메세지 큐를 두고 비동기적인 통신을 하기 위해서 입니다. 이 이야기는 이전에 작성한 이벤트 드리븐 방식(EDA)의 아키텍처에 대한 이야기와 이어집니다. 메세지 브로커는 해당 아키텍처를 구현하기 위한 하나의 도구 라고 이해하면 좋을 것 같습니다. https://minchoi0912.tisto..
파이썬 동시성 프로그래밍 - 바운드와 동기, 비동기 그리고 코루틴
·
🐍 Python
이 글은 인프런 파이썬 동시성 프로그래밍 강의를 듣고 GPT와 검색을 통해 정리해본 내용입니다. 강의 링크는 글 가장 아래에 있습니다. CPU 바운드란?프로그램이 실행될 때 프로그램의 작업 속도가 CPU 속도에 의해 제한되는 것을 의미합니다. 프로그램이 느린 이유가 네트워크, 디스크, 메모리 등의 문제가 아니라 복잡한 수학 수식으로 인한 계산이 많아서 프로그램 실행이 제한되는 경우입니다. 예를 들면 다음과 같은 작업들이 있습니다.대규모 이미지 리사이징영상 인코딩암호화/복호화수학 연산이 많은 머신러닝 계산복잡한 알고리즘 처리 IO 바운드란?CPU는 놀고 있는데 디스크, 네트워크, DB의 응답을 기다리느라 느린 상태입니다. 예를 들어 `input()` 과 같은 사용자의 응답을 기다리는 상태와 같은 경우라고 ..
MSA와 이벤트 드리븐 아키텍처(Event-Driven Architecture, EDA) 간단하게 알아보기
·
📘 IT 지식
이전 글에서 MSA 아키텍처에 대한 기본적인 구조와 개념들에 대하여 알아 보았습니다. 이번 글에서는 MSA 구조에서 데이터를 주고 받기 위해 사용하는 이벤트 기반 구조에 대한 이해를 해보려고 합니다. 마이크로 서비스 아키텍처에 대해서 궁금하신 분은 아래의 글을 참고해주세요. MSA (Micro Service Architecture) 구조와 API Gateway 역할많은 서비스들이 규모가 커질수록 배포, 장애, 확장성과 같은 문제들이 중요해지면서 모놀리식 구조에서 MSA로 전환을 고민하게 된다는 이야기들을 많이 들어보셨을거에요. 이 과정에서 자연스minchoi0912.tistory.com 이번 글은 우아콘 - 배달의 민족 마이크로 서비스 여행기 영상과 우아한 기술 블로그의 글을 참고하여 이해한 바를 정..
MSA (Micro Service Architecture) 구조와 API Gateway 역할
·
📘 IT 지식
많은 서비스들이 규모가 커질수록 배포, 장애, 확장성과 같은 문제들이 중요해지면서 모놀리식 구조에서 MSA로 전환을 고민하게 된다는 이야기들을 많이 들어보셨을거에요. 이 과정에서 자연스럽게 2개의 구조에서 차이점과 왜 이런 구조가 나오게 되었는지에 대해서 이해가 필요합니다. 최근 MSA 구조에 대한 이해가 필요하게 되면서 구조에 대한 정의와 핵심 요소인 API Gateway에 대해서 알아보겠습니다. 모놀로식 vs MSA 기본적인 모놀리식 아키텍처란 여러 도메인의 서비스를 하나의 아키텍처에 구성해둔 것으로 모든 기능이 하나의 어플리케이션으로 구성된 아키텍처를 이야기합니다. 이와 반대로 MSA는 작은 단위의 서비스들 여러 개가 함께 동작하는 서비스로 여러 개의 서버를 이야기합니다. 아래는 GPT와 함께..
Kafka는 어떻게 고가용성을 확보하고 있을까? (feat. 노드, 브로커, 컨트롤러, 클러스터, 래플리케이션)
·
🌊 Data Engineering
Kafka를 사용하는 가장 큰 이유는 대규모의 데이터를 안정적으로 처리 하기 위해서입니다. Kafka는 분산 메세징 시스템을 통해 고가용성을 (시스템이 장애 상황에도 데이터 처리를 멈추지 않기 위함, High Availability / HA) 확보합니다. 오늘은 Kafka가 어떤 구조를 통해서 고가용성을 보장하는지, 그리고 운영 환영에서 고려해야 하는 설정 포인트를 중심으로 정리해보겠습니다. 카프카 서버에 대한 장애는 아래 처럼 다양한 경우가 있을 수 있습니다. 특정 Kafka 서버가 장애로 내려간 경우네트워크 단절이나 일시적인 장애가 발생한 경우일부 Consumer 또는 Producer가 비정상 종료된 경우 이런 케이스들의 장애에 대응하기 위해 카프카는 다음과 같은 구조로 구성합니다. 노..