Middleware 12

Kafka 파티션

파티션에 대해 공부하기 전에, 카프카에서 사용되는 몇 가지 개념과 그것들이 파티션과 어떻게 연관이 있는지를 알아보자. Events 이벤트란, 과거에 일어난 사실을 뜻한다. 이벤트는 발생함으로 인해 변화된 상태를 가지고 시스템 사이를 오가는, 불변하는 데이터이다. Streams 이벤트 스트림이란, 관련된 이벤트들을 뜻한다. Topics 이벤트 스트림이 카프카에서는 토픽이란 이름으로 저장된다. 카프카의 세계에서는 토픽이 구체화된 이벤트 스트림을 뜻한다. 토픽은 연관된 이벤트들을 묶어 영속화하는데, 이는 데이터베이스의 테이블이나 파일 시스템의 폴더들에 비유할 수 있다. 토픽은 카프카에서 Producer 와 Consumer 를 분리하는 중요한 컨셉이다. Producer 는 카프카의 토픽에 메시지를 저장 (Pus..

Kafka 설정 - 포인트만

Partion 개수 >= Consumer 인스턴스의 개수 전달 보증 - 요구사항에 따라 적절하게 조절 At Most Once : 재전송 유무 X, 중복 삭제 유무 X At Least Once : 재전송 유무 O, 중복 삭제 유무 X Eactly Once : 재전송 유무 O, 중복 삭제 유무 O Offset Commit : 요구사항에 따라 적절하게 조절 Auto Offset Commit Manual Offset Commit commitSync commitAsync Offset은 Consumer Group 별로 관리된다. 하나의 메시지를 다른 Consumer Group에서 똑같은 값을 Consume 가능, 하지만 같은 Consumer Group 내에서는 오직 한번만 가능 Producer 처리방식 동기 비동기..

Spring Boot를 이용한 Kafka Pub Sub 개발

Kafka Pub Sub 모델 링크드인(Linkedin)은 초창기 Point to Point 구조를 이용해 시스템간 데이터 전송을 사용하다가 증가하는 메시지 전송에 대해 대응을 하지 못했다. Linkedin은 이 문제를 해결하기 위해 메시지 전송을 전용 시스템을 중앙에 두고 운영하는 Hub and Spoke 방식의 메시지 전송 시스템을 구성하였다. 그리고 그들이 만든 이 메시지 전송 시스템이 우리가 아는 Kafka이다. Kafka를 이용한 Hub and Spoke 시스템을 Pub(Publish) Sub(Subscribe) Model이라 지칭하고 이를 그림으로 설명 표현하면 다음과 같다. Producer(Publish) Publish 역할을 하는 서비스는 카프카에게 전송만하게 되고 수신자가 누구인지 알 필..

JVM 옵션을 통한 성능 튜닝 이해

JVM의 옵션 튜닝은 JVM으로 기동 되는 미들웨어나 애플리케이션의 성능에 영향을 끼칠 수밖에 없다. 따라서 JVM 옵션의 튜닝 포인트를 명확히 이해하고 적용하는 것이 애플리케이션이나 미들웨어의 성능을 최적화하는 최선의 방법이다. 이번 포스팅에서는 JVM 옵션 적용을 통한 성능의 튜닝 포인트에 대해 다루워 보려고 한다. 일반적인 성능 튜닝의 정의 성능 튜팅에 앞서 '성능'을 어떤 관점에서 바라볼 것인가에 대한 기준이 필요하다. 일반 적으로 성능은 TPS와 응답 시간으로 구분될 수 있는데 JVM을 튜닝하기 전 TPS에 초점을 둘 것인지 응답 시간에 초점을 둘 것인지 정한 뒤 성능 튜닝에 초점을 맞추는 것이 필요하다. TPS(Transaction Per Seconds) 응답시간(Response Time) 1..

Middleware/Tuning 2021.08.13

Spring Boot에서 Apache Kafka 사용 ... 2/2

이번 포스팅은 이전에 게시했던 "Apache Kafka란" 주제의 게시물에 이은 간단한 샘플을 작성해 보는 내용입니다. 마이크로서비스 아키텍처에서 메시지 전달을 위해 많이 사용하는 Pub/Sub구조의 프로그램을 간단히 설명하는 예제입니다. Pub/Sub 구조는 마이크로서비스 아키텍처를 이용한 응용 프로그램 개발시 비동기 방식의 메시지 전달을 위해 가장 많이 사용되는 방식으로 그 개념을 이해할 필요가 있습니다. Pub/Sub 구조 Kafka, RabbitMQ를 비롯한 Message Broker를 이용해 메시지를 전달하는 방법 중의 하나입니다. 메시지를 생성하는 Publisher와 그 메시지를 전달하는 Message Broker(Queue) 그리고 메시지를 소비하는 Consumer로 구성되어 있습니다. pu..

Spring Boot에서 Apache Kafka 사용 ... 1/2

아파치 카프카(Apache Kafka)는 분산 스트리밍 플랫폼이며 데이터 파이프 라인을 만들 때 주로 사용되는 오픈소스 솔루션입니다. 이러한 카프카는 대용량의 실시간 로그처리에 특화되어 있는 솔루션이며 데이터를 유실 없이 안전하게 전달하는 것이 주목적인 메세지 시스템에서 Fault-Tolerant한 안정적인 아키텍처와 빠른 퍼포먼스로 데이터를 처리하는 용도로 사용되고 있습니다. 최근 MSA에서는 Pub/Sub 구조를 통한 데이터 동기화 솔루션으로 RabbitMQ와 함께 많이 사용되고 있습니다. Apache Kafka의 특징 1. Pub/Sub 모델 : Publishe/Subscriber 모델은 데이터 큐를 중간에 두고 서로 간 독립적으로 데이터를 생산하고 소비하는 모델. 이런 느슨한 결합을 통해 Publ..

윈도우에서 Apache Kafka 개발 환경 만들기

윈도우에서 개발 테스트를 위한 Apache Kafka 개발 환경 구축을 설명합니다. (윈도우 용이지만, Mac 및 Linux 에서도 동일하게 설정 가능합니다.) 이 포스팅은 카프카 버전 2.1.2 버전을 기준으로 만들어 졌습니다. 1. KAFKA 다운로드 및 설치 다음의 웹 사이트에서 카프카 버전 2.1.2를 다운 받도록 합니다. https://archive.apache.org/dist/kafka/2.1.1/kafka_2.12-2.1.1.tgz 원하는 위치에 압축을 풀어 놓도록 합니다. 편의상 카프카가 설치된 홈디렉토리는 %KAFKA_HOME%으로 하겠습니다. - 제 경우 c:\kafka_2.12-2.1.1에 압축을 풀어 두었습니다. 2. 환경 설정 zookeeper를 위한 temporary디렉토리를 만..

Java GC 알고리즘 및 주요 옵션

GC(Garbage Collection)와 전제 조건 사용하지 않는 메모리를 자동으로 회수하여 가용한 공간을 만드는 작업 GC 전담 thread가 별도로 존재하여 메모리가 부족하다고 판단되는 시점에 주기적으로 일어남 이러한 GC는 다음의 전제 조건 (weak generational hypothesis)이 있음 대부분의 객체는 금방 접근 불가 상태(unreachable)가 됨 오래된 객체에서 젊은 객체로의 참조는 아주 적게 존재함 GC를 진행하는 주체를 Garbage Collector(가비지 컬렉터)라 하고 가비지 컬렉터는 애플리케이션의 할당된 동적 메모리를 자동으로 관리하는 주체로서 다음의 동작들을 통해 동적 메모리 관리를 자동으로 수행 메모리를 운영체제에 할당하고 반환 요청 시에 메모리를 애플리케이션에..

Middleware/Tuning 2021.07.28

Java Heap 메모리 옵션

JVM의 메모리 영역은 Runtime Data Areas내에 그 기능에 따라 5가지 영역으로 나뉘어 있는데 그 중에서도 new 키워드를 통해 객체를 생성하고 모든 개체와 해당 인스턴스 변수 및 배열이 저장되는 영역을 Heap 영역이라 한다. 또한 이 Heap 영역은 다시 그 기능에 따라 Eden, Servivor0, Servivor1, Old, Permenant 등으로 그 영역이 세분화 되며 이 Heap 영역에서 참조하는 변수나 필드가 존재하지 않으면 GC의 대상이 된다. 이러한 GC는 Minor GC와 Major GC로 나뉜다. Minor GC : New 영역에서 일어나는 GC 최초에 객체가 생성되면 Eden영역에 생성된다. Eden영역에 객체가 가득차게 되면 첫 번째 GC가 일어난다. survivor..

Middleware/Tuning 2021.07.26

미들웨어(Middleware) 란?

미들웨어(Middleware) 란? 미들웨어는 운영 체제와 해당 운영 체제에서 실행되는 응용 프로그램 사이에 존재하는 소프트웨어 기본적으로 숨겨진 변환 계층으로 기능하는 미들웨어는 분산 응용 프로그램의 통신 및 데이터 관리를 가능하게 함 데이터와 데이터베이스사이를 "파이프" 로 연결하기 때문에 배관이라고도 함 미들웨어를 사용해 사용자가 웹 브라우저에서 양식을 제출하거나 웹 서버가 사용자의 프로필을 기반으로 동적 웹 페이지를 반환하도록 요청할 수도 있음 통신 방식에 의한 미들웨어 분류 사용하는 통신 방식에 의해 미들웨어를 분류한다면 다음과 같이 분류 할 수 있음 RPC (Remote Process Call) 별도의 원격 제어를 위한 코딩 없이 원격지에 있는 함수나 프로시저를 실행 할 수 있게 하는 프로세스..

Middleware 2021.07.21
반응형