ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데보션 카프카 사용자 밋업 후기
    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
        • 클라이언트 ↔브로커간 암호화 통신
    • 인증 사용
      • SASL_PLAINTEXT
        • SASL 인증 프로토콜 평문 통신
      • SASL_SSL
        • SASL 인증 프로토콜 암호화 통신
    • 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 인증 구성 메뉴얼 공개

    인가 구성

    • ACL
    • Delegation Token(위임토큰)
      • 인증 방법중에 하나

    댓글

Copyright 2023. 은유 All rights reserved.