ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • kafkaKRU 2023 2nd meetup 후기
    세미나 밋업 후기 2023. 8. 11. 01:42
    728x90

    회사에서 AWS MSK를 운영하고 관리하는 입장에서, kafkaKRU(카프카 한국 사용자 모임)의 도움이 정말 많이 되었었다.

    카프카에 대한, 실시간 스트리밍의 개념을 아예 모르는 입장에서 당장 봐야 하는 metric, 구조 동작등을 알려주는 좋은 세미나 들이 많았다.

    마침 이번에 밋업을 진행한다하여 참석하였고 너무 좋은 내용들이 많아서 남기고자 한다.

     

    (이하는 작성중인 글입니다.)


    세션1. 무신사 - 1,000만 회원 MAU 500만을 위한 데이터 아키텍쳐

    유환성님의 미션 : 데이터에 많은 사내 인원이 접근할 수 있게 만들기

    kafka의 대한 내용보다는 데이터 팀이 다루는 데이터의 양에 따라, 요구 사항에 따라서 어떻게 의사결정과 무신사의 아키텍쳐가 발전했는지에 대한 세션이였다.
    1. 무신사의 데이터 아키

    문제 발생 → 지금 구조에서 해결이 가능한가? )고민. 문제 해결이 되지 않는다면 구조 변경(반드시 아키텍처 의사결정 기록)

    문제 1. 긴 기간의 데이터 조회

    운영 DB에 바로 접속하여 데이터 조회 → 거래액 증가에 따라 1일 매출 조회가 불가능해짐

    • DB의 데이터를 파일 기반으로 저장하여 분산처리 환경 구축

    문제 2. 사용자의 행동데이터를 기반한 실시간 추천

    시간이 충분하지 않음 → API GW + Kinesis (Managed)로 해결

    문제 2-1. API GW의 사용량의 증가에 따라 비용 급증

    트래픽이 몰릴시 auto Scale 동작하지만 타임아웃 → API 직접 개발, Kinesis를 MSK로 대체

    dbc를 쓴 이유 ? iceberg, 사내 임직원들의 권한 관리를 위해서(unity catalog)

    1. 물리적 & 논리적 아키

    물리적 구조 뿐만 아니라 논리적 구조도 중요하다.

    비즈니스 문제와 기술문제

    • 대부분의 회사가 비즈니스 문제 = 기술 문제
    • 데이터 플랫폼을 만드는 이유? 데이터를 잘 활용하기 위함
      • 데이터의 구조를 잘 만들어 두는 것 또한 중요 ex) 카테고리 별 첫 구매.코호트 : 첫구매를 어떻게 정의하고 저장해놓을 것인가?

    문제 : 왜 같은 기준으로 뽑았는데 데이터의 값이 달라요?

    데이터 거버넌스(논리적 데이터 아키텍쳐)로 어떻게 뽑아도 같은 값이 나오게 만든다.

    (원본 데이터 이미지)

    (지표 이미지)

    metric : activity로 부터 옴

    dimension ..

    카탈로그와 예시 쿼리를 제공하여 어떤 사람이 조회하더라도 동일한 값이 나오도록 만듦

    1. 더 많은 동료가 데이터에 접근하게 하기

    문제 1. 팀빌딩은?

    • spark → pyspark : scala로는 채용이 안돼..
    • convention
      • dag code convention - airflow task id로 어떤 코드인지 유추 가능하게
      • 코드의 영향 범위
      • column name
      • SQL : 다양한 직군의 사람이 같은 데이터를 조회할 수 있게 가능하면 쿼리로 조회하도록 만듦
    • 기술 의사 결정은 모두가 함께

    문제 2. N십명의 동료와 일하기

    • SQL, Notebook, BI 환경
    • workflow
    • 데이터 레이크 제공 : 모든 사람들이 동일한 데이터를 볼 수 있게
    • 표준 가이드 & 카탈로그 : 각 column에 대한 설명을 달아놓음.
    • 사람이 아닌 가이드 + 프로세스로 일하기 : 두 번 이상, 계정 발급등은 자동화로 돌아가게 만든다.

    문제 3. N백명의 동료와 일하기 - 회사 전체를 돕기

    • 데이터 거버넌스 구축 - 접근 권한, 데이터 카탈로그 제공
    • 데이터 활용 수준에 따라 다른 환경 제공하기
      • 대시보드, SQL 순으로 제공
    • 질의 응답이 아닌 가이드를 만들어 제공

    질문

    데이터 브릭스 장점 : 델타레이크 - cdc를 활용하여 db처럼 조회 가능

    • 유니티 카탈로그로 조직별로 workspace를 만들어 권한 부여를 통해서 관리하기 쉬움
    • 오픈소스 기반으로 레퍼런스가 많음

    카카오 ex) 최대한 실명과 관련된 데이터는 제거, id는 hashed 데이터 등으로.

    카프카 vs 키네시스

    • 키네시스는 샤드단위로 데이터를 넣어줘야 하는데, 트래픽이 몰릴때 오토스케일링이 빠르지 않아 문제가 발생
    • 키네시스에 비해 MSK를 사용시 커스텀 할 수 있는 요소가 많음

    구글 스프레드 시트에 카탈로그 작성 → 데이터 브릭스에 테이블을 만들때 스키마로 사용

    • 클라우드 비용 관리는?

    DBU 단위로 어떤 workload가 얼마만큼 비용이 발생했는지 매일 확인, 비용이 많이 사용하는 조직이 있다면 job 효율화 작업을 통해 처리


    세션2. Kafka 인증/인가의 중요성

    Kafka의 인증/인가를 해야 하는 이유와 새롭게 추가된 인증/인가에 대해 설명해주는 세션이였다. 사내에서 Kafka에 접근하는 사람이 두 명 뿐인 우리 회사에서는 아무도 관심을 갖지 않는 주제였는데, 이번 세션을 들어보니 Kafka에 접근하는 사람이 많아 질 수록 꼭 필요로 하는 정책이라는 생각이 들었다.
    • 인증 인가의 중요성
    • 인증 구성 : out of the box(배포할 때부터 내장된)
      • GSSAPI, PLAIN, SCRAM, OAUTHEBEARER
    • 인가 구성
      • ACL

    인증 인가는 왜 중요할까?

    → 실수때문에 잘못된 일이 발생함

    • Producer
      • 인증인가가 없다면 모든 토픽에 접근 가능하여, 잘못된 토픽에 데이터를 넣는 다던지, 이상한 토픽을 만든다던지..
    • Consumer
      • 다른 컨슈머 그룹에 접근해 메시지를 가져간다면?
        • 잘못된 토픽을 가져가게 한다던지
    • CLI 도구
      • 인증/인가 구성이 없다면 누구든 모든 기능을 사용할 수 있음 → 컨슈머/프로듀서가 사용하고 있는 토픽을 삭제한다면?

    클라이언트 (인증) 프로토콜

    • 인증 없음
      • PLAINTEXT
        • 클라이언트(프로듀서, 컨슈머, 어드민 클라이언트) ↔ 브로커간 평문 통신
      • SSL
        • 클라이언트 ↔ 브로커간 암호화 통신
    • 인증 사용
      • SASL_PLAINTEXT
      • SASL_SSL

    SASL(Simple Authentication and Security Layer)

    클라이언트와 서버 간에 인증 메커니즘을 협상하고, 합의된 인증 모듈에 인증 과정을 위임하는 프로토콜

    GSSAPI 인증

    …. 복잡함

    PLAIN 인증 메커니즘

    • SASL / PLAIN
      • username / password로 인증
      • Client 인증 정보를 static file로 보관하여, 동적 관리가 없음

    SCRAM 인증 메커니즘

    • 카프카와 가장 잘 통합되어 있음 : 주키퍼 & 카프카 스토리지에 인증정보를 보관해 동적으로 인증 정보를 관리 할 수 있음
      • 별도의 시스템 없이 계정 추가, 삭제가 용이함
      • CLI, API 제공

    OAUTHBEARER

    • Open Id Connect(OIDC)
      • client만 지원 : user는 지원 안함

    SSL/TLS or mTLS

    Secure Socket Layer(SSL)

    • 네트워크를 통한 모든 송수신 데이터 암호화
    • TCP 아랫단에서 돌아감
    • 암복화로 인한 CPU부하 증가
    • 세션마다 암복호화를 해야 해서, zero copy 불가

    사용량 제어

    • Throttling
      • 특정 클라이언트나 그룹에서 트래픽을 많이 발생시킬 것을 생각하여 쓰로틀링(대역폭 제한 등)을 사전에 걸 수 있음
      • 브로커간 디스크 사용량 균형을 유지하기 위한 파티션 재배치 작업
      • 기타
    • Client Quotas
      • 네트워크 대역폭 할당량 : 바이트 전송율 임계값
      • 요청 속도 할당량 : 네트워크 쓰레드, I/O 쓰레드의 CPU 사용율 임계값
      • (user, client-id), user 혹은 client-id에 할당
        • 전체 클라이언트 그룹에서 할당량 공유

    질문

    인증 인가시 성능은 ? 크게 나빠지지 않음. 인증의 경우 처음 접속시. 인가의 경우 데이터의 접근 시마다

    msk의 경우 ? 설정파일을 수정하거나 대시보드에서 설정 가능, iam client 인증 라이브러리는 aws github에서 제공함

    인증 서버는 내부에 두는것이, 하나라도 장애를 줄일 수 있는 포인트가 됨 - 위임토큰 등 사용

    스키마 레지스트리와 acl를 같이 사용시 ? kafka가 어떤 매커니즘을 쓰던 상관 없음

    댓글

Designed by Tistory.