목록분산 시스템 (9)
쿼카러버의 기술 블로그
분산 시스템과 블록체인 그리고 데이터 일관성(Consistency) 블록체인은 그 자체로 분산환경 시스템의 한 형태다. 일반적으로 분산 시스템이란 여러 컴퓨터가 네트워크를 통해 연결되어 작동하는 시스템을 말하기 때문이다. 그래서 블록체인과 데이터베이스 분산 처리에 대해 개발자 입장에서 공부하다보면 사실 기술적으로는 공통점이 정말 많을 수 밖에 없다. 누가 데이터를 다루고 보존하고 책임지냐의 문제에서만 차이가 있을뿐, 결국 성능 입장에서 직면하는 문제와 해결해야 하는 문제들 그리고 해결방법들은 서로 밀접하게 연결되어 있다. 탈중앙화 개념을 도입하기 위해 암호학기술, 난수 개념을 활용해서 좀 더 복잡한 메커니즘이 추가되는 정도..? 무튼 본 글은 백엔드 개발자 입장에서 매번 생각만하다 정리해봐야겠다 싶었던 ..
NoSQL을 공부하다보면 가장 많이 접하게 되는 단어 중 하나가 CAP이다. 아무래도 NoSQL 스토리지들이 분산 시스템으로 동작하다보니, 이들을 이해하기 위해서는 꼭 알아두어야 할 개념이기 때문이다. 프로젝트 특성에 따라 데이터베이스 솔루션을 선택해야 하는데, 이 때 이 개념을 잘 이해하고 있으면 프로젝트 특성에 맞는 솔루션을 선택하는데 도움이 된다. 근데 이 CAP Theorem은 매우 심플하게 분산 시스템의 성질을 설명해주는 정리 같으면서도 잘못 읽으면 오히려 오해가 생길 위험이 있다. 따라서 CAP이 의미하는 바가 무엇이고, 이 정리가 진정 무엇을 알려주고자 하는지 좀 제대로 이해해보기 위해 글을 쓴다. 참고로 이번 글은 분산시스템과 데이터베이스에 대한 기본적인 이해가 됐다는 전제하에 쓴 글이다...
현재 카프카 정리 시리즈를 포스팅 하고 있다. 카프카 정리 시리즈에서 다루는 여러가지 주제가 궁금할 경우 본 글을 참고하길 바란다. 앞 글에서 카프카가 실제로 어떻게 활용되는지에 대해 알아보았다. 본 글에서는 카프카를 직접 도커를 활용하여 직접해보기 위해 예제를 아주 잘 정리해준 글을 번역하고, 일부 수정한 글이다. Setup - 실행환경 준비 먼저 아파치 카프카 도커 컨테이너를 실행해보자. Confluent의 도커 이미지르 사용할 수도 있지만 필요 메모리가 8GB가 넘기 때문에 wurstmeister의 이미지를 fork한 내 개인 레포를 사용한다. cd git clone https://github.com/getveryrichet/kafka-docker.git cd kafka-docker 카프카와 주키퍼..
현재 카프카 정리 시리즈를 포스팅 하고 있다. 카프카 정리 시리즈에서 다루는 여러가지 주제가 궁금할 경우 본 글 을 참고하길 바란다. 앞서 카프카의 프로듀서와 컨슈머가 무엇인지 그리고 그들의 동작방식에 대해 이론적으로 알아보았다. 본 글에서는 카프카를 그래서 어디에 쓰는데?, 프로듀서와 컨슈머가 서로 어떻게 동작하는데?와 같은 질문에 답하려고 한다. Kafka의 사용 목적을 읽다보면, 왜인지는 알겠으나 구체적으로 어떤 형태로 활용되는지에 대해 감이 통 잡히지 않았다. 따라서 Kafka를 사용하는 이유를 크게 세가지로 나누어보고 각 이유별로 예시를 들어 설명하려고 한다. Kafka를 사용하는 이유를 크게 나누면 아래 세 가지를 꼽을 수 있다. 분산 큐잉 시스템으로 활용 데이터 허브 Response가 필요 ..
현재 카프카 정리 시리즈를 포스팅 하고 있다. 카프카 정리 시리즈에서 다루는 여러가지 주제가 궁금할 경우 본 글 을 참고하길 바란다. 본 글은 컨슈머 개념을 이해하기 위해 작성했다. 컨슈머에 대한 개념과 구현예시를 중점으로 다룬다. Consumer란? 토픽의 파티션에 저장되어 있는 메시지를 소비하는 역할을 하는 애플리케이션이나 서버를 컨슈머라고 부른다. 컨슈머가 단순하게 카프카로부터 메시지만 가져오는 것 같지만 내부적으로는 컨슈머 그룹, 리밸런싱 등 여러 동작을 수행한다. 컨슈머는 데이터를 요청할 때 리더 파티션을 가지고 있는 카프카 브로커와 통신한다. Consumer 동작 방식 프로듀서가 카프카의 토픽으로 메시지를 전송하면 해당 메시지들은 브로커들의 로컬 디스크에 저장된다. 그리고 컨슈머는 토픽에 저장..
현재 카프카 정리 시리즈를 포스팅 하고 있다. 카프카 정리 시리즈에서 다루는 여러가지 주제가 궁금할 경우 본 글 을 참고하길 바란다. 본 글은 프로듀서의 개념을 이해하기 위해 작성했다. 프로듀서에 대한 개념과 기본적인 동작방식그리고 간단한 파이썬 프로듀서 구현체 대해 다룬다. Producer란? 프로듀서는 메시지를 생산해서 카프카의 토픽으로 메시지를 보내는 역할을 담당한다. 프로듀서는 데이터를 전송할 때 리더 파티션을 가지고 있는 카프카 브로커와 직접 통신한다. Producer 동작방식 먼저 프로듀서의 전체 흐름을 아래 그림과 함께 설명하겠다. Producer Record 카프카로 전송하기 위한 실제 데이터며, 레코드는 토픽, 파티션, 키, 밸류로 구성된다. 프로듀서가 카프카로 레코드를 전송할 때 카프카..
현재 카프카 정리 시리즈를 포스팅 하고 있다. 카프카 정리 시리즈에서 다루는 여러가지 주제가 궁금할 경우 본 글 을 참고하길 바란다. 본 글은 카프카의 아키텍처 및 구성요소, 즉 카프카를 이해하기 위해 알아두어야 할 필수 Term들에 대해 다룬다. Kafka의 아키텍처 pub - sub 모델 : 앞 글에서 다루었듯, publisher subscriber모델은 데이터 큐를 중간에 두고 서로 간 독립적으로 데이터를 생산하고 소비한다. 이런 느슨한(loose) 결합을 통해 publisher나 subscriber가 죽더라도 서로 간에 의존성이 없기 때문에 안정적으로 데이터를 처리할 수 있다. 특히 kafka에는 offset을 통해 특정 토픽을 어디까지 읽었는지에 대한 정보를 관리하고 있기 때문에 컨슈머중 어느 ..
현재 카프카 정리 시리즈를 포스팅 하고 있다. 카프카 정리 시리즈에서 다루는 여러가지 주제가 궁금할 경우 본 글을 참고하길 바란다. 본 시리즈는 아파치 카프카 시리즈의 첫 번째 글로, 카프카가 무엇인지에 대해 간략하게 소개한다. 카프카란? 대용량, 대규모 메시지 데이터를 빠르게 처리하도록 개발된 분산 메시징 플랫폼이다. 기술적으로 표현하면 비동기 처리를 위한 메시징 큐의 한 종류이며, 프로듀서와 컨슈머가 있다. 비동기라는 단어에서 겁먹지 말고 우리가 흔히 사용하는 메일의 예시로 비동기 메시징 큐의 의미를 한번 이해해보자. Mail : 비동기 메시징 우리가 일상적으로 사용하는 메일에서 보내는 사람은 받는 사람이 언제 메일을 받을지 모르는 상태에서도 메일 서버로 메시지(메일)를 보낼 수 있다. 보낸 메시지는..