ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 제3회 Kakao Tech Meet 늦은 후기
    log 2023. 12. 1. 19:49

    예쁜 사내 카페테리아 인테리어

    판교 카카오 본사에서 카카오 테크밋을 한다고해서 주제도 마침 관심있는 카프카세션도 있고 나머지도 흥미로운 주제들인 것 같아서 참여하기로 했다. 하지만 아뿔사 내가 판교에 간다는것, 그리고 판교에서 주차를 한다는 것은 미처 상상도 하지 못했다. 따로 주차지원이 되는건 2시간까지가 한정이고 그 이후로는 살인적인 요금을 지불해야하므로 급하게 모두의 주차장을 통해서 일일권을 끊어서 사용했다.

    근처 공용주차장을 믿고 무장정 차를 끌고갔는데, 판교의 평일 공용주차장은 이용을 아예 못한다고 보면된다. 그렇다고 대중교통을 이요하자니 조금 애매하고...아마 다음부터 판교에서 이런 밋업을 진행하게된다면 이러한 여건상 앞으로 가기 조금 꺼려질 것 같다.

    그외에 카프카 세션 발표가 내가 자주 블로그와 유튜브, 책을 통해 익히 알고있는 최원영님이었다는 사실과 끝나고나서 개인적으로 몇가지 질문을 주고받았던 것들이 기억에 남는다.

    신뢰성 있는 카프카

    애플리케이션을 만드는 3가지 방법

    • 정확히 한번 (exactly once)를 달성하기 위한 노력

    카프카 소개

    • 스트림처리에 특화
    • 프로듀서 - 브로커 - 컨슈머

    방법1)프로듀서의 메세지 전달 신뢰도

    • 네트워크 장애로 acknowledgement가 전달되지 않아 record가 중복 적재될 가능성이 있음
    • 멱등성 프로듀서를 통해서 해결→ ENABLE_IDEMPOTENCE_CONFIG=ture로 설정
    • 3.0부터는 true가 default값
    • 브로커가 PID와 seq를 가지고 있다가 중복 적재 요청이 오면 적재하지 않음

    방법2)토픽 to 토픽의 메시지 전달

    • 토픽 컨슈머에 장애시 중복이 발생할 가능성이 있음
    • 트랜잭션을 사용해 아토믹한 과정을 묶어줌
    • 트랜잭셕 프로듀서 설정 및 트랜잭션 프로듀서 초기화→전송이 완료된 토픽과 커밋을 묶음
    • 일반적으로 컨슈머에서 커밋하지만 이런 경우 sendOffsetsToTransaction에서 커밋
    • 앤드투앤드까지 레이턴시가 증가할 가능성이 있음

    컨슈머의 중복 적재 방지

    • 유니크 키를 활용한 멱등성 컨슈머
      • 유니크 키를 지원하는 데이터베이스에 적재할때 유용
    • Upsert를 활용한 멱등성 컨슈머
      • 중간 결과값도 저장(upsert 형식으로), 최종 데이터도 저장
      • 몽고디비에서 지원하는 방식
    • Write-ahead log를 활용한 컨슈머
      • WAL파일을 활용해 적재되었는지 다시한번 확인하는 로직
      • 복잡해질 수 있는 단점

    내부 활용 사례

    • 스마트 메시지 서비스
      • 몽고디비에 텀블링 윈도우 단위로 주기마다 모델링 계산을 통해 타겟팅 개발
      • upsert방식을 통해 중복방지

    마무리

    • 가장 중요한 것은 어느 정도 전달 신뢰성을 가질 것인가 정말로 필요한가? 장애로 판단하고 넘어갈 수 있는가를 종합적으로 판단

    폭증하는 카카오톡 트래픽에 대처하는 방법

    카카오톡의 메시지

    전송

    • 최대 44.8k의 메시지 전송 모든 요청을 합치면 62만건
    • 신년이나 월드컵 등의 이벤트 시기에 메시지 트래픽 폭증

    자동 대응 시스템 구축

    • 백그라운드 로그인→사용자가 서버에 접속하지 않는 경우 푸시 전송 푸시를 받으면 tcp연결로 로그인 유지하며 로그인 없이 메시지 확인 가능
    • 2016 경주 지진 발생 지진 여파로 카카오톡 장애 발생→백그라운드 로그인 때문에 발생→지진 안내문자로 백그라운드 로그인 수행→카카오톡 로그인 서버 접속 시도→전국민이 백그라운드 로그인 시도→모든 스레드가 로그인 요청으로 할당으로 메시지 전송 실패
    • 예측할 수 없는 이벤트에 대해서 자동 대응 구축 필요성
    • 활성화된 스레드 비율로 부하 레벨을 할당→부하 레벨에 따라 백그라운드 로그인 차단 비율을 나눠서 처리
    • 이후 포항 지진에서 자동 대응 시스템 테스트 유동적으로 대응해서 메시지를 원활하게 보낼 수 있게 되었음

    교통 관리 시스템 구축

    • 새로 도입한 시스템에서 장애 발생하면서 전체 서버군으로 장애가 퍼짐
    • 백그라운드 로그인이 아니라서 트래픽을 막을 수 없었음
    • 자동 대응 시스템만으로는 해결 불가→요청 별 전용 도로를 만들면 되지 않을까?→모든 스레드가 로그인을 점유하지 않도록 처리
    • 매니저라는 객체가 연결, 메시지 전송, 채팅방 진입 등의 요청을 스레드 할당→각 요청들이 골고루 처리

    월드컵 도중 트래픽 변화

    • 카타르 월드컵에서 조규성이 동점골 넣을때 트래픽이 가장 높았음
    • 교통관리 시스템이 있어서 당시에는 장애발생이 나지 않았음
    • 처리 실패는 올랐지만 전체 시스템 장애로 번지지 않음

    마무리

    • 당장에 필요한 트래픽만 처리하는 것이 중요
    • 자원을 요청별로 배분하여 특정 요청이 점유하지 않게 해야 한다
    • 트래픽 처리를 위해 아직 개선할 여지는 많이 남아있다

    DKAPTCHA - 지도 이미지와 음성을 활용한 어뷰징 방지 전략

    DAPTCHA 개발 배경

    • 봇에 의한 트래픽이 전체 웹사이트에 30프로에 해당
    • 계정 탈취 시도, 판매 및 범죄에 재활용
    • 실시간 모니터링을 통해 사용자 피해 방지 진행중

    DKAPTCHA란?

    • 카카오에서 자체 개발한 켑챠, 봇인지, 사람인지 판단하는 켑챠 기술의 일종으로, 주 용도는 스팸, 보안 위협, 웹 스크래핑, 서비스 악용 방지
    • 기존 켑챠들은 니즈를 충족하지 않음, 기술적 독립성 확보, 기술 내재화
    • 완전한 기술적 제어를 위해 개발
    • 사용자 시인성 저하 최소화, 사용자 친숙성 고려, 카카오 어뷰징 대응 맞춤화한 켑챠
    • 지도 데이터 활용 재생성 소스 음성에 다양한 왜곡을 가해 음성 합성

    매커니즘

    • 지도 이미지에 POI라는 지명데이터를 넣고 봇에 인식을 저해 할 수 있는 하얀 워터마크를 추가→인식 방해 이미지 처리를 통해 최종적인 켑챠 이미지 완성
    • 여러 OCR을 통해 인식율을 확인, 고도화 진행
    • 워터마크는 잘 인식하고 주요 POI는 잘 인식 못하는 방향으로 인식률 검사하고 내부적으로 여부 판단

    사용자 사용성에 대한 고민

    • 켑차를 만났을 때 서비스 이탈율에 영향을 미칠 수 있음
    • 맵 데이터가 익숙한 경험의 연결로 사용자에게 친숙한 경험을 기반으로 한 켑챠 제공
    • 시각 장애인을 위한 켑챠 지원

    향후 발전사항

    • ML을 위한 퀴즈의 고도화
      • 주변 지명과 유사도가 높은 워터마크를 생성
      • 유사도 높은 지명과 워터마크를 배치하고 관련한 문제를 냄으로써 어뷰저 혼동
    • 나중에 히스토리가 쌓였을 때 정상 유저와 어뷰저의 행동 패턴을 분석하고 필터링 진행

    댓글

Copyright 2023. 은유 All rights reserved.