당근 피드시스템 안정성 향상기: 프로파일링부터 서킷 브레이커까지
Medium
안녕하세요. 저는 당근 피드실 피드 인프라팀에서 Software Engineer로 일하고 있는 Lebron이라고 해요.
당근 피드는 당근 앱에 있는 다양한 콘텐츠를 모아서 하나의 리스트로 보여줘요. 사용자는 피드를 통해 중고거래, 구인 공고, 중고차, 부동산 등 자신에게 맞춤화된 정보를 한눈에 확인할 수 있어요. 이 피드시스템은 당근의 핵심 기능으로, 매일 수백만 명의 사용자가 이용하는 중요한 서비스예요.
오늘은 피드시스템의 안정성을 높이기 위해 진행했던 프로젝트를 소개하려고 해요. 이 글에서는 서버 튜닝 기법, 서킷 브레이커, 프로파일링 빌드, 그리고 서비스 수준 계약(SLA), 목표(SLO), 지표(SLI)에 대해 이야기할 예정이에요. 이러한 방법들을 적용해 어떻게 시스템 안정성을 향상시켰는지 알려드릴게요.
당근의 피드시스템과 장애
2024년 한 해 동안 당근 피드시스템은 여러 건의 크고 작은 장애를 여러 번 겪었어요. 사용자가 앱을 열었을 때 피드가 평소보다 훨씬 늦게 뜨거나, 잘못된 콘텐츠가 표시되는 경우도 있었죠. 심지어 서비스가 완전히 중단되는 상황까지 발생했어요.
이러한 장애의 주요 원인은 피드시스템의 복잡한 의존성 구조였어요. 하나의 피드를 구성하기 위해 수많은 서비스들이 연결되어 있는데, 그중 하나라도 문제가 생기면 연쇄적으로 장애가 발생하는 구조였거든요.
피드시스템은 당근 내 다양한 콘텐츠를 보여주기 위해 여러 마이크로서비스와 연결되어 있어요. 앱을 열면 보이는 동네생활 게시글, 중고거래 매물, 구인 공고, 중고차 매물, 부동산 매물 등 모든 정보는 각각 다른 서비스에서 제공하는 데이터로 구성됩니다.
이 중에는 피드 구성에 필수적인 서비스(Zero-Tier)와 요청 실패가 허용되는 서비스들이 공존했어요. 예를 들어, 기본 게시글 목록은 반드시 보장돼야 하지만, 홍보 게시글이나 추천 콘텐츠는 일시적으로 보이지 않더라도 사용자 경험에 치명적인 영향을 주지는 않아요. 따라서 이런 의존성 구조를 정확히 이해하고 관리하는 것이 안정적인 피드시스템 구축의 핵심이었어요.
피드시스템의 안전성을 높이기 위한 작업
이러한 문제를 해결하기 위해 시스템 안정성 향상 프로젝트를 시작했어요. 여러 가지 접근 방식을 통해 피드시스템의 신뢰성과 성능을 개선하고, 장애 상황에서도 최소한의 서비스를 보장할 수 있는 방법을 모색했어요.
장애 상황에서도 최소한의 서비스를 보장할 수 있었던 방법이 궁금하다면?
지금 당근 테크 블로그에서 글 전문을 읽어보세요!🥕
다음 내용이 궁금하다면?
이미 회원이신가요?
2025년 10월 2일 오전 7:28