[넘블] 회고 (웹소설 클론코딩 챌린지)

진승범·2023년 4월 16일
0
post-thumbnail

넘블이란?

넘블은 쉽게 말해서 코딩 챌린지 플랫폼이다. 호스트 주관으로 챌린지가 하나씩 개설되는데, 예를 들어 웹소설 클론코딩 챌린지가 열리면, 유명 회사에서 일하는 개발자분들의 코드 리뷰를 받을 수 있는 기회가 주어진다. 단 결과물이 상위에 들어야 받을 수 있다. 하지만 상위 결과물이 받은 코드 리뷰를 같이 볼 수 있기 때문에 도움이 되는 건 마찬가지이다.

내가 도전한 넘블 챌린지

내가 도전한 챌린지는 네이버, 카카오, 문피아 같은 웹 소설 플랫폼을 백엔드 기반으로 클론코딩 해보는 것이었다. 아무 주제 없이 클론코딩을 해보는 것도 도움이 되겠지만, 특별히 호스트께서 여러가지 집중해볼만한 주제를 던져주셨다.

특히나 대용량 트래픽 환경에서 생길 수 있는 장애에 대해 집중할 수 있는 시간이었다. 이 외에 주어진 문제를 풀 수 있을만한 고민을 하는 시간도 갖게 되었다.

정책

큰 틀만 제공되고, 실제로 세세한 정책에 대해서는 스스로 정해봐야만 했다.

  • 소설 등록 시 20,000자 이내이어야 합니다.
    • 많은 이용자의 무분별한 긴 양의 소설 등록을 제한하도록 20,000자로 제한
    • 추후 작품에 대한 인기가 많아진다면, 해당 소설의 작자에 한하여 글자 수 제한 해제.
  • 랭킹은 전체 인기순, 무료 인기순, 유료 인기순으로 나열하고, 각 인기에 대한 기준은 조회수로 적용한다.
  • 무료 소설은 비로그인, 로그인 사용자 모두 열람할 수 있다.
  • 유료 소설은 로그인 사용자 중 결제 이력이 있는 사용자만 열람할 수 있다.

요구사항 및 문서

내가 고민했던 문제들

글이 길어 링크로 첨부합니다.

  1. 동시 요청이 여러개 들어왔을 때 하나만 처리하기

  2. 랭킹 캐시 성능 개선기

  3. 소설 내용은 어떻게 관리해야 할까?

  4. 조회수는 매번 올려야 할까?

  5. 선호작 기능을 효율적으로 구현하는 방법

아쉬웠던 점

  1. Replication을 적용해보지 못했다.
  2. 성능 테스트 툴을 다양하게 사용해보지 못하고 테스를 깊게 해보지 못했다.
  3. 테스트 코드를 작성하지 못했다.
  4. 고민했던 문제들에 대해 어느정도 해결했지만, 궁극적인 해결 방식은 아니었다. 분산락을 통해 동시성 처리를 했지만, 추후엔 Message Broker를 통해 구현하는 방식도 해볼 것이다.
  5. 예외 처리 및 응답 메시지 부족
  6. 제출 문서 준비 부족

후기

먼저 새로운 접근을 할 수 있었던 점이 너무 좋았다. 처음에는 쉽게 프로젝트를 완성 시킬 줄 알았지만, 결과물을 보니 공부했던 부분들과 부족했던 부분들이 많았다. 테이블 설계부터 동시성 처리, 비즈니스 정책 확립 등 미흡한 부분이 많았다. 퇴근 후 학교까지 다니기 때문에 해당 프로젝트에 할애할 수 있는 시간이 그리 많지 않았다. 그래도 백엔드 개발을 하면서 성능이란 것에 대해 깊게 고민하고, 조금이라도 해결하는 유익한 시간이었던 것 같다. 결론적으로 내가 앞으로 무엇을 더 공부해야 하는지를 알 수 있어서 좋았다. 결과를 떠나서 다른 분들은 내가 고민한 부분을 어떻게 구현했는지를 통해 더 넓은 지식을 알아갈 수 있는게 좋은 것 같다. 실제로 대용량 트래픽 환경에서 개발을 한다면 신경써야할 부분이 한 두가지가 아닌 것 같았다. 이렇게 작은 프로젝트를 만드는데도 여러가지 상황을 고려하면서 개발했어야 하기 때문에 실제 업무라면 내가 지나친 작은 기능도 회사에 크리티컬한 피해를 입힐 수 있다는 점이 조금 무서운 것 같다.
앞으로도 꾸준히 공부하면서 많은 사람들이 이용해도 안정적인 서비스를 개발할 수 있는 개발자로 성장하고 싶다. 더 나아가 앞으로도 더 많은 넘블 챌린지에 참여하면서 끊기지 않는 토이프로젝트를 하고싶다.

0개의 댓글