SIU
article thumbnail

행사 설명

Kakao Tech Meet은 카카오의 공개 기술 세미나로, 최신 기술 트렌드와 경험 및 노하우를 자주, 지속적으로 공유하며 개발자와 함께 성장을 도모하고 긴밀한 네트워크를 형성하는 노력을 하고 있습니다.

세 번째 Kakao Tech Meet에서는 신뢰성 있는 카프카 애플리케이션 만들기, 변화무쌍한 트래픽에 대처하기, 다양한 어뷰징에 대응하는 CAPTCHA 기술 등의 주제가 선정되었습니다.

 

참가자는 카카오톡으로 입장 QR 코드를 받게 됩니다. 

 

 

https://tech.kakao.com/2023/09/21/techmeet-review/

 

제3회 Kakao Tech Meet 후기 - 불확정성에서 감동까지

안녕하세요, 카카오테크밋을 함께 만들어가고 있는 쑤(a.k.a. 슈크림)입니다. 세 번째 카카오테크밋 행사도 돌아보며, 참가자 여러분의 응원을 먹고사는 담당자의 단상을 공유하고자 합니다.3회

tech.kakao.com

 

 

카카오 아지트 내부를 구경하다가 길을 잃어버린 나..

좋은 기회를 얻어, Kakao Tech Meet에 참여를 하게 되었습니다. 판교에 면접을 보러 갈 때 카카오 아지트를 지나가는데, 카카오는 어떤 개발 환경을 가지고 있을까 늘 궁금했습니다. 특히, 이번 Kakao Tech Meet에서 '폭증하는 카카오톡 트래픽에 대처하는 방법'이라는 주제가 흥미로웠습니다. 저녁에 진행되는 행사임에도 불구하고, 많은 개발자분들이 참여하셨습니다. 3가지 주제 중 '폭증하는 카카오톡 트래픽에 대처하는 방법'에 대해 정리했습니다.

 



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

 

https://tech.kakao.com/2023/09/22/techmeet-traffic/

 

폭증하는 카카오톡 트래픽에 대처하는 방법 / 제3회 Kakao Tech Meet

9월 14일에 진행한 제3회 Kakao Tech Meet의 발표 영상과 발표자 이야기를 공유합니다.https://youtu.be/U905BeDQ_BA#서버, #대용량트래픽, #카카오톡 발표자 Tomo.213(신성열님) 인터뷰 이번 발표를 통해 어떤 이

tech.kakao.com


대한민국의 전 국민에게 사랑받고 있는 카카오톡이 폭증하는 트래픽을 어떻게 처리하고 있는지에 대해 소개합니다. 특히, 카카오톡은 새해가 될 때(24:00시)나 월드컵 같은 이벤트가 있을 때 카카오톡의 트래픽도 폭증하는 현상이 나타난다고 합니다. 카카오톡을 운영하시면서 트래픽 장애를 마주치고 어떻게 원활하게 처리할지 궁금했습니다. 큰 장애를 마주칠 때마다, 해당 시스템을 구축하고 있었습니다.

 

카카오 미트 영상 참조

평상시 낮에는 최고 트래픽은 초당 62만 건, 메시지 건은 최대 초당 4만 5천 건이라고 합니다. 평상시는 이 정도 트랙픽은 정상적으로 처리가 가능하지만, 신년에 새해 인사, 지진 같은 자연재해, 월드컵 국가대표 경기 같은 국가적 이벤트 등에서 폭증하는 트래픽을 대비하여 구축한 시스템을 소개해주셨습니다.

 

 


2016년 경주 지진으로 '자동 대응 시스템 구축'

카카오는 사용자의 편의성을 증대하기 위해 백그라운드 로그인을 합니다. 2016년 경주에 5.1 지진이 발생했을 때, 백그라운드 로그인으로 인해 장애가 발생했습니다. 재난 안내 문자를 전 국민에게 발송되는데, 안내문자를 받은 모바일이 깨어나면서, 카카오톡 클라이언트가 백그라운드 로그인을 시도합니다. 백그라운드 로그인을 시도하면서 TCP 연결 시도를 하는데, 재난 문자를 받은 전 국민이 백그라운드 로그인을 시도하게 되어 장애가 발생했습니다. 모든 스레드가 로그인 처리에 사용하면서, 이미 카카오톡에 연결된 사용자들이 메신저 기능이 실패되었습니다.

 

