영주의 개발노트

검색개발을 한다는 것 (feat. 기존 도메인 vs 검색 도메인) 본문

STUDY 📖

검색개발을 한다는 것 (feat. 기존 도메인 vs 검색 도메인)

0JUUU 2024. 10. 24. 20:24

글을 시작하기 전, 개인적인 이야기를 먼저 공유하고자 한다. 최근 이직을 하고 검색 도메인을 다루는 팀에 들어가게 되었다.

🥲

새로운 회사에 입사했다는 행복도 잠시, 업무라는 큰 산에 맞닥뜨렸다. 기존에는 주문 개발을 해왔던 터라 검색 개발은 나에게 있어 미지의 영역이었고, 어떠한 것을 개발하는지 감이 오질 않았다. 팀 내 문서와 구글을 이용하여 검색개발에 대해 찾아보다 보니 어렴풋이 갈래가 잡히는 듯하여 기존 도메인인 주문 개발과 검색 개발을 비교하고, 내가 느꼈던 변화와 함께 '이런 것에 집중하면 좋을 것 같다.'는 포인트에 대한 글을 작성해보고자 한다. 

 

검색 개발과 주문 개발 비교

1. 데이터

주문 쪽에서는 트랜잭션이 굉장히 중요했다. 시스템 등의 오류로 주문 쪽에는 데이터가 저장되었는데 결제 쪽에는 데이터가 저장이 안 되어 결제를 했음에도 주문 상태가 변경되지 않는다던가 하는 치명적인 오류가 발생할 수 있다. 그렇기에 결제 데이터와 비교하여 주문을 취소하는 배치를 둔다던가 주문이 실패하면 관련된 데이터들을 모두 롤백하는 로직이 존재했다. 또한, 데이터에 대한 규격을 정해놓으면 대부분의 데이터가 그 규격 안에서 벗어나지 않았다. 주문번호, 고객 id, 상품번호, 결제정보 등이 명확하게 정의된 스키마에 따라 저장되고 처리된다. 

하지만 검색에서는 다양하고 틀이 정해지지 않은 데이터를 다루었다. 예를 들어, "원목 책상"이라는 검색어가 들어왔다고 가정하자. 이에 대한 검색 결과를 도출하기 위해서는 "원목 책상"이라는 상품명, 검색어가 들어간 설명 및 리뷰를 조회해야 할 것이며, 하얗거나 까만 느낌보다는 나무 느낌을 살린 책상들이 이미지로 보여야 할 것이다. 이처럼 다양한 형태의 데이터를 처리할 수 있어야 한다. 

데이터의 일관성보다는 사용자의 니즈에 맞게 즉각적으로 반응해야 하며 검색어에 대한 정확한 결과가 정말 중요하다. 또한, 검색어에 오타가 있거나 비슷한 단어들을 고려하여 검색 결과를 내보여야 한다. 

 

2. 요구사항

위 내용과 비슷한 맥락이라고 생각한다. 주문은 데이터가 정확하고 일관되어있어야 한다. 결제는 되었음에도 주문이 누락되거나 사용자는 취소한 주문이라고 생각하였는데 실제 결제가 이루어지는 등의 문제가 발생할 수 있기에 이를 신경 써야 한다. 또한, 사용자들의 카드 번호, 집주소 등을 다루기 때문에 개인정보에 유의해야 한다. 

반면, 검색은 빠른 응답 속도와 대규모 데이터들을 처리할 수 있는 확장성을 많이 고려한다고 생각한다. 검색하는 사용자들은 자신이 검색한 키워드에 관련한 내용이 정확 및 신속하게 나오기를 바랄 것이고, 쏟아지는 데이터 속에서 관련되어 있는 결과를 제공해야 하기 때문이다. 한마디로 '많은 데이터를 얼마나 빠르게 처리할 수 있느냐?'가 키포인트다. 

 

3. 기술 스택

주문은 주문데이터를 생성하고, 수정하는 등의 작업이 많다. 그래서 이전에 업무 할 때는 CRUD 작업과 관계형 데이터베이스를 사용했다. 이와 달리 검색 도메인에서는 ElasticSearch 등의 검색 엔진을 활용하여 인덱싱, 랭킹 알고리즘, 자연어 처리 등의 기술을 사용한다. 개인적인 경험이라 모두 이렇다고 말할 수는 없지만, 주로 주문에서는 Java 혹은 kotlin 기반의 Spring 프레임워크를 많이 사용하는 것 같고, 검색에서는 python을 많이 다루는 것 같다. '아무래도 속도가 중요해서 그런 게 아닐까?' 하고 조심스럽게 생각해 본다.

 

검색 개발을 한다면 체감할 변화와 집중할 포인트

기존에는 정확한 것이 중요했다면, 검색 개발을 시작한다면 검색어와의 관련성에 포커스를 맞추어야 한다고 생각한다. 즉, SQL의 like 문법이 아닌 사용자의 의도를 파악하여 가장 관련도가 높은 결과를 노출해야 한다. 

 

"🐶떡같이 말해도 찰떡같이 알아들어요!"

정말 사용자 관점에서 생각하는 것이 정말 중요한 것 같다. 사용자에게 이런 검색 결과가 노출되었을 때 만족감을 줄 수 있는지에 대한 포인트에 집중할 수 있어야 한다. "어쩜 이리 내 마음을 잘 아니?"라는 소리가 검색 개발에서는 최고의 칭찬이 아닐까 하고 섣불리 생각한다.(ㅋㅋ) 검색 품질 개선을 위해 여러 실험을 하고 A/B 테스트 등을 통해 그 효과를 검증할 수 있어야 한다. 

 


도메인이 변경되며 전후 도메인의 차이점 등에 대해 작성해 보았다. 처음에는 정말 막막했는데 알아가다 보니 오타를 쳐도 원하는 검색 결과가 나오는 등의 마법같이 느껴졌던 부분에 내가 관여할 수 있다는 점이 흥미롭게 다가왔다. (물론, 직접적인 관여는 아니겠지만...ㅎ) 아직 입사 한 달도 되지 않은 상태에서 느낀 부분들을 작성한 거라 부족하거나 잘못 생각한 부분들이 많을 것이다. 이는 추후 업무를 진행하며 수정하는 기회를 갖는 것도 좋을 것 같다. 위 글을 통해 새로이 검색 개발을 접하는 사람들에게 도움이 되었으면 좋겠다.