PaaS 221

kafka consumer의 내부 동작 원리와 구현

컨슈머의 오프셋관리 컨슈머의 동작중 가장 핵심은 오프셋 관리입니다. 컨슈머는 카프카에 저장된 메시지를 꺼내오는 역할을 하기 때문에 컨슈머가 메시지를 어디까지 가져왓는지를 표시하는 것은 매우 중요합니다. 예를 들어 코드 배포로 인해 컨슈머가 일시적으로 동작을 멈추고 재시작하는 경우나, 컨슈머가 구동중인 서버에서 문제가 발생해 새로운 컨슈머가 기존 컨슈머의 역할을 대신 하는 경우에는 기존 컨슈머의 마지막 메시지 위치부터 새로운 컨슈머가 메시지를 가져올 수 있어야만 장애로부터 빠르게 복구될 수 있습니다. kafka에서는 메시지의 위치를 나타내는 위치를 오프셋이라고 부르는데, 이 오프셋은 숫자 형태로 나타냅니다. 컨슈머 그룹은 자신의 오프셋 정보를 kafka에서 가장 안전한 저장소인 토픽에 저장합니다. __co..

PaaS/MQ 2022.06.22

Drone CI 란

Ebay나 일부 기업에서 Jenkins가 아닌 다른 CI도구로 전환한 사례가 있는데, 이때 Drone CI 오픈소스를 사용했다고 밝히고 있다. DroneCI는 YAML로 파이프라인을 짠다. (이젠 YAML 시대인듯..) UI 도 깔끔하고 보기가 좋았다. 근데 그 외에 Jenkins에 경쟁력있을 만한 무언가를 찾지 못했다.... https://www.drone.io/ Drone CI – Automate Software Testing and Delivery Drone is a self-service Continuous Delivery platform for busy development teams www.drone.io

PaaS/CI CD 2022.06.21

React Artifact를 Apache로 올리기

컨테이너 환경에서는 npm, yarn으로 Startup을 하겠지만, 미들웨어를 쓰거나, 모놀리식의 경우에는 html을 뽑아서(빌드하여) 세팅해줘야 한다. Yarn을 예로 들어보면 $ yarn -v $ yarn install $ yarn build 를 통해 ./build/ 하위 경로에 아티펙트가 생성된다. 해당 아티펙트 들을 C:\Program Files\Apache\httpd-2.4.54\htdocs 하위로 옮긴다. 혹시 경로가 기본 경로가 아니라면 C:\Program Files\Apache\httpd-2.4.54\conf\httpd.conf 에서 경로를 맞춘다. 다음 Apache 재기동

PaaS/기타 2022.06.15

kafka producer의 내부 동작 원리와 구현

파티셔너 카프카의 토픽은 병렬처리가 가능하도록 하기 위해 파티션으로 나뉘고 최소 하나 또는 둘 이상의 파티션으로 구성됩니다. 그리고 프로듀서가 kafka로 전송한 메시지는 해당 토픽 내 각 파티션의 로그 세그먼트에 저장됩니다. 따라서 프로듀서는 토픽으로 메시지를 보낼 때 해당 토픽의 어느 파티션으로 메시지를 보내야할지 결정해야 하는데 이때 사용하는 것이 바로 파티셔너 입니다. 프로듀서가 프로듀서가 파티션을 경정하는 알고리즘은 기본적으로 메시지의 키를 해시처리해 파티션을 구하는 방식을 사용합니다. 따라서 메시지의 키값이 동일하면 해당 메시지들은 모두 같은 파티션으로 전송됩니다. 예상치 못한 많은 양의 메시지가 kafka로 인입되는 경우 kafka는 클라이언트의 처리량을 높이기 위해 토픽의 파티션을 늘릴 수..

PaaS/MQ 2022.06.14

kafka 리플리케이션, 컨트롤러, 로그

리플리케이션 동작개요 카프카는 브로커의 장애에도 불구하고 연속적으로 안정적인 서비스 제공함으로써 데이터 유실을 방지하며 유연성을 제공합니다. 카프카의 리플리케이션 동작을 위해 토픽 생성 시 유실을 방지하며 유연성을 제공합니다. 카프카의 리플리케이션 동작을 위해 토픽 생성 시 필수값으로 replication factor 라는 옵션을 설정해야 합니다. # ./kafka-topics.sh --bootstrap-server localhost:9092 --create --topic peter-overview01 --partitions 1 --replication-factor 3 # ./kafka-topics.sh --bootstrap-server localhost:9092 --topic peter-overview..

PaaS/MQ 2022.06.14

kafka 프로듀서, 컨슈머 개념과 사용법

Topic 생성 # ./kafka-topics.sh --bootstrap-server localhost:9092 --create --topic peter-overview01 --partitions 1 우선 프로듀서가 어떻게 디자인 되어 있는지를 살펴봅시다. 주요옵션 bootstrap.servers 연결할 서버 정보입니다. host1:port1,host2:port2와 같이 여러개를 나열할 수 있습니다. 초기 커넥션 연결시에 사용하기 때문에, 모든 서버 리스트를 포함할 필요는 없습니다. 실제 메시지 전송시에는 새로운 커넥션을 맺은 다음에 전송하기 때문이지요. key.serializer, value.serializer 메시지를 serialize 할 때 사용할 클래스를 지정하면 됩니다. ByteArraySeri..

PaaS/MQ 2022.06.13

kafka 소개 및 개념

kafka를 왜 사용하는가? 이벤트 드리븐 아키텍처를 구현하는데에 동기방식으로 구현할 경우 다음과 같은 한계에 봉착하게 된다. 여러 네트워크를 이용하는 환경에서 모든 데이터 변경에 대한 올바른 전달 보장 문제 동일한 데이터를 동시에 수정하면서 정확하게 순서를 보장해야 하는 문제, 그리고 수정된 이벤트들을 정확한 순서대로 아웃바운드 전송하는 문제 다양한 클라이언트들의 요구사항을 효율적으로 지원하기 어려운 문제 빠른 전송을 위한 클라이언트 또는 대량의 배치 전송을 위한 클라이언트를 지원하기 어려운 문제 이를 해결하는 요소는 다음과 같다. 그리고 kafka가 이 요소를 갖고 있다. 비동기 방식의 스트리밍 플랫폼 빠른 데이터 수집이 가능한 높은 처리량 순서 보장 적어도 한번 전송방식으로 누락이 없음 멱등성 클라..

PaaS/MQ 2022.06.13

NGINX 와 Apache 비교

MSA에서 NGINX가 Web서버 Middleware로 대세가 되고 있는데 과연 절대적인 정답일까? 우선 아키텍쳐 별로 차이점은 다음과 같다. 참고링크 : https://serverguy.com/comparison/apache-vs-nginx/ Apache Vs NGINX – Which Is The Best Web Server for You? Apache vs NGINX is a decade-old topic. Picking one isn't easy! This detailed comparison on Apache vs Nginx will help you make the best choice serverguy.com KEY POINT : Apache는 동적컨텐츠 처리 가능 vs NGINX는 처리못함 Ap..

PaaS/기타 2022.06.13