본문 바로가기

개발이야기

'아파치 카프카 입문' 5시간 기술 강의 회고, 느낀점, 아쉬운점 정리. 기술강의를 준비하는 분들이 봐야할 글.

지난 6월 19일(금) SK플래닛 T아카데미(서울대연구공원 단지 내 SK연구동)에서 '아파치 카프카 입문과 활용'이라는 제목으로 카프카강의를 수행하였습니다. 총 강의 시간은 5시간으로서 오후 1시부터 시작하여 오후 6시에 끝나는 꽤나 긴 시간의 강의였습니다. 오늘 포스트에서는 제가 기술 강의를 수행하기 위해 어떤 준비를 했는지, 어떤 과정을 거치고 어려운점은 무엇이었는지, 마지막으로 느낀점에 대해서 정리하겠습니다. 

아파치 카프카 입문과 활용 강의포스터

강의를 제안받다

제가 초청받은 강의는 토크ON세미나입니다. SK플래닛 T아카데미에서 주최하는 이 세미나는 ICT분야의 커리어 설계를 준비하는 대학생을 위한 Interactive세미나로서, 다양한 ICT주제로 매달 세미나를 열고 있습니다. SK플래닛의 사내/외 전문가를 초청하여 세미나를 열고 있는데요. 최근에는 빅데이터관련 강좌를 적극적으로 열고 있습니다. 설명에 따르면 대학생을 위한 세미나라고 적혀있지만 모집 대상을 대학생으로만 한정 짓고 있지는 않습니다. 스타트업 개발자, 취업준비생, 현업 개발자 모두 T아카데미의 세미나를 신청하여 들을 수 있으며, 실제로 제가 진행한 카프카 강의에도 현직자가 총 인원에 50%를 넘었습니다.

 

T아카데미에서 열리는 토크ON세미나 리스트

처음 연락오게된 것은 사내 메신저를 통해서입니다. 제가 운영하는 데브원영 유튜브 채널을 보고 빅데이터 관련 오프라인 강좌를 한번 해보지 않겠냐는 제안이였습니다. 제안을 받았을때 많은 고민을 했습니다. 온라인과 오프라인의 갭은 너무나 크기 때문입니다. 온라인 녹화 강좌는 주어진 시간내에 짧게 작성한 대본대로 진행하면 되기 때문에 대본만 잘 짜면 그리 어렵지 않습니다. 그리고 실수한 부분이 있더라도 이미 녹화한 비디오를 편집하여 잘라내면 되기 때문에 문제가 되지 않습니다. 그러나 오프라인 강좌는 직접 수강생들과 함께 소통하는 강좌이기 때문에 일부 내용에 대해 실수를 하거나 막히게 되면 강좌를 진행하는데 아주 곤란해집니다. 그렇기 때문에 오프라인 강좌를 진행할지에 대해 많은 고민을 했습니다.

결과적으로 오프라인 강좌를 진행하기로 결심했는데 그 이유는 바로 수강생들과 면대면으로 소통하는 이점을 살리고 싶었기 때문입니다. 온라인 녹화강좌는 단방향 소통으로 끝나기 마련입니다. 반면 오프라인 강좌는 실습과정을 같이 수행하고 막히는 부분은 즉각적으로 질답하고, 궁금한점을 취합하여 여러 수강생들과 공유함을 통해 모두의 지식 수준을 끌어 올릴 수 있기 때문입니다. 담당자분께 오프라인강좌를 하겠다고 말씀드리고 미팅을 통해 상세 강의 내용과 강의 수행 일정을 잡고 강의를 준비하기 시작했습니다.

 

온라인 녹화강의는 효과적이지만 양방향 소통이 어렵습니다.

 

강의 준비

5시간이라는 긴 강의는 이전에 짧게 10분~20분으로 진행하던 세미나와는 차원이 달랐습니다. 어쩌면 저에게 기회가 될수도 잇고 독이 될수도 있는 이번 강의를 어떻게 하면 잘 진행할지 고민하기 시작했습니다. 그 고민의 답은 사내에서 진행하는 ICT교육과정을 되돌아보니 답이 나왔습니다. 이전에 쿠버네티스, mongoDB, 스파크 과정을 사내에서 교육으로 신청하여 들은적이 있습니다. 긴 강의시간(8시간 이상)동안 집중력을 가지고 효과적으로 기술역량을 습득할 수 있었던 강의는 이론과 실습이 병행되는 과정이였습니다. 어느 기술이든 관련된 이론이나 옵션을 공부할 수 있지만 실습에서는 어떻게 사용할지 파악이 안되는 경우가 많습니다. 이 경우 이론을 기반으로 한 실습을 통해 직접 체득하것이 가장 만족도가 높았기 때문에 이번 '아파치 카프카 입문과 활용'강의도 이론과 실습을 병행하도록 시간구성을 했습니다. 총 5시간을 5교시로 나누어 각각 1시간씩 강의를 수행하도록하여 수강생들이 지치지 않으면서 집중을 유지할 수 있도록 구성하고 첫번째시간은 이론, 그리고 나머지 4시간을 실습과 이론설명을 병행하도록 시간표를 짯습니다. 

