ML 데이터 플랫폼팀을 소개해요
만약 당근의 홈 화면의 중고 거래 게시글이 누구에게나 똑같이 최신순으로만 보인다면 어떤 모습일까요? 나는 아이가 없음에도 유모차나 육아용품이 뜨거나, 냥집사, 식집사임에도 관련 물품이 안보이고, 현재 관심 없는 의류나 가구, 미용용품이 보일 거예요. 이처럼 개인화 피드와 추천은 당근의 1,900만 MAU 사용자들이 당근을 더 잘 이용하기 위해서 필수적인 부분이에요.
당근에선 이런 피드 개인화, 광고 추천을 위해 여러 팀이 다양한 도메인에서 머신러닝을 널리 사용하고 있고, 피드실 ML 데이터 플랫폼 팀은 당근의 머신러닝 서비스들이 이런 대용량 데이터를 각자의 서비스에 활용할 수 있도록 견고하고 확장 가능한 고성능 데이터 플랫폼을 구축하고 있어요.
- ML 데이터 플랫폼 팀은 4명의 소프트웨어 엔지니어로 구성된 팀이에요.
- 저희 팀은 피드 개인화, 광고 추천 등을 위해 피쳐 플랫폼과 추천 엔진, 스트림 프로세서를 운영하고 있어요.
- 1,900만 MAU 사용자들의 추천을 위해 초당 100K+ 대용량 트래픽 요청을 p99를 넘어 p99.9 기준 30ms 이하로 처리하고 있어요.
- 이는 당근의 수백 개 백엔드 서비스 중에서도 손에 꼽히는 많은 처리량이에요.
- 그와 동시에 가능한 한 최신 정보로 추천하기 위해 여러 서비스의 데이터를 스트림으로 준 실시간 수집하고 처리하고 있어요.
- Kafka, GCP Pub/Sub에서 100+개의 이벤트 스트림을 처리해 1,000개가 넘는 피쳐를 피쳐 플랫폼에서 제공하고 있어요.
ML 데이터 플랫폼 팀은 이런 일을 해요
- 데이터를 직접 생성하거나 관리하지 않고 대신 플랫폼을 개발해요. 전사 누구든 피쳐 플랫폼에 실시간으로 수집하고 싶은 데이터를 정의할 수 있고, 이렇게 수집된 데이터는 피쳐 플랫폼을 호출해 가져가 다양한 서비스에서 사용할 수 있도록 해요
- 피쳐 플랫폼의 성능을 높이고 사용성을 개선하고 안정적으로 운영될 수 있게 하며 데이터 품질의 가시성을 확보에 집중해요
- 데이터를 단순 수집하는 것뿐만 아니라 스트림 프로세서와 LLM을 이용해 임베딩 벡터 추론 결과나 프롬프트 결과 또한 피쳐 플랫폼에 쌓아 사용할 수 있는 환경을 구축하고 확장해요
이런 기술을 사용하고 있어요
- Go, gRPC, Protocol Buffers, Kafka, Redis, AWS DynamoDB, GCP Pub/Sub, GCP BigQuery, GCP VertexAI
- Kotlin, Apache Beam, GCP Dataflow
- Kubernetes, Istio, Grafana, Prometheus, Loki
- "위 기술 스택은 참고 사항일 뿐", 관련 경험이 없더라도 학습에 대한 흥미가 있다면 충분해요
ML 데이터 플랫폼 팀은 이렇게 일해요
- 서로 테크스펙과 코드를 리뷰하며 공유와 커뮤니케이션을 중요하게 여겨요
- 복잡한 내용을 말 또는 글로 쉽게 설명하려해요
- 풀어야 할 문제와 요구사항에 대해 주도적으로 고민해요
- 실용적인 자세로 기술을 대하지만 필요하면 깊게 파고들어요
- 장애를 개인의 책임이 아닌 시스템으로 재발방지하고 팀의 성장의 기회로 삼아요
이런 문제를 같이 해결하고 싶어요
이렇게 피쳐 플랫폼은 대용량의 트래픽을 처리하고 있지만 그럼에도 아래처럼 더 개선하고 싶은 문제들이 있어요
- ML 데이터 플랫폼에서 지탱해야할 트래픽과 데이터양이 6개월마다 2배씩 증가하고 있어요. 매니지드 환경에서 로컬 캐시, 리모트 캐시 등을 최대한 사용해 저지연 처리를 하고 있지만 앞으로 트래픽이 10x, 100x 규모로 커져도 대응할 수 있게 저장소와 캐시를 꾸준히 최적화 하고자해요
- 단순히 피쳐를 제공하는 것 뿐만 아니라 제공되는 피쳐의 품질 또한 중요해요. 어떤 피쳐가 얼마나, 어느정도의 지연시간으로 제공되는지 이상으로 데이터의 분포가 어떤지, 갑자기 비정상 값이 많아지진 않았는지, 우리가 정상이라고 보는 범위내의 값으로 나가는지 등을 더 잘 모니터링 하고자 해요
이런 분을 찾고 있어요
- 분산 서비스 환경에서 신규 개발, 리팩토링, 고도화, 마이그레이션, 모니터링, 이슈 대응, 장애 대응, 프로파일링, 성능 최적화 등을 포함한 백엔드 서비스 라이프 사이클 전반에 대한 이해가 있으신 분
- 베스트 프랙티스대로 사용 가능한 프로그래밍 언어가 하나 이상 있고, 필요에 따라 새로운 언어를 배우는데 거부감이 없는 분
- 저지연 대규모 트래픽을 처리하는 고가용성 백엔드 서비스를 구축하고, 운영한 경험이 있으신 분
- 머신러닝에 대한 실용적인 이해가 있고, 추천, 검색, 사기탐지 등과 같은 ML 기반 서비스 시스템 구축에 참여한 경험이 있으신 분
이 런 분이면 더 좋아요!
- 머신러닝 혹은 데이터 플랫폼 관련 프로젝트를 리드해본 경험이 있으신 분
FAQ
-
팀에서 작성한 블로그 글이 있나요 ?
- 네, 아래의 글을 참고 해주세요.
- 추천 시스템의 심장, Feature Store 이야기 (1)—혼란 속의 질서 찾기: Feature Store를 구축하다
- 네, 아래의 글을 참고 해주세요.
참고해 주세요
- 화상 면접에서 이력 기반 질문과 라이브 코딩 테스트가 있을 예정이에요
- C++, Go, Java, Python 언어로 진행하실 수 있어요
- 직무 면접에서 시스템 설계 테스트가 진행될 예정이에요
- 정규직 채용의 경우 3개월의 수습기간이 있어요
- 평가 결과에 따라 수습 기간이 연장되거나 채용이 취소될 수 있어요
이렇게 합류해요
1. 서류 전형 → 2. 화상 인터뷰 → 3. 직무 인터뷰 → 4. 컬처핏 인터뷰 및 레퍼런스 체크 → 5. 처우협의 → 6. 최종 합격 및 입사