작정하고 책 홍보하기: 카프카 데이터 플랫폼의 최강자

오늘은 특별한 책 소개를 하려고 합니다. Popit 서비스를 만들고 운영하면서 처음 서비스 기획 의도 중의 하나를 만족하는 의미 있는 결과물이 나왔습니다. Popit 서비스를 운영하는 여러 이유 중에 가장 중요한 게 생각하는 것이 바로 개발자들의 글쓰기였습니다. 왜 이것이 중요한지는 여러번 걸쳐 강조하였습니다.

Popit에 카프카 관련 글을 연재해주시고 있는 고승범님이 그동안 Popit에 연재된 글을 중심으로 하여 "카프카, 데이터 플랫폼의 최강자" 라는 제목의 책을 출간하였습니다.

apache_kafka_book

이번 글에서는 고승범님이 Popit과 글쓰기 인연을 맺은 사연과, 어떤 과정을 통해 출판까지 하게 되었는지를 공유할까 합니다. 이 글을 통해 아직 글쓰기 용기를 갖지 못한 분들에게 조금이나마 도움이 되었으면 하는 바램입니다.

Popit에서의 첫글과 글 리뷰

책의 저자인 고승범님은 2016년 말에 처음으로 알게 되었습니다. 카카오에 근무하시는 지인의 소개로 직접 만나지는 않고 온라인 상으로만 인사를 나누었습니다. 그리고 바로 Popit에 첫번째 글인 "Kafka 운영자가 말하는 처음 접하는 Kafka" 라는 글을 작성하고 리뷰를 요청하셨습니다. 첫번째 리뷰 요청받은 글은 글의 형식적인 면이나 전개 방법, 문장력 등에서 많은 부분이 허술했습니다. 일반적으로는 메신저나 메일을 이용하여 리뷰 결과를 전달해 드리지만 직접 판교 카카오 휴게실에서 글을 리뷰해드리면서 몇개의 문장은 같이 만들어 보는 Pair Writing 작업을 했습니다. 이런 리뷰 과정을 통해 공개된 글이 지금 Popit에 링크 걸려 있는 글입니다. 이때 제목에 대해서도 일관성 있게 유지하자는 조언을 드리며 "Kafka 운영자가 말하는 ..." 식으로 연재를 진행하기로 하였습니다[1].

첫글을 보고 바로 오프 미팅을 한 이유는 다들 예상하시겠지만 글의 주제나 내용은 좋은 반면 글의 품질이 별로였기 때문이었습니다. 많은 개발 블로그에서 나타나고 있는 그림 또는 코드와 단문 중심의 짧게 끊어 지는 문단으로만 글이 구성되어 독자들이 읽기 불편하고, 전체 글의 맥락을 파악하는데 어려움이 많은 형식의 글이었습니다.

이 글 리뷰 미팅에서 어떤 식으로 글을 전개하는 것이 좋고, 글의 주제도 좋지만 독자가 글의 내용과 교감하게 만드는 더 중요하고, 이를 위해 어떤 장치들이 필요한지 등등에 대해 작성된 초안을 중심으로 하여 개선하였습니다. 개발할 때 사용하는 페어 프로그래밍적인 요소도 어느 정도 가미하여 제가 한 문단을 쓰고, 다음 문단을 고승범님이 쓰게 해보는 방법도 했던 것 같습니다.

이 리뷰 미팅 이후 글을 가다듬고, 주변 몇 분들에게 더 리뷰를 거친 후 첫번째 글이 공개되었습니다.

독자의 반응도 중요

글을 쓰는 사람에게 독자의 반응은 아주 중요합니다. 블로그라는 것이 누구에게 보여주기 위해 쓰는 것이 아니라고 하지만, 일단 외부에 공개한다는 것 자체가 누군가에 보여주겠다는 마음이 깔려 있기 때문입니다. 독자의 반응이 그 다음 글을 쓸수 있는 힘이 됩니다.

카프카라는 솔루션이 많은 서비스에서 사용되기 때문에 주제 자체는 관심을 받기 좋은 주제라서 독자의 피드백은 좋았습니다. 독자의 피드백은 주로 페이스북의 "좋아요", "공유" 또는 "댓글" 형태로 나나타는데 카프카 관련 글들은 대부분 페이스북 좋아요가 100회 이상이 되고, 기술적인 질문 등도 다른 글에 비해 많이 달리고 있습니다.

지속적인 글쓰기

