전체 글
-
03. 토픽(Topic)과 파티션(Partition)BackEnd/Kafka 2021. 11. 2. 04:31
1. 적정 파티션 개수 토픽의 파티션 개수는 카프카의 성능과 관련이 있습니다. 그렇기 때문에 토픽을 운영함에 있어 적절한 파티션 개수를 설정하고 운영하는 것이 중요합니다. 토픽 생성 시 파티션 개수 고려사항으로 데이터 처리량, 메시지 키 사용 여부 및 브로커, 컨슈머 영향도가 있습니다. 1) 데이터 처리량 데이터 처리 속도를 올리는 방법은 컨슈머의 처리량을 늘리는 것(서버의 사양을 올리는 스케일 업 또는 GC 튜닝 등)과 컨슈머를 추가해서 병렬처리량을 늘리는 것입니다. 파티션 개수는 프로듀서가 보내는 데이터양과 컨슈머의 데이터 처리량을 계산해서 정하면 됩니다. 프로듀서 전송 데이터량 < 컨슈머 데이터 처리량 X 파티션 개수 파티션 개수만큼 컨슈머 스레드를 운영한다면 해당 토픽의 병렬처리를 극대화할 수 있..
-
02. 카프카 아키텍처(Kafka Architecture)BackEnd/Kafka 2021. 10. 30. 18:00
주키퍼(Zookeeper) 주키퍼는 카프카의 메타데이터를 관리하는 데 사용됩니다. 카프카 브로커에 대한 정보를 확인할 수 있습니다(어떤 보안 규칙으로 통신하는지, jmx port 상태 정보, host 정보 등). 또한 컨트롤러 역할을 하는 브로커 및 저장된 토픽들을 확인할 수 있습니다. 주키퍼 쉘 명령어를 통해 사용할 수 있는 내부 명령어들에 대한 설명은 주키퍼 공식 문서 홈페이지에서 확인할 수 있습니다. 브로커(Broker) 카프카 브로커는 카프카 서버라고도 하며 카프카 클라이언트와 데이터를 주고받기 위해 사용하는 주체이자, 데이터를 분산 저장하여 장애가 발생하더라도 안전하게 사용할 수 있도록 도와주는 애플리케이션입니다. 하나의 서버에는 한 개의 카프카 브로커 프로세스가 실행됩니다. 데이터를 안전하게 ..
-
01. 카프카(Kafka)BackEnd/Kafka 2021. 10. 30. 17:00
들어가기 전 용어를 간략히 정의하면, 데이터 파이프라인이란 데이터를 추출(extracting)하고 변경(transforming), 적재(loading)하는 과정을 묶은 것입니다. 클러스터란 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합이며 카프카의 브로커란 카프카의 서버입니다. 데이터를 생성하고 적재하기 위해서는 데이터를 생성하는 소스 애플리케이션과 데이터가 최종 적재되는 타깃 애플리케이션을 연결해야 합니다. end to end 연결 방식의 아키텍처는 데이터를 전송하는 라인이 기하급수적으로 복잡해지며 확장이 어렵습니다. 또한 1:1 매칭의 데이터 파이프라인은 커플링으로 인해 한쪽의 이슈가 다른 쪽 애플리케이션에 영향을 미칩니다. 이를 해결하기 위해 링크드인 데이터팀에서 만든 것..
-
04. logstash 구성BackEnd/Logstash 2021. 10. 29. 11:55
Logstash를 구성하려면 사용하려는 플러그인과 각 플러그인의 설정을 지정하는 config 파일(logstash.conf)을 만듭니다. 구성에서 이벤트 필드를 참조하고 조건을 사용하여 특정 기준을 충족할 때 이벤트를 처리할 수 있습니다. 1. 구성 파일의 구조 (Structure of a config file) 각 섹션에는 하나 이상의 플러그인에 대한 구성 옵션이 포함되어 있습니다. 플러그인 구성은 플러그인 이름과 해당 플러그인에 대한 설정 블록으로 구성됩니다. 여러 필터를 지정하면 구성 파일에 나타나는 순서대로 적용됩니다. 아래 예는 두 개의 kafka 입력을 구성합니다. # This is a comment. You should use comments to describe # parts of your..
-
03. logstash 설정BackEnd/Logstash 2021. 10. 28. 23:24
1. Logstash 디렉토리 레이아웃 Type Description Default LocationSetting home Logstash 설치의 홈 디렉토리 /usr/share/logstash bin Logstash 시작과 플러그인 설치를 포함한 Binary scripts /usr/share/logstash/bin settings 구성 파일들 logstash.yml, jvm.options, 및 startup.options 등 /etc/logstash path.settings conf Logstash 파이프라인 구성 파일 /etc/logstash/conf.d/*.conf See /etc/logstash/pipelines.yml logs 로그 파일 /var/log/logstash path.logs plugi..
-
02. logstash 작동 방식BackEnd/Logstash 2021. 10. 28. 22:38
Logstash 이벤트 처리 파이프라인에는 입력 → 필터 → 출력의 세 단계가 있습니다. 입력은 이벤트를 생성하고, 필터는 이벤트를 수정하고, 출력은 이벤트를 다른 곳으로 보냅니다. 입력 및 출력은 별도의 필터를 사용하지 않고도 파이프라인에 들어오거나 나갈 때 데이터를 인코딩하거나 디코딩할 수 있는 코덱을 지원합니다. Inputs 입력을 사용하여 Logstash로 데이터를 가져옵니다. file, syslog, redis, beats, kafka 등 자세한 내용은 입력 플러그인을 참조하십시오. Filters 필터는 Logstash 파이프라인의 중간 처리 장치입니다. 필터를 조건과 결합하여 이벤트가 특정 기준을 충족하는 경우 이벤트에 대한 작업을 수행할 수 있습니다. 몇 가지 유용한 필터는 다음과 같습니다...
-
01. logstashBackEnd/Logstash 2021. 10. 27. 22:05
Logstash는 실시간 파이프라이닝 기능을 갖춘 오픈 소스 데이터 수집 엔진입니다. Logstash는 서로 다른 소스의 데이터를 동적으로 통합하고 선택한 대상으로 데이터를 정규화할 수 있습니다. 다양한 고급 다운스트림 분석 및 시각화 사용 사례를 위해 모든 데이터를 정리하고 민주화합니다. 다양한 입력, 필터 및 출력 플러그인으로 모든 유형의 이벤트를 강화하고 변환할 수 있으며 많은 기본 코덱이 수집 프로세스를 더욱 단순화합니다. Logstash는 더 많은 양과 다양한 데이터를 활용하여 통찰력을 가속화합니다. Logstash 특징 Elasticsearch와 Kibana 시너지로 수평적으로 확장 가능한 데이터 처리 파이프라인(ELK Stack) 다양한 입력, 필터 및 출력을 혼합, 일치 및 조직화한 플러그..
-
04. 사용자 정의 리포지토리BackEnd/Spring Data JPA 2021. 10. 26. 19:30
Spring Data JPA Repository는 인터페이스만 정의하고 구현체는 스프링이 자동 생성합니다. 사용자 정의 Repository 구현 클래스 명명 규칙은 사용자 정의 인터페이스명 + "Impl" 이며, Spring Data JPA가 인식해서 Spring Bean으로 등록합니다. Impl 대신 다른 이름으로 변경 방법 // XML 설정 // JavaConfig 설정 @EnableJpaRepositories(basePackages = "study.datajpa.repository", repositoryImplementationPostfix = "Impl") 인터페이스의 메서드 직접 구현 방식 JPA 직접 사용(EntityManager) Spring JDBC Template MyBatis Datab..