29CM 카테고리 자동완성 기능 개발을 담당한 백엔드 개발자가 공유해주는 이야기입니다.
- 29CM의 카테고리 자동완성 기능이란 "코트" 라고 입력시 "트렌치 코트", "더블 코트" 등의 카테고리 링크를 제공하는 기능
- 개발 시작시 개발디자인 문서를 작성하여 팀내 리뷰어 분들과 함께 개발방향과 대안 배포전략등을 논의함
- 기능 구현에 있어서 3가지 옵션이 있었음
- 클라이언트 사이드 구현
- 서버 사이드 구현 (ElasticSearch 미사용)
- 서버 사이드 구현 (ElasticSearch 사용)
- ES(ElasticSearch) 를 사용하면 형태소 붙석 및 유사어 검색을 통해 편의성을 제공해줄 수 있으나 데이터 적재 작업이 선행되어야 하는게 공수가 컸으며, 개발자 본인은 ES 대한 경험이 부족했음
- 2안, ES 없이 구축하는 결정을 내림. Trie 구조체를 통한 자동완성 기능을 개발하기로 결정함
- 실험이 성공한다면 확장성 있는 장기 목표를 잡고 계획을 세운다
- Trie 구조체는 단기적인 방법.
- 추후 기능의 효용성이 검증된다면 Long term 솔루션을 실행해야함
- 이 때문에 추후 ES 로의 전환을 위한 마일스톤도 작성함
배운 점
- 카테고리 자동완성 기능을 위한 개발 디자인 문서를 작성하면서 여러 방법과 대안을 모색하고 빠른 의사결정을 할 수 있었음
- 기능의 목표와 목표가 아닌 것을 명확하게 하여 요구사항을 준수하는 빠른 실험 방법을 찾을 수 있었음
- 장기적인 개선 방향을 명확히하여 확장된 실험을 시작하기 위한 준비도 할 수 있었음