첫번째 글을 공개하고 난 이후에 조금 탄력을 받으셨는지 지속적으로 글을 올려 주셨습니다. 물론 카프카 관련 한글로 된 자료가 부족하고 실제 운영하시는 분의 경험이 있는 글이 많이 없다 보니, 올리신 글 대부분이 인기있는 글이 되었습니다.  글의 "좋아요" 횟수나 독자들의 피드백이 글쓰는 분들에게는 지속적인 글을 쓰는데 많은 힘이 됩니다.

제가 가끔 블로그 글 쓰시는 분들에게

동일한 주제로 블로그글 10개 정도만 쓰면 책 한권 분량은 나온다.

이렇게 말씀드리고 있습니다. 블로그 글은 아주 자세하게 기술할 필요도 없고, 덜 친절해도 되지만 책을 위한 원고는 아주 자세하게 내용이 나와야 하기 때문에 블로그 글에 살을 붙이면 10 페이지 이상이 나오기 때문입니다. 따라서 책을 쓰는 것을 염두하고 있다면 같은 주제로 글을 쓰는 것을 권장합니다.

출판에 대한 문의

카프카 관련 주제로 글을 6 ~ 7개 작성했을 때 2017년 8월 경에 중국에 있는 저에게 조심스럽게 책 출판에 대해 문의를 하셨습니다.

kafka_kakao_talk

이 메시지를 받았을 때 책을 쓰는 것은 쉬운 작업이 아니고 특히 다음 사항을 할 수 있는지 확인을 받았습니다.

  • 매일 5 ~ 10장 분량을  2 개월 정도 꾸준히 쓸수 있어야 함
  • 200 ~ 300장 정도의 첫 원고가 2 ~ 3개월 이내에 나와야 함

대부분 주변에 책을 쓰시다가 포기하는 분들을 보면 일정을 정하지 않고 하는 경우가 많았습니다. 필자의 경험이나 주변의 책을 쓰신 분들 이야기를 들어봐도 원고를 쓰기 시작하면 2 ~ 3개월 이내에 첫 원고가 탈고되어 출판사로 넘어가야 비로소 책으로 나오는 경우가 많았습니다. 이 일정내에 한권의 책을 쓰는 작업은 쉬운 일이 아닙니다. 즉, 마음 독하게 먹고 2 ~ 3달은 책 쓰는데에만 매일 4시간 이상 정도 할애를 한다는 마음으로 작업을 시작해야 합니다.

고승범 님에게도 어떤 출판사를 원하는 지 물어 보았습니다.

  • 유명한 출판사에서 출판을 하면 책 자체의 품질, 유통 적인 측면에서 좋고, 출판사 브랜드 자체가 어느 정도 공신력을 갖추고 있다.
  • 반면, 규모가 작은 출판사의 경우 책의 구성, 전개 방식, 글 쓰기 자체에 많은 도움을 받을 수 있다.

두번째를 선택하셔서 제 책을 내는데 도움을 주신 책만 출판사대표님을 소개해 드린 후, 두 분이 만나서 책을 기획하시고 집필을 진행하였습니다. 이후 대략 첫번째 원고가 2018.1 ~ 2월 경에 나왔습니다. 즉, 제가 강조한 몇 개월 내에 초안 원고가 나와야 한다는 것을 잊지 않고 계셨습니다.

초안이 나오면 그 이후에는 주변 사람들의 도움이 필요하게 됩니다. 글에 대한 감수, 베터 리딩, 이후에 피드백 반영 등의 과정을 거쳐 드디어 2018년 4월에 책으로 출간되었습니다.

책의 간단한 소개

책을 기획하고 집필하는 과정에 일부 참여 했기에 책에 대한 구성 및 기획의도와 내용을 잘 알고 있습니다. 이 책은 크게 두 부분으로 나누어 집니다. 앞 부분은 카프카 자체에 대한 내용을 다루고 있으며, 뒷 부분은 카프카를 중심으로 한 새로운 오픈소스 솔루션이나 카프카와 유사한 메시징 클라우드 서비스에 대한 내용을 다루고 있습니다.

