-
데보션 카프카 사용자 밋업 후기log 2023. 11. 30. 18:32
첫번째 세션 발표자분께서는 코로나로 인해서 불참하시게 되어서 세션이 취소가 되었다. sk에서 데보션을 런칭하게 되면서 활발한 사용자 유도를 하기위한 독려 행사도 겸하기도 하는 듯 많은 경품행사와 프로모션이 진행되었다. 나는 그 많은 기회를 다 비켜가면서 당당히 하나도 상품을 받지 못했다.(...)
내가 애용해서 읽고있는 카프카책의 저자이신 고승범님께서 그곳에 계실줄 알았으면 책을 가지고 가서 사인을 받을 걸 그랬다. 내심 아쉬웠던 부분.
세션은 전반적으로 무난했으나 첫번째 세션이 취소되어서 조금 아쉬움 마지막 세션을 제외하면 카프카에 중점적으로 하는 세션이라기보다는 카프카가 곁들어진 느낌.
두번째 세션같은 경우는 인증/인가에 대한 개념을 익히기에는 좋았으나 카프카에 실 적용하기에는 규모에 따라서 오히려 허들이 될수도 있겠다는 생각이 듬, 다양하고 큰 조직에서는 필수적으로 적용해야하겠지만 우리처럼 내부적으로 사용하거나 부분적으로 사용하는 조직에서는 오버스펙이라는 생각이 들음.
다음에 또 진행하게 된다면 참여할 용의가 있음
1000만 회원, MAU 500만을 위한 빅데이터 아키텍처
무신사 데이터 아키텍처
- 거래액과 회원수가 늘면서 데이터 아키텍처 변화의 필요성을 느낌
- 문제가 바로 해결 불가능한 문제는 구조 개선을 통해 문제 해결(그 과정에서 아키텍처 의사결정 기록을 남김)
- 긴 기간의 데이터를 운영 DB에 바로 접속해서 조회→거래액 증가에 따라 점점 느려짐
- 이를 DB의 데이터를 파일 기반으로 저장하여 분산 처리 할 수 있는 환경을 구축
- S3와 EMR을 사용해서
- near-realtime 추천
- 개발할 수 있는 시간이 없어서 SASS 서비스를 통해서 API GW + Kinesis를 통해 실시간 데이터를 수집
- API GW + Kinesis가 사용량 늘어남에 따라 비용 급증 오토 스케일이 동작하지만 타임아웃 다수 발생
- API를 직접 개발하고 Kinesis를 MSK로 대체로 개선
물리적 데이터 아키텍처 & 논리적 아키텍처
- 데이터브릭스를 사용해서 델타레이크와 유니티 카탈로그로 데이터 관리(사내 직원 수 증가에 따른 관리 용의성)
- 데이터 플랫폼을 잘만들면 데이터를 더 잘 활용할 수 있다 그러기 위해서 데이터의 구조를 잘 만들어 두는 것이 중요하다
- 데이터 거버넌스를 통해 논리적 데이터 아키텍처를 구축
- 오브젝트+액티비티들을 정형화해서 저장→메트릭(액티비티로 부터)와 디멘전으로 나눔
더 많은 동료가 데이터에 접근하게 하기
- 팀 빌딩을 위해 기존 스칼라 스파크 코드를 pySpark로 변경
- PySpark Wrapping으로 json을 통해 ETL하도록
- convention을 정해서 airflow task id로 어떤 코드인지 유추가 가능하도록 함
- SQL, Python Notebook, BI 환경 제공
- 표준 가이드와 카탈로그 만들어놓음
Q&A
- 데이터 브릭스를 사용하면서 권한 관리가 편함, 오픈소스 기반이어서 문제해결하기도 편함
- 환경적인 이유때문에 GCP의 빅쿼리가 아니라 spark를 활용. 다양한 테이블을 조인하고 페더레이트하는 기능이 마음에 들었음
- 해쉬된 아이디로 실명 데이터 처리
- 데이터 카탈로그와 거버넌스를 유니티 카탈로그로 처리
- 파이어베이스 gtm으로 액티비 데이터 수집
카프카 클러스터 인증/인가의 중요성
인증 인가의 중요성
- Producer
- 특정 토픽/파티션에 추가할 메시지를 생성하여 브로커로 전송
- 관련 없는 토픽에 포맷이 다른 메세지를 추가하면?
- Consumer
- 특정 토픽/파티션의 메시지를 읽어 감
- 다른 컨슈머 그룹에 참여하여 메시지를 가져가면?
- CLI 도구
- 누구나 다운로드 받아서 사용 가능
- 토픽/클러스터/클라이언트 설정 조회/변경
- 토픽 생성/변경/조회/삭제
- 컨슈머 그룹 오프셋 조회/변경
- 인증/인가 구성이 없으면 누구든 모든 기능을 사용할 수 있음
- 컨슈머/프로듀서가 사용하고 있는 토픽을 삭제하면?
- 휴먼 에러를 방지하기 위해서 인증 인가가 필요함
클라이언트 인증 프로토콜
- 인증 없음
- PLAINTEXT
- 클라이언트(프로듀서, 컨슈머, 어드민 클라이언트) ↔ 브로커간 평문 통신
- SSL
- 클라이언트 ↔브로커간 암호화 통신
- PLAINTEXT
- 인증 사용
- SASL_PLAINTEXT
- SASL 인증 프로토콜 평문 통신
- SASL_SSL
- SASL 인증 프로토콜 암호화 통신
- SASL_PLAINTEXT
- SASL(Simple Authentication and Security Layer)
- 인증 메커니즘을 협상하고, 인증 모듈에 인증 과정을 위임하는 프로토콜
인증 구성 : out of the box
- SCRAM 인증 메커니즘
- 챌린지 값들을 가지고 값을 만들어서 서로 비교
- 네트워크 상에서 유저네임과 패스워드를 주고받지 않음
- 주키퍼에 계정 정보 보관→kraft모드에서는 카프카 스토리지에 저장→계정 추가 및 수정 삭제 용의
- 보안성이 확보 되어 있으며 카프카와 가장 잘 통합되어 있음
- CLI 도구 및 API 제공
- OAUTHBEARER 인증 메커니즘
- KIP-768을 통해 kafka 3.1.0에서 릴리즈
- clientcredentials만 지원하는 것이 단점
- 브로커 구동시 OIDC서버에서 JWKS 키셋을 가져옴
- 로그인시 토큰 제출하고 키셋에서 받은 키와 대조해서 OIDC서버에서 발급한 토큰인지 확인 validation 통과되면 접근 권한 부여
- SSL/TLS or mTLS
- Secure Socket Layer
- 네트워크를 통한 모든 송수신 데이터를 암호화
- 인증과는 별도로 분리된 레이저
- 카프카 브로커용 인증서 필요
- 제로카피 기능을 못써서 좀 느려질 수 있음
- 암복호화로 인한 CPU 부하 증가
- SASL과 결합하여
- 여러 인증 메커니즘과 결합하여 사용가능
- SASL_SSL/(GSSAPI,PLIN,…)
- mutual TLS
- 양방향 TLS 인증
- 클라이언트용 인증서 필요
- 클라이언트 인증서를 서버에서 확인
- kafka SASL/OAUTHBEARER 인증 구성 메뉴얼 공개
- Secure Socket Layer
인가 구성
- ACL
- Delegation Token(위임토큰)
- 인증 방법중에 하나
'log' 카테고리의 다른 글
늦은 두번째 트리노 밋업 참여 후기 (0) 2023.12.04 제3회 Kakao Tech Meet 늦은 후기 (0) 2023.12.01 Confluent Kafka x Google Cloud Tech Day 정리 (0) 2023.11.29 3회 수군수군 데이터엔지니어 밋업 후기 (0) 2023.11.25 2회 수군수군 데이터 엔지니어 모임 후기 (0) 2023.05.30