일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 플러터앱개발
- ReactNative
- BottomTabBarNavigator
- 선언형프로그래밍
- 플러터앱개발공부
- 정보보호
- 플러터
- RectQuery
- Object~
- 알고리즘
- 하단탭바알림
- 화면이동
- react
- date-fns
- Flutter공부
- BottomTabNavigation
- tabBarBadge
- OpenWeatherApi
- 플러터공부
- 웹해킹
- 딥러닝
- 데이터베이스의기본
- 앱개발
- 명령형프로그래밍
- 날짜포맷팅
- 면접을위한CS전공지식노트
- Navigation
- Flutter
- 모두의딥러닝
- 앱개발공부
- Today
- Total
기록하기
Apache Kafka 가 뭐야? 본문
안녕하세요 오늘은 조금 새로운 주제를 가지고 왔습니다. 회사에서 인턴으로 생활하면서 백엔드에 접하게 되었고 카프카라는 플랫폼에 접하게 되어 한번 기록을 해보려고 합니다. 우선 카프카의 개념부터 알아보도록 하죠.
Apache Kafka란?
실시간으로 기록 스트림을 게시, 구독, 저장 그리고 처리할 수 있는 분산형 데이터 스트리밍 플랫폼입니다. 데이터 스트림을 여러 곳에서 처리하고 여러 사용자에게 그 데이터들을 전달하도록 설계 되어 있습니다. 데이터를 생성하는 애플리케이션과 데이터를 소비하는 애플리케이션의 중간에서 중재자 역할을 하고 데이터를 처리하고 전송 제어하고 관리하는 역할을 합니다.
Kafka의 구성
프로듀서 (Producer)
메세지를 생성해서 카프카 클러스터에 메세지를 전송하는 역할을 가지고 있는 애플리케이션입니다.
토픽 (Topic)
메세지를 묶는 단위입니다. 예시로 들자면 데이터베이스의 테이블, 파일시스템의 폴더라고 생각할 수 있습니다.
파티션 (Partition)
토픽 안에는 여러 개의 파티션이 존재하는데 데이터를 분산 처리하는 가장 작은 단위입니다. 이것도 예시를 들자면 도로의 1차선 2차선이라고 생각하면 쉽게 이해할 수 있을 것 같습니다.
오프셋 (Offset)
파티션 내에서 고유한 레코드의 위치입니다.
컨슈머 (Consumer)
컨슈머는 간단하게 설명하면 메세지를 받아오는 애플리케이션입니다. 하지만 컨슈머는 다른 것들보다 중요하기 때문에 조금 더 깊게 설명하겠습니다.
컨슈머는 각자의 오프셋을 가지게 됩니다. 그래서 마지막으로 소비된 메세지의 오프셋을 기억함으로써 파티션의 마지막 위치에서 다시 시작할 수 있습니다. 그리고 컨슈머들은 하나의 컨슈머 그룹으로 묶여 있는데 하나의 그룹 안에 속해 있는 컨슈머들은 자신의 오프셋을 공유 합니다. 각각의 파티션의 오프셋을 공유함으로써 컨슈머 그룹 안의 컨슈머들은 자신의 오프셋을 가지지 못하고 공동의 오프셋을 가집니다.
Kafka의 장점, 효과
1. 순서 보장
카프카는 순서가 보장 됩니다. 이벤트처리 순서가 보장 되면서 엔티티간 유효성 검사나 동시 수정 같은 복잡성이 제거 됩니다. 카프카가 순차적으로 디스크에 저장 되기 때문에 서버에 장애가 나더라도 실제로 데이터 유실에는 걱정이 없습니다.
2. 높은 효율성
프로듀서와 컨슈머가 데이터를 주고 받을 때 대용량의 데이터를 주고 받을 수 있습니다. 그래서 컨슈머의 개수를 늘리며 병렬 처리까지 가능해지면서 효율성이 매우 높아집니다.
3. 매우 빠른 응답 속도
카프카는 여러개의 파티션을 서버에 분산시켜 데이터를 처리하기 때문에 응답하는 속도가 굉장히 빠릅니다.
Kafka 사용하는 회사
트위터, 무신사, 카카오톡, 라인, 넷플릭스
등 여러 회사에서 카프카를 사용하고 있다고 합니다. 주된 이유로는 실시간 데이터 처리 때문에 사용하고 있다고 하는데 트위터에서는 실시간 트렌드 라는 기능이 가장 유용하게 사용되기도 하고 실시간으로 여러 데이터를 처리해야하기 때문에 카프카를 사용하여 효율적으로 실행하는 것 같습니다. 그래서 데이터 처리량에 대한 한계를 느끼게 된다면 카프카를 사용하는게 어떨까 싶습니다.
'기타' 카테고리의 다른 글
[React] 비밀번호 재설정 페이지(debounce 사용하기) (0) | 2023.11.20 |
---|---|
[React] 비밀번호 재설정 페이지 (5) | 2023.11.20 |
React Query와 SWR에 대하여 알아보자! (0) | 2023.09.23 |
[CesiumJS] CesiumJS에 대하여 알아보자 (0) | 2023.09.21 |
다이나믹 프로그래밍, 최단 경로, 그래프 알고리즘 개념 정리 (0) | 2023.09.13 |