카카오에서 주최한 개발자 컨퍼런스 1일차 내용을 생각과 함께 정리해보려고 한다.
(직접 들은 세미나만)
1. 카카오에서 컨테이너를 사용하는 방법
|
|
카카오의 많은 서비스가 컨테이너 플랫폼을 사용하고 있다는 것을 알았다. 컨테이너를 접목해서 많이 사용한다는 얘기를 들었지만 메인 서비스(특히, 카카오톡)들이 컨테이너를 바탕으로 운영되고 있다는 것을 나름 새로운 사실이었다.
물론 컨테이너 플랫폼이라고 해봤자 메인 컨테이너 플랫폼이 된 k8s 이지만, 그 안의 내용은 새로웠다.
k8s는 만능이 절대 아니다. 적당히 설치하고 운영해서는 안쓴 것만 못하다는 것이다. (k8s 운영 조직이 없다면 더더욱)
그림에서 볼 수 있지만 k8s를 운영하기 위해서는 5가지가 충족되어야만 한다.
1) 네트워크
2) 클라우드
3) 인프라
4) 플랫폼
5) 보안
물론 약간씩 상충되는 부분을 제외하고서도 각자의 부분에서 꾸준히 관리가 필요하다. (k8s만 있으면 다 될 것 같지? 라는 말은 정말 헛소리다.)
|
|
|
|
더군다나 k8s를 그대로 사용하지 않고 운영 서비스로 활용하기 위한 다양한 시스템을 구축했다.
사실 이 모든게 단순히 컨테이너 서비스가 대세니까 갈아탄 느낌보다는 확실히 오랜 시간 동안 시행착오를 겪으면서 쌓은 그들의 모든 역량이 담겨 있지 않을까 생각한다.
그런거 보면 보통 k8s를 사용하기 위해서는 "엔터프라이즈" 급이 되어야한다고 하는데 확실히 "엔터프라이즈" 라는 단어의 느낌이 어떤 것인지 알것 같다.
2. 초당옥수수의 취소를 막아라!: 수만 건의 주문을 1초내에 처리하는 기술
|
|
제목부터 재미있게 지었다. (초당옥수수라길래 초당이 per second로 생각했었다.) 그리고 간간히 나오는 발표자의 리액션이 누가봐도 짜고친다는 느낌이 들었지만...
다른 것보다 과연 수천 만건의 주문을 1초내로 처리 할 수 있을지 궁금했다.
내용을 살펴보면 리팩토링등 3가지가 있긴했지만 그 중 가장 중요한 부분은 비동기 분산 처리였다. (다른 것보다 이 부분에 중점을 둔 것 같다.)
이전에는 배치 프로세싱을 통해 빠르게 처리하려 했지만 결과적으로는 아무리 배치 시간을 짧게 잡는다 해도 주문를 빠르게 처리하지 못한다고 했다. 그래서 여러 과정을 통해 내부적으로 RabbitMQ를 선택했고 그것이 답이었다고 한다.
|
|
RabbitMQ를 이름만 들어본지라 내부 튜닝에 대한 부분을 자세히 이해 할 수는 없었지만 개략적으로 RabbitMQ에서 Consumer에게 데이터를 분산해서 전달 할 수 있는 비동기 워커 구조를 만들어 수 많은 요청에도 빠르게 처리 할 수 있었다고 한다.
|
|
또한 추가로 주문 결과 여부를 다루는 모니터링 시스템까지 개발하여 지속적으로 결과 확인이 가능하게 했다고 한다. (+ 모니터링 시스템을 활용한 실제 사례까지)
모니터링 시스템은 약간 보너스 같은 느낌이 들긴했지만, 다시금 생각해보면 단순 개발에만 머무는 것이 아닌 서비스의 운영에 대한 부분도 많은 생각을 하는 것을 보면 코드만 바라보고 서비스를 조금(?) 등한시한 나 자신을 반성해야겠다.
3. Practical Microservices in gRPC Go feat. GraphQL, Kafka(서포터즈 기사 개발기)
해당 섹션은 카카오에서 서포터즈 기사를 개발하면서 겪은 우여곡절에 대해 소개하는 시간이었다. (개인적으로 day 1에서 가장 재미있는 않았나 싶다.)
특히 Tech Leader가 아키텍처를 설계하기 위해 구성원들의 의견을 수렴하여 공통 언어를 채택하는 부분은 인상 깊었다. (Go..로...)
|
|
이전 섹션에서도 소개가 되었지만 카카오 내부적으로 컨테이너 플랫폼이 존재하기 때문에 MSA를 차용것도 없지 않아 있겠지만 확실히 이런 것을 보면서 카카오는 컨테이너 플랫폼을 유용하게 사용하고 있다는 느낌을 지울 수 없다.
(보통의 스타트업이나 여타 회사에서는 비용 절감 및 유지 보수를 최소화하기 위해 AWS Lambda 같은 서비스를 사용할텐데..)
아무튼, 기능들을 독립적으로 나누고 GraphQL, kafka, Monitoring 등등에 대해 설명하는 부분은 인상적이었다. 각 발표자가 해당 모듈을 개발하면서 경험한 것과 함께 설명하니 좀 더 좋았던 것 같다.
4. 카카오톡 적용 사례를 통해 살펴보는 카카오 클라우드의 Kubernetes as a service
해당 섹션은 처음 들었던 섹션의 Deep Dive 같았다. (이전 섹션이 카카오의 컨테이너 플랫폼에 대해 전체적인 설명이라면 해당 섹션은 컨테이너 플랫폼을 사용하는 여러 서비스 중 하나에 대한 설명이기 때문에)
|
|
|
|
카카오톡이 사용하고 있는 컨테이너 플랫폼을 생각보다 많이 복잡했다. 복잡했다라고 하는게 맞는 것인지는 모르겠지만 적어도 들었을땐, 컨테이너 플랫폼을 적용하기 위해 정말 많은 노력이 필요하다는 것을 다시금 깨닫게 되었다. 생각보다 k8s가 많이 약하기도 했거니와 유지보수가 생각보다 만만치 않아보였다.
또 카카오라는 회사에 가장 메인 서비스인 카카오톡은 역시나 한국에서 많이 사용하고 있는 서비스라는 생각이 들게했다.
발생하는 트래픽도 그렇고 Redis에서 관리하는 키도 어마어마했다. 종종 카카오톡 장애시 대처하는 것도 쉽지 않았겠다라는 생각이 들게했다. (물론 노하우가 충분하겠지만)
5. 광고 데이터 처리 시스템
마지막 섹션으로 사실상 광고 데이터가 무엇인지와 파이프라인 소개 정도가 되는 것 같다.
데이터 부분은 도메인 쪽 지식이 없어서 그냥 그렇구나 하는 부분이었고 파이프라인 소개를 통해 전반적인 ETL에 대한 개념을 잡은것 같다.
|
|
좀더 집중해서 들었으면 좋았겠지만 섹션 마지막까지 오니 집중력이..
아무튼 각 부분에 대해 내부 서비스를 소개하여 요즘 트렌드에 대해 조금은 알지 않았나 싶다.
댓글