회사에서 신기술을 도입하기(feat. 카프카)

햄햄·2024년 4월 7일
1

백엔드 서비스를 분리하면서 회사에서 카프카를 새로 도입하게 되었다. 이에 대한 경험과 느낀 점을 써본다.

사전 학습

먼저 구현을 하기 전에 기술에 대해 사전 학습을 한다. 나는 사전 학습을 할 땐 을 추천한다. 책은 잘 구조화된 정보를 담고 있기 때문에 입문할 때 유용하다. 기술에 대해 깊이 파고들어간 책과 실무적으로 빨리 사용할 수 있게 구성된 책이 있을 것인데, 나는 처음 기술을 익힐 땐 후자가 좋다고 생각한다. 어렵고 자세한 내용은 먼저 기술을 어느 정도 익힌 후에 찾아보면 더 잘 이해되고 기억에 남는 것 같다. 요즘에는 기술을 잘 설명해주는 영상도 많다. 나는 카프카를 익히는데 최범균님의 유튜브 영상이 많이 도움이 되었다.

구현

구현할 때는 공식문서를 참조한다. 책도 좋지만, 책은 시간이 지난 정보를 담고 있을 가능성도 있다. 공식문서는 가장 최신의, 가장 정확한 내용을 담고 있으므로 구현할 때 참고하기 적절하다. 나는 카프카를 도입할 때 Spring 공식문서를 유용하게 보았다. 물론 공식문서만으로 충분하지 않은 상황도 많이 발생한다. 그럴때는 어쩔 수없이 구글링밖에 답이 없는데, 아무래도 정보의 질이 떨어질 수 밖에 없다. 하지만 Github Issues는 믿을만하다. Chat GPT와 같은 AI도 활용할 수 있다. 그런데 Chat GPT는 2022년 1월까지의 정보만 알고 있으므로 아무래도 믿기 어렵다. 다른 생성형 AI인 Claude는 비교적 최근인 2023년 8월까지의 정보를 알고 있다고 하니 더 믿을만한 것 같다. AI는 유료버전이어야 제법 쓸만하다.

구현할 때는 구현이 완료된 것을 어떻게 검증할 것인가?를 고려하면서 구현해야 한다. 당연히 테스트를 꼼꼼히 해야한다. 테스트 코드를 작성해서 테스트를 자동화할 수도 있지만, 테스트 코드를 작성하기 까다로운 경우도 물론 있다. 이럴 땐 테스트 코드를 작성하기 위해 너무 많은 시간을 허비하기 보다는 UI를 사용해서 검증하는 것이 좋을 수도 있다. 나는 테스트할 때 Kafak UI를 유용하게 사용하였다.

진짜 어려운 것

사실 카프카처럼 대중적인 기술이라면 구현하는 것까지는 아주 어려운 일은 아니라고 생각한다. 나에게 진짜 어려웠던 것은 바로 운영 상황을 고려하는 것이다.

  • Dead Letter Queue를 구현하기
  • 장애 상황이 발생했을 때 동작을 정지할 수 있는 Feature Flags 추가하기
  • Graceful Shutdown이 되는지 알아보기
  • 부하 테스트하기

이 모든 요소는 운영을 위해 필시 고려되어야 할 요소지만, 나는 이에 대해 전혀 생각하지 못했다. 리더와 동료가 '이것을 해야한다'라고 말했을 때야 이런게 필요하다는 것을 알 수 있었다. 서비스 운영 경험이 적은 주니어들에게는 아마 이런 부분이 가장 어려운게 아닐까? 앞으로도 개발을 할 때 운영을 고려하도록 노력해야겠다는 생각이 들었다.

profile
@Ktown4u 개발자

0개의 댓글