카카오는 해당 트래픽 폭증을 자동으로 인지하고 대응하는 시스템을 구축하게 되었습니다. 신년과 월드컵 같은 이벤트는 예측가능하기 때문에 트래픽 자동화 조치가 가능했습니다. 지진 같은 불예측한 이벤트도 트래픽 폭증 대응이 가능해졌습니다. 어떻게 폭증한 트래픽을 자동으로 인지할 수 있을까? 카카오 개발자들은 고민했고 '활성화된 스레드 비율'에 따라 부하레벨로 구분했습니다. 카카오 클라이언트가 요청을 보내게 되면 활성화된 스레드 비율이 자연스레 높아집니다. 평상시에는 활성화된 트래픽이 6.25% 정도 됩니다. 자연재해가 발생할 때(부하레벨 1~2), 백그라운드 로그인 요청은 당장 필요 없기 때문에 차단을 시킵니다. 또한, 갑자기 급증할 때는 재시도를 아예 안 하거나(0) 백그라운드 로그인 요청의 타임아웃 시간을 줄여 백그라운드 로그인에 점유하는 스레드가 없도록 조정합니다. 그 결과, 중요한 메시지 전송 기능을 신속하게 처리할 수 있는 스레드 여유분이 생깁니다.

 

 

이렇게 자동 대응 시스템을 구축하고 2017년에 비슷하게 포항 지진이 발생했습니다. 경주 지진과 다르게, 트래픽이 늘어나도 불필요한 백그라운드 로그인을 차단하고 메시지 전송 기능이 원활하게 작동했다고 합니다.

 

 

 

2020년 신녀 장애로 '교통 관리 시스템 구축'

2020년 신년 때 자정이 되는 순간, 장애가 발생했습니다. 클라이언트 요청에 타임아웃이 발생하게 되고 타임아웃이 발생한 클라이언트는 자동으로 연결을 끊습니다. 신년 때는 카카오톡이 깨어나있는 상태라 백그라운드 로그인 문제가 아니었습니다. 50% 타임아웃이 끊긴 사용자가 다시 로그인을 시도하면서, 다시 트래픽이 폭증합니다. 그래서 앞에 적은, 자동 대응 시스템만으로는 해결이 안 된다고 파악했습니다. 

 

초록색 그래프가 로그인 지표 ( 평소에도 로그인 요청이 가장 많음)

로그인이라는 요청이 무겁고 처리하는데 시간이 많이 걸립니다. 쓰레드를 요청별로 MAX을 할당하고 로그인이 모든 스레드를 점유하지 않게 요청별로 전용 도로(스레드 수)를 할당합니다. 이것이 '교통 관리 시스템'입니다. 각각의 요청에 할당된 스레드가 임계점에 도달하게 된다면, 오버플로우가 발생해 실패가 됩니다. 

 

 

 

2020년 카타르 월드컵에서 교통관리 시스템 활약


 2020년 카타르 월드컵에서, 가나 전 때 조규성 선수가 동점골을 넣었을 때 가장 트래픽이 높았다고 합니다. 그래프의 peek가 조규성 선수가 동점골을 넣었을 때입니다. 이때, 메시지 전송이 초당 42만 7천 건의 엄청난 지표였다고 합니다. 2018년 독일 월드컵 때 손흥민 선수가 골을 넣었을 때는 교통 관리 시스템이 구축 전이라, 활성화된 스레드 수가 69.9k가 됩니다. 하짐나 교통 관리 시스템 구축 후, 요청별 스레드 MAX 개수가 제한되고 2022년 월드컵 때는 활성화된 스레드 수가 32.9K가 됩니다. 또한, 에러(타임아웃)에도 큰 변화가 있습니다.

 

장애 없는 카카오톡을 만들기 위해서 끊임없이 노력하고 계셨습니다.

 

 

마치며

휴식 시간에 준비된 쿠키를 먹거나 Q&A 질문을 메시지로 남길 수 있었습니다. 사진은 강연 중간에 휴식 시간이라 자리가 비어 보이지만, 강연장이 꽉 찰 정도로, 많은 개발자 분들이 오셨습니다.  

이어서, 발표에서 못다 한 이야기를 이끌어내고 참여자들과 소통할 수 있도록 패널토의를 진행합니다. 협업에서 유사한 경험에 대한 질문이 가장 많았고 질문을 최대한 고려해서 발표자님이 대부분 대답해 주셨습니다. 에러가 발생했을 때 어떻게 접근하고 기술로 적용할지 자세한 설명을 해주셔서 유익했습니다. 개발자 커뮤니티의 일원으로 기술을 투명하게 오픈하여 그 안에서 서로 시너지를 내며 함께 성장하고자 하는 카카오 기술의 문화와 태도를 엿볼 수 있었습니다. 행사를 이끌어주신 많은 스피커, 스태프 분들과 관계사 모든 분들께 감사의 인사를 드리며, 다음에 기회가 된다면 Kakao Tech  Meet에 또 참석하고 싶습니다!

profile

SIU

@웹 개발자 SIU

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!