Kafka(카프카) Producer(프로듀서)와 Consumer(컨슈머)의 동작 원리와 고가용성
·
유용한 개발지식/Apache Kafka
Kafka(카프카) Producer와 Consumer의 동작 원리와 고가용성을 이해해 보자 📌 서론 Kafka의 핵심은 데이터를 효율적으로 처리하고 전달하는 Producer와 Consumer의 상호 작용에 있다. 이번 포스트에서는 Kafka의 Producer와 Consumer가 어떻게 작동하며, 그들이 어떻게 Kafka 시스템 내에서 서로 상호작용하는지를 알아보자. 특히, 각각의 역할, 데이터 흐름, 그리고 고가용성 및 대규모 데이터 처리에 어떤 방식으로 기여하는지를 중점적으로 다룰것이다. 1. Kafka의 Producer란? Producer 이해하기 Kafka의 Producer는 데이터를 Kafka 클러스터로 전송하는 역할을 하는 클라이언트 애플리케이션이다. 이들은 Kafka 토픽의 특정 파티션으로 메..
Kafka(카프카) 파티션(partition) 쉽게 이해하기
·
유용한 개발지식/Apache Kafka
Kafka(카프카) Partition(파티션)의 개념 및 동작 원리를 알아보자📌 서론 이번 포스트에서는 Kafka의 핵심 구성 요소 중 하나인 '파티션'에 대해 집중적으로 살펴볼 예정이다. 파티션은 Kafka에서 데이터를 효율적으로 처리하는 데 필수적인 역할을 한다. 각각의 파티션은 독립적인 데이터 스트림을 형성하며, 이를 통해 메시지가 병렬로 처리될 수 있다. 이러한 병렬 처리는 Kafka의 성능을 극대화하는 핵심 요인이다. 이번 포스트에서는 파티션의 기본 개념부터 시작하여, 파티션의 복제, 순서 보장과 같은 고급 개념까지 깊이 있게 다룰 예정이다. 로컬 kafka 설정은 다음 포스트를 보고 하면 된다! [kafka] Docker로 카프카 실행하기 (KRaft 모드)Docker를 통해 Kafka를 실..
Kafka(카프카) 클러스터와 브로커의 동작 이해하기
·
유용한 개발지식/Apache Kafka
이번 포스트에서는 Kafka의 클러스터부터 토픽까지의 작동 원리를 알아보자 📌 서론 이번 포스트에서는 Kafka의 주요 구성 요소인 클러스터, 브로커, 토픽, 파티션, 세그먼트에 대해 자세히 살펴보자. 또한 Kafka 클러스터 내에서 브로커가 어떻게 동작하는지, 데이터의 복제 및 분산 처리 방법에 대해서도 알아보자. Kafka를 이해하는 것은 데이터 스트리밍과 실시간 데이터 처리의 세계로 들어가는 첫걸음이다. Kafka의 구조를 확실히 이해하면 더 복잡한 데이터 파이프라인을 구축하고 관리하는 데 도움이 될 것이다. 1. Kafka의 구조 및 컴포넌트 클러스터와 브로커 Kafka 클러스터는 여러 브로커로 구성되어 있다. 각 브로커는 서로 연결되어 있고, 한 브로커가 실패해도 다른 브로커가 그 역할을 대신해..
Kafka(카프카)의 기본 구조 이해하기 (클러스터, 브로커, 토픽, 파티션, 세그먼트)
·
유용한 개발지식/Apache Kafka
이번 포스트는 Kafka의 기본 구조에 대한 내용이다. 📌 서론 지금부터 알아볼 Kafka의 구성 요소는 아래의 그림과 같다. 카프카는 클러스터 -> 브로커 -> 토픽 -> 파티션 -> 세그먼트로 구성되어 있다. 1. 클러스터(Cluster) 클러스터 이해하기 Kafka 클러스터는 여러 대의 서버(브로커)로 구성된 Kafka 시스템이다. 클러스터는 대량의 데이터를 처리하고, 여러 소비자(Consumer)와 생산자(Producer)에게 메시지 서비스를 제공한다. 클러스터는 메시지의 저장, 처리 및 전달을 담당한다. 클러스터는 고가용성과 확장성을 제공하며, 데이터를 여러 브로커에 분산시켜 저장한다. 2. 브로커(Broker) 브로커 이해하기 Kafka 브로커는 Kafka 시스템을 구성하는 개별 서버다. 이 ..
Kafka(카프카)란 무엇인가
·
유용한 개발지식/Apache Kafka
주니어 백엔드 개발자의 Apache Kafka 이해하기 📌 서론: Kafka는 왜 만들어졌을까? LinkedIn은 빠르게 성장하는 플랫폼으로, 수백만 명의 사용자와 수십억 개의 이벤트를 실시간으로 처리해야 했다. 그러나 당시 사용하고 있던 메시징 시스템은 이런 대규모 데이터와 실시간 분석 요구사항을 충족시키지 못했다. 이러한 문제를 해결하기 위해, LinkedIn은 새로운 데이터 스트리밍 플랫폼이 필요했다. 그 결과, 높은 처리량, 낮은 지연 시간, 그리고 높은 가용성을 목표로 Kafka가 개발되었다. Kafka의 도입으로 LinkedIn은 기존에 겪던 데이터 처리와 실시간 분석의 문제를 성공적으로 해결할 수 있었다. 이렇게 Kafka는 LinkedIn의 특정 문제를 해결하기 위해 탄생했고, 그 후로도 ..
주니어 개발자의 API 이해하기
·
유용한 개발지식/WEB, DB, GIT
주니어 개발자의 API 이해하기 📌 서론 개발자끼리의 소통에서는 API라는 단어를 자주 얘기한다. 오늘도 개발을 진행하며 API에 대한 얘기를 했다. 이렇게 자주 사용하는 단어인데 막상 누군가 "그래서 API가 뭔가요?" 라고 나에게 질문한다면 제대로 대답할 수 없을 것 같았다. 그래서 나는 API의 개념을 쉽고 간단히 이해하기 위해 알아봤다. 1. API란 무엇인가? 1-1. API란 무엇인가? API, 즉 Application Programming Interface는 다양한 소프트웨어 컴포넌트들 사이의 연결 고리 역할을 한다. 이는 각각의 프로그램이 서로 상호작용하고 데이터를 주고받을 수 있게 해준다. 간단히 말해, API는 한 프로그램이 다른 프로그램의 기능을 사용할 수 있게 해주는 규칙이나 명령..
[SQL] 쿼리 인젝션이란?
·
유용한 개발지식/WEB, DB, GIT
이번 시간에는 쿼리 인젝션에 대해서 알아보자 웹 어플리케이션의 보안은 개발 과정에서 가장 중요한 고려사항 중 하나다. 특히, 데이터베이스와 상호작용하는 웹 사이트에서는 SQL 인젝션과 같은 공격이 심각한 위협이 될 수 있다. 이번 글에서는 SQL 인젝션의 개념부터 시작하여, 이러한 공격이 어떻게 이루어지는지, 그리고 이를 효과적으로 방지하기 위한 방법들에 대해 알아보도록 하자. 특히, 나는 Spring Boot를 주로 사용하기에 SpringBoot 환경에서 쿼리 인젝션을 방지하기 위한 실질적인 전략도 약간 다뤄보고자 한다. 1. 쿼리 인젝션의 위험성과 중요성 1-1. 쿼리 인젝션 이란? 쿼리 인젝션은 웹 어플리케이션 데이터베이스의 쿼리에 임의의 SQL 코드를 삽입하여 공격자가 데이터베이스를 조작할 수 있..
Jenkins 깃허브 훅 설정 - GitHub hook trigger for GITScm Polling 설정하기
·
유용한 개발지식/WEB, DB, GIT
Jenkins에서 CI/CD를 구축하다 보니 "빌드 유발"에서 GitHub hook trigger for GITScm Polling가 존재했고 이에 이것을 어떻게 설정하는지 설명하고자 한다. 1. Github에서 세팅하기 1-1. Settings 들어가기 Jenkins의 CI/CD에 연결할 repository 상단의 Settings를 클릭해 들어간다. 1-2. Webhooks 들어가기 Settings 좌측의 meun bar에서 Webhooks를 클릭한다. 아래와 같이 페이지가 나올것이다 1-3. Webhooks 설정하기 우측의 "Add webhook" 버튼을 클릭한다. 여기서 Payload URL의 url 수정을 해줘야 한다. 아래와 같은 식으로 적어주자 http://{내 jenkins서버 접속 url}..