카프카 소개 부분에서는 그 동안 설명이 별로 되지 않았던 카프카 내부 서버의 동작 방식을 잘 설명하고 있습니다. 분산된 시스템들은 눈에 보이는 기능보다 내부 동작원리를 이해하고 있어야만 이를 이용한 프로그램 개발 시 문제가 발생할 수 있는 상황을 미리 예측하고 대응하는 코드를 추가할 수 있기 때문입니다. 이 책에서는 카프카 메시지가 어떻게 복제되고, 서버 장애 발생시 어떤 절차로 복구가 되고, 메시지의 유실은 어떤 상황에서 발생할 수 있는지에 대해서 친절하게 설명하고 있습니다. 또한, 카프카 클러스터 운영 중에 흔히 발생할 수 있는 서버 추가, 서버 장애, 메시지 리플리케이션 변경 등에 대해서도 카카오에서 카프카를 운영하고 있는 노하우가 그대로 전달되고 있다고 할 수 있습니다.

책의 후반부에는  파일비트, Apache NiFi, ElasticSearch와 연결하여 별도의 코듸 개발 없이 데이터 스트리밍 플랫폼을 구성할 수 있는 방법을 소개하고 있습니다. 책에서 설명하는 구성과 같지는 않지만 비슷한 구성은 다음 글에서 확인할 수 있습니다.

그리고, 스파크 스트림과 비슷하게 카프카의 토픽 데이터를 이용하여 지속적인 스트리밍 프로세싱이 가능한 플랫폼인 카프카 스트림즈에 대핸 소개도 있습니다. 카프카 스트림즈는 1.0 이상 버전에서는 카프카 배포판에 포함되어 있어 별도 설치 없이 바로 스트리밍 프로세싱을 할 수 있는 장점이 있습니다.

카프카에 저장된 토픽 데이터를 조회하기 위해서는 반드시 컨슈머를 사용해야 하는데 관리적인 측면이나, 저장된 데이터를 계속 활용하는 측면에서는 불편합니다. 단순히 SQL을 이용하는 것이 가장 편할텐데 카프카에 저장되어 있는 토픽 데이터에 SQL을 실행하여 토픽 데이터를 조회할 수 있는 KSQL에 대해서도 책에서는 소개하고 있습니다.

책 구성에 한가지 아쉬운 점이 있다면 책에서 자바나 파이썬을 이용한 프로듀서, 컨슈머 개발에 대한 설명은 하고 있지만 다양한 상황에 대한 설명이 부족한 점입니다. 저자인 고승범님이 운영자이다 보니 운영 관점에 많은 비중을 두셨는데, 카프카의 API가 복잡하지 않고, 몇가지 기본 요소만 알면 카프카를 이용하는 프로그램을 만드는 것이 가능하기 때문에 책에 있는 내용만으로도 개발은 가능합니다. 그리고 책에서 설명하고 있는 카프카의 동작 원리를 잘 이해하면 다양한 상황에 맞는 코드를 직접 만들 수 있을 것이라 생각합니다.

소감

좋은 개발자로 성장하기 위해서는 여러가지 방법이 있겠지만 필자는 지속적인 글쓰기가 가장 좋은 방법이라고 계속해서 주장해 왔습니다. 어떤 개발자가 좋은 개발자냐 라는 것이 다양한 의견이 있겠지만 좋은 개발자라면 자신의 기술을 체계적으로 설명하고, 정리할 수 있어야 하며, 대중(다른 개발자들)에게 어느 정도 인지도도 있어야 한다고 생각합니다[2].  이것을 할 수 있는 가장 좋은 방법이 꾸준한 글쓰기 입니다.

고승범 님은 저에게는 아주 좋은 본보기 입니다. 처음에 글을 잘 쓰지 못하였는데 코칭과 꾸준한 글쓰기를 통해 글을 쓰는 방법을 익히고, 그렇게 꾸준히 쌓은 글을 이용하여 다시 정식 책으로 출판하고, 이를 통해 외부에도 알려지면서 커뮤니티[3]를 구성할 수 있게 되었습니다.

이런 모습이 제가 popit 서비스를 통해 이루려고 했던 것 중에 하나였는데 짧은 시간에 작은 목표를 이루게 되었습니다. 고승범님은 저에게 계속 고맙다고 하시는데 오히려 제가 더 고맙다는 말씀을 전하고 싶습니다.

각주

[1] 제목에 이렇게 Prefix를 넣는 것은 강대명님의 "입개발", "발번역" 에서 아이디어를 얻었습니다.

[2] 물론 개발을 잘 하는 것이 기본이고요.

[3] KAFKA 한국 사용자 그룹


Popit은 페이스북 댓글만 사용하고 있습니다. 페이스북 로그인 후 글을 보시면 댓글이 나타납니다.