이 글의 원문은 당근 팀 블로그 ‘검색의 안정성을 책임지는 든든한 버팀목, 검색플랫폼팀’에서 확인할 수 있습니다.
이번 글에서는 이런 내용을 확인할 수 있어요! ☑️
- 검색 안정성을 높이기 위해 검색플랫폼팀이 하는 일
- 실험 기반으로 의사결정하는 검색플랫폼팀이 진행한 프로젝트
- 장애가 발생해도 검색플랫폼팀이 두려워하지 않는 이유
이런 분들에게 도움이 돼요! 🙋
- 검색의 안정성과 효율성을 높이는 방법이 알고 싶은 분
- 최적의 해결책을 찾기 위해 다양한 방법을 시도했던 실험 사례가 궁금한 분
- 팀의 심리적 안정감을 어떻게 높일 수 있을까? 고민하는 분
당근에서는 중고거래, 동네생활, 알바 등 동네를 연결하는 다양한 서비스를 만나볼 수 있죠. 그중에서 수많은 게시글을 일일이 살펴볼 필요 없이 내게 필요한 정보만 쉽게 찾을 수 있는 이유는 바로 검색 기능 덕분인데요. 사용자가 원하는 정보를 오류 없이 빠르게 검색할 수 있도록 눈에 띄지 않는 곳에서 묵묵히 힘쓰는 팀이 있어요. 검색의 안정성과 편리함을 더하기 위해 노력하는 당근 검색플랫폼팀과 이야기 나눠봤습니다.
반갑습니다! 먼저 간단히 자기소개 부탁드려요.
Johnny: 안녕하세요. 검색플랫폼팀 리더를 맡고 있는 Johnny입니다. 당근에는 2020년에 합류했어요. 입사하기 전 외부 스터디 모임에서 당근 사람들을 처음 만나게 됐는데, 회사 칭찬을 하도 많이 하길래 얼마나 좋아 그러나 싶어 궁금해 합류하게 됐어요. (웃음) 당시 육아 중이라 당근을 많이 쓰는 사용자이기도 했고요. 그렇게 벌써 4년째 다니고 있네요.
Teddy: 검색플랫폼팀 내 검색인프라 파트 Backend Engineer Teddy예요. 이전 회사에서도 검색 일을 하면서 기술적으로 많은 걸 배웠는데, 이걸 좀 더 주도적으로 활용해보고 싶은 생각이 들었어요. 당근이 내가 갖고 있는 걸 펼치기 좋은 회사라는 생각이 들어 합류하게 됐어요.
Ellie: 저도 Teddy와 함께 검색인프라 파트에서 일하고 있어요. 이제 당근과 함께한 지 1년 가까이 돼 가는데, 사용자와 맞닿아 있는 경험을 할 수 있어 즐겁게 다니고 있어요.
Hy: 검색플랫폼팀에서 Backend Engineer로 일하고 있는 Hy예요. 저는 규모가 작은 곳부터 큰 곳까지 다양한 회사를 경험해 봤는데요. 주어진 일만 하는 것보다는 주도적으로 일을 찾아서 할 수 있는 곳이 제게 맞더라고요. 당근이 그런 문화를 가지고 있어서 오게 됐어요.
검색플랫폼팀은 당근에서 어떤 일을 하고 있나요?
Teddy: 저희는 당근의 검색 트래픽을 감당하고 더 좋은 검색결과를 빠르게 제공하는 플랫폼을 만드는 팀이에요. 당근에서는 하루에도 천만 건 가까이 되는 검색이 일어나거든요. 1초에 수백 건의 검색이 이뤄지는 셈인데, 절대 적은 양은 아니죠. 이런 검색 기능의 안정성을 유지하는 일을 하고 있어요.
Johnny: 사용자들은 검색 기능을 통해 여러 게시글을 일일이 확인할 필요 없이 찾고 싶어 하는 정보만 얻을 수 있어요. 그런데 A라는 키워드를 검색했는데 B를 보여주거나 잘못된 정보를 알려주면 어떻게 될까요? 서비스에 대한 부정적 경험이 쌓이겠죠. 저희 일은 검색 중에서 이런 문제가 발생하지 않도록 플랫폼을 안정적으로 유지하는 거예요.
또 사용자가 검색을 하는 데 들이는 시간이나 리소스를 최소화하는 일도 해요. 원하는 결과를 더 쉽고 빠르게 찾을 수 있도록 돕는 거죠. 예를 들어 검색창에 단어를 입력할 때 자동완성으로 검색어를 완성해 주거나 검색 결과 내에서 범위를 설정하면서 결과를 좁힐 수 있도록 도와줘요.
검색 장애나 어뷰저로부터 서비스를 보호하는 장치들을 개발하거나 운영 측면에서 어드민 페이지를 고도화하는 작업도 해요. 눈에 잘 띄지는 않지만 서비스가 잘 운영되도록 뒤에서 묵묵히 힘쓰는 조직이죠.
Teddy: 제가 속해있는 검색플랫폼팀의 검색인프라 파트에서는 저희 팀이나 검색실 사람들이 인프라 측면을 고려하지 않고 서비스에만 집중할 수 있게끔 지원하고 있어요. 검색 서비스, 검색 품질, 검색 플랫폼을 운영하는 데에 필요한 모든 인프라 구성 요소들을 지원하고 관리하죠.
당근이 다양한 서비스를 운영하는 만큼, 검색도 여러 팀과의 협업이 필요할 거 같아요.
Johnny: 맞아요. 서비스 팀들 모두 본인들 서비스가 잘 검색돼 사용자들에게 효과적으로 노출되기를 원하니까요. 그래서 이전까지는 관련 요청이 들어오면 저희가 일일이 다 구현해 줬었는데요. 그러다 보니 서비스 팀은 저희 팀이 기능 구현을 마칠 때까지 계속 기다려야 했고, 저희 팀도 요청이 들어오면 기존에 하던 일과 병행하는 게 힘들었어요.
그래서 최근에 각 팀이 직접 검색 기능을 만들 수 있는 ‘셀프 서치'라는 플랫폼을 만들었어요. 사실 각 서비스의 데이터 구조나 검색이 잘 돼야 하는 데이터들은 그 팀이 가장 잘 알거든요. 그래서 저희는 플랫폼으로 전문적이고 기술적인 부분에서 도움을 주되, 서비스팀에서 직접 간단한 설정만으로 본인 도메인에 맞는 검색 기능을 세팅할 수 있도록 했죠.
Hy: 당근에는 중고거래, 알바, 부동산, 중고차 등 다양한 서비스가 존재하고 서비스별로 특징도 제각각이라, 저희 팀이 모든 서비스의 도메인을 이해하기는 쉽지 않아요. 그래서 도메인과 관련된 부분은 서비스 팀에서 직접 기여하고 저희는 기술 쪽으로 지원하는 방식으로 영역을 분담한 거죠. 서비스팀 반응도 좋았어요. 특히 로컬 비즈니스실에서는 검색 기능에 직접 서비스 도메인의 특징을 잘 반영할 수 있어서 좋았다고 말씀해 주시더라고요.
최근에는 팀에서 어떤 과제에 집중했는지도 들어보고 싶어요.
Ellie: ‘리전 샤딩(Region Sharding)’이라고 부르는 프로젝트가 기억에 남아요. 똑같은 검색 요청에도 응답 속도를 최소화할 수 있는 방법을 고민하던 중에 Johnny가 좋은 아이디어를 제안해 준 건데요. ‘리전 샤딩(Region Sharding)’은 지역 기반으로 데이터를 저장하고 검색하도록 하는 작업이에요. 저희가 사용하는 검색 엔진에서 지역별 데이터 구조를 어떤 식으로 구성할지 수많은 케이스를 나눠서 다양한 실험을 진행했어요. 실험을 기반으로 어떤 구조일 때 응답 속도가 빨라지는지 확인하며, 검색 성능을 효과적으로 개선할 수 있었죠.
Johnny: 당근은 지역 기반으로 운영되는 하이퍼로컬 서비스이고, 그런 특성을 검색에서도 잘 활용하려고 해요. 그래서 지역 기반 데이터를 대규모로 모아 검색에 활용하는 인프라 구조를 만들었고 꾸준히 개선하고 있어요. 똑같은 문서 수, 검색 요청량이더라도 응답 시간이나 인프라 비용을 최대한 적게 사용하도록 말이죠.
이처럼 최적의 해결책을 찾기 위해 다양한 방법을 시도하는 검색플랫폼팀은 장애가 발생하더라도 두렵지 않다고 하는데요. 심리적 안정감을 가지고 다양한 실험에 딥다이브하는 검색플랫폼팀의 팀 문화가 더 궁금하다면, 💡어바웃당근 블로그에서 지금 바로 콘텐츠 전문을 확인해보세요!