강의 시간표

실습이 포함된 강의를 진행할 때 가장 허들이 되는 것은 사용자의 각기 다른 환경입니다. 환경이라함은 강의를 진행하는 장소부터 시작하여 수강생들의 노트북, 운영체제, 설치된 자바 버젼등을 뜻합니다. T아카데미 강의는 수강생이 직접 노트북을 가져와야 하는 구조인데, 모든 수강생이 동일한 운영체제나 환경설정을 사용하지 않기 때문에 실습을 진행하던 도중 문제가 생길 가능성이 높습니다. 이를 해결하기 위해 수강생분들에게는 죄송하지만 실습을 위해 macOS 또는 리눅스가 설치된 노트북을 지참하도록 세미나 가이드를 배포했습니다. 피치못하게 윈도우즈 컴퓨터를 가져오신 수강생분들을 위해 제가 사용하는 맥북 2대를 추가로 챙겼습니다. 결과적으로 이렇게 환경을 제한한 것은 실습시 아주 도움되었습니다. 모두 동일한 환경에서 실습을 진행할 수 있었고 일부 자바 버젼이 달라서 gradle이 빌드가 안되는 현상이 있었으나 즉시 파악하여 도움을 드릴 수 있었습니다. 만약 기술강의를 준비하시는 강사분께서 실습이 포함된 강의를 준비하신다면 반드시 수강생이 개발할 컴퓨터의 환경을 동일하게 맞추도록 가이드하시는 것을 추천합니다.

원활한 진행을 위해 세미나 가이드에 macOS 또는 리눅스를 지참하도록 제한

이제 어떤 주제로 어떻게 강의할지 정했으므로 세미나를 위한 강의자료를 준비할 차례입니다. 강의자료를 준비가 사실 강의 준비의 50% 이상을 차지했습니다. 그도 그럴것이 PPT 1page당 2분의 발표시간을 가진다고 가정했을때 1시간 강의에는 30page, 5시간 강의에는 150page가 필요했습니다. 대학생때를 포함하여 직장을 다니는 동안에도 150page짜리 PPT는 만들어본적이 없었기 때문에 덜컥 겁이났습니다. 그러나 카프카 관련하여 블로그에 적었던 내용들과 알고있던 내용들 그리고 현 직장에서 사용하고 있는 카프카관련 내용을 조합해서 적다보니 금방 30~50페이지까지 완성하였고 실습관련 내용을 코드와 함께 스크린샷으로 넣다보니 135page에 달하는 PPT를 완성할 수 있게 되었습니다.


강의자료를 완성했다고 바로 강의를 진행하는 것은 리허설 없이 오페라를 하겠다는 말과 동일합니다. 완성한 PPT가 강의내용에 부합한지, 실습하는데 강의자료가 도움이 되는지, 시간은 부족하지 않은지, 폰트는 작지않은지 다각도로 확인해야하므로 3번에 걸쳐 모의강의를 진행했습니다. 5시간 강의를 모두 수행한 것은 아니고 시간표 중 일부를 따서 현업 개발자를 대상으로 진행하였습니다. 역시나 강의자료 내부에 일부 부분에 오류가 있는 것을 확인했습니다. 또한 개발자가 사용하는 노트북의 환경설정이 달라서 환경설정을 최대한 맞췄는데도 불구하고 잘 진행되지 않았던부분이 있었습니다. 이를 해결하기 위해 실습용 코드를 다운로드 받거나 실습을 진행할 때 더욱 간단하게 Import하여 사용할 수 있도록 Github 레포지토리를 생성하여 관련 코드와 프로젝트들을 업로드했습니다. 이제 강의 자료도 준비완료되엇고, 모의강의도 끝냈으니 이제 실제 강의만 남았습니다.

https://github.com/AndersonChoi/tacademy-kafka 깃허브에 강의자료 업로드

강의 시작

강의 시작 전 T아카데미 담당자분께 참가하는 인원에 대해 조사한 자료를 공유주셨습니다. 예상과 다르게 현직자가 50%가 넘었습니다. 대학생을 대상으로한 강의인줄 알았는데 현업 개발자분들이 오신다니 좀더 긴장되었습니다. 강의를 할때 잘못말한 부분이 있거나 실수를 하면 안된다는 생각이 들었기 때문입니다. 그러나 지난 기간동안 준비한 강의자료를 토대로 그리고 모의강의했던대로 긴장하지 말고 진행하자는 생각을 가지고 준비했던대로 하자고 마음먹었습니다.

강의 참가자 비율 현업 개발자가 약 75%

