개인글

사내 강의(분산 애플리케이션 개발) 후기

ybs 2024. 3. 4. 00:31
반응형

시작한 계기

나는 원래 내가 아는 지식들을 공유하는 걸 좋아한다. 그럼으로써 더 깊이 공부하게 되고 정확하게 내 것이 되기 때문이다. 그동안 내가 얼마나 제대로 알고 있는지, 경험했던 일을 내 언어로 잘 표현할 수 있는지를 신경 썼는데 테스트 해보고 싶었다. 그래서 이번 사내 강의를 시험무대로 삼았다.

 

준비하고 진행하면서 느낀 점

1~2 월 두 달 동안 일주일에 1시간씩, 총 8번 강의를 진행했다. 발표 자료까지는 만들 여력이 없어 오프라인에서 칠판 강의로만 했다. 강의 커리큘럼을 모두 준비한 후 시작한 게 아녀서 주말마다 새로운 강의준비 하늬라 바빴다.

 

수업 난이도 설정을 위해 연차 설문을 했는데 1~3년 차 주니어 개발자가 제일 많았다. 그렇다고 난이도를 낮추지는 않았고 같은 주제를 한번 더 하는 식으로 진행했다. 요즘 주니어 개발자 수준이 높아서 두세 번 들으면 충분히 이해할 거라 생각했다.

 

'데이터 중심 애플리케이션 설계' 책을 교재로 하고, 내가 경험한 분산 애플리케이션 개발 이슈들을 함께 공유했다. 확실히 이론적인 지식보다 경험담을 더 선호하는 걸 느꼈다. 내가 겪은 다양한 문제들을 공유할 땐 모두 흥미로워했다.

 

1주 차: 8장 분산 시스템의 골칫거리

신뢰할 수 없는 네트워크 등 분산 시스템 개발하면서 주의해야 할 것들을 키워드 중심으로 강의했다. 

 

1. asynchronous 하다는 것에 대해

2. GC 에 대해

 

asynchronous에 대한 다양한 설명들 그리고 JVM GC 외에도 File System GC, SSD GC 도 있다는 걸 설명했는데 강의 끝나고 내용이 너무 deep 했다는 생각이 들었다. 강의를 들으러 오시는 분들에게 진짜 도움이 되는 이야기가 맞나를 고민했고 진행 방식을 바꾸기로 결심했다.

 

2주 차 : 못다 한 이야기

분산 애플리케이션을 개발 및 운영하면서 구체적으로 어떤 어려움들이 있었는지가 더 궁금할 거라 생각하고 그에 맞춰서 준비했다. 그리고 분산 시스템에 대한 개인적인 생각들을 밝히면서 조금씩 경험 위주 설명으로 방향을 틀었다.

 

3 ~ 4주차 : 장애 사례 공유

분산 애플리케이션 상황에서 경험한 장애를 자세히 공유했다.

 

5~6 주차 : DB Transaction과 isolation level 

이론적인 내용을 아예 안 다룰 순 없었다. 7장 트랜잭션을 진행 하면서 ACID 중 isolation을 중점적으로 강의했다. DB transation 개발 경험에 익숙하지 않은 사람들은 확실히 어려워하는 것을 느꼈다. isolation level 이 여러 개 있다는 것은 알겠는데 실제 개발할 땐 뭘 신경 써야 하는지 바로 이해하기 어려울 수 있다. 그래서 예제 하나를 준비해 강의했다.

 

7주 차 : 분산 시스템 알고리즘 및 safety / liveness

경험담 콘텐츠가 고갈됐다. 또 공유할만한 것들을 찾아봤지만 내가 속한 도메인 사전지식이 많이 필요하거나 기술적으로 deep 한 것들만 남았다. 그래서 어쩔 수 없이 책에 있는 이론적인 내용을 강의했다.

 

8주 차 : 전체 강의 내용 복습 및 개발 커리어에 대한 생각 공유

마지막이라 그동안 어떤 내용들을 다뤘는지 정리했다. 그리고 개발 공부 원동력이 무엇인지 궁금하다는 질문이 있었고 답변하면서 자연스럽게 개발 커리어에 대한 생각까지 이야기했다.

 

 

강의 끝낸 후 리뷰

소감평 및 피드백 설문 일부를 캡처했다. 많은 사람들에게 도움이 된 거 같아 기분이 좋았다. 고생했지만 그만큼 보람도 있었다.

 

 

끝으로 나는 이제 내가 경험했던 것들을 자신 있게 말할 수 있다. 그리고 더 이상 사람들 앞에서 발표하는 것에 긴장하거나 떨지 않는다.

 

 

반응형