실습을 하는동안 일부 수강생분들의 환경에 이슈가 있었지만 그리 어렵지 않게 해결할 수 있었습니다. 환경이슈가 아닌 경우는 대부분 실습과정에서 발생했습니다. 특히 이번 강의에는 AWS를 통한 EC2 인스턴스를 발급받아서 카프카를 설치하고 실행하는 과정이 포함되었었는데, 터미널이나 AWS에 익숙하지않은 수강생들에게는 어려운 과정이기에 인스턴스유형을 잘못선택하거나 보안그룹을 설정을 안하는 등 실습 도중 누락가능성이 높은 과정이였습니다. 이런 부분을 사전에 알았다면 강의자료에 주의사항을 넣거나 또는 강의를 진행할 때 언급할걸 하는 생각이 들었었습니다. 그러나 같이 트러블슈팅하면서 실습을 진행함으로서 모든 수강생들이 끝까지 실습을 마칠 수  있었습니다.

강의 시작

강의 끝, 그리고..

QnA를 마지막으로 강의가 끝났습니다. 5시간동안 쉬지않고 말하고 실습을 진행하느라 완전히 탈진했었던걸로 기억납니다. 쉽지않은 강의였지만 끝까지 최선을 다해 완료한 덕분에 참가자분들도 꽤나 만족스러웠었던것 같습니다. 강의가 끝나고 나면 강의만족도에 대한 설무조사를 수행하는데 첫강의인데도 불구하고 꽤나 좋은 점수를 주셔서 감사했습니다. 사실 강의를 준비하는 것도 중요하지만 수강생분들이 얼마나 잘 따라오느냐가 중요한데 둘의 케미가 잘 맞아서 나온 점수가 아닌가 싶습니다.

강의 만족도 조사

강의 만족도 설문조사에서는 강의에 대한 의견을 추가로 주실 수 있었는데 여기서는 강의에 대한 솔직한 피드백을 들을 수 있었습니다. 그 중 몇개 의견을 아래와 같이 정리했습니다.

- 실습 시간이 조금 여유있게 가면 좋을거 같습니다.
- 개념적 설명에 대한 비유가 곁들여졌으면 좋겠습니다.
- 너무 만족스러운강의였습니다!! 다음 강의개설도 꼭 부탁드립니다!
- 프로듀서,컨슈머 설명보다 카프카 자체에 대한 아키텍쳐 및 기능을 더 자세하게 해주셨으면 좋았을것 같습니다.
- 짧은 시간에 많은 내용을 전달하려다 보니까 진행 속도가 빠른것 같아요~

여유를 가지고 강의를 진행하지 못하고 조급하게 강의자료와 실습자료를 토대로 진행하려다보니 빠르게 진행한점이 아쉬웠습니다. 그리고 이번에는 컨슈머/프로듀서위주로 설명을 진행했는데 일부 수강생분들은 카프카 클러스터의 구조 및 동작을 알고싶어하신 분들도 있었던것 같습니다. 5시간이 길면 길지만 실습을 곁들이면 다소 짧은시간이기도 합니다. 카프카의 모든 내용을 담지 못한 점은 저도 아쉽다고 생각합니다. 이 부분은 다음에 기회가 된다면 '카프카 심화과정'을 통해 제공하면 어떨까 생각합니다.

 

의견

5시간 기술 강의를 어떻게 준비했는지, 어떤 부분을 중요하게 고려하고 어떤점을 보완했어야하는지 정리해보았습니다. 사실 강의를 실제로 하기 전까지는 매우 고통스러웠습니다. 100여장에 달하는 강의자료 준비와 강의실습 준비는 스스로 역량을 쌓기 위해 공부하는 것과는 차원이 달랐거든요. 그러나 강의 준비를 완료하고 강의를 진행하고나니 이런 모든 힘든 과정이 오히려 득이 된다는 것을 알았습니다. 첫번째로 강의를 위해 복습하게되는 계기가 되었습니다. 정확한정보를 전달하고 실수하지 않기 위해 두번 세번 강의자료를 보고 고쳤습니다. 이를 통해 스스로 카프카관련 내용을 다시 한번 잡게되었습니다. 두번째는 지식 전달의 즐거움입니다. 카프카는 다소 어렵고 운영하는데 노하우가 필요합니다. 제가 DataInfrastructure팀에서 쌓은 카프카관련 노하우를 전수하면서 수강생분들이 즐거워하시는 부분에서 보람을 느꼈습니다. 뿐만아니라 제가 미처 생각하지 못했던 부분을 질문하실때는 다시 한번 관련 내용을 생각하게 되는 계기가 되었습니다.

이 글을 보시는 많은 분들께서도 기회가 생긴다면 꼭 기술 강의를 해보는 것을 추천드립니다. 기존 직장에서의 업무 경험이나 스스로 공부하는 경험과는 차원이 다른 경험을 하실 수 있을겁니다. 

태그