FastComments.com Blog

Wed Apr 01 2026
...

패스트코멘트 자동 라우팅 전송 시스템

소개

패스트코멘트 자동 라우팅 전송 시스템(FARTS)은 우리의 전송 및 서비스 계층입니다. FARTS는 혼잡 완화, 사용자 위치 및 미래의 잠재적 로드에 따라 트래픽을 라우팅하는 데 도움을 줍니다. 여러 개의 다양한 시스템으로 구성되어 있으며, 위치 기반 DNS 계층, DB 프록시, DB 복제, SSL 인증서 관리, 리버스 프록시 및 엣지에서 자산을 캐시하는 온디스크 LRU 캐시를 사용하는 CDN이 포함됩니다.

액티브-액티브

FART의 최신 버전에는 데이터베이스를 위한 내장 프록시 및 복제 계층이 포함되어 있습니다. 이를 통해 패스트코멘트는 전 세계적으로 쓰기 가능성을 가지는 액티브-액티브 상태가 되어, 우리의 FARTS가 결국 일관성을 지니도록 보장합니다. 더 많은 세부정보는 여기에 있습니다.

우리가 실제로 초기에 취한 접근 방식 중 하나는 MongoDB의 액티브-액티브 포크를 만들 수 있는지를 살펴보는 것이었습니다. 우리 엔지니어 중 한 명(Sloperators)은 실제로 Opus 4.6을 사용하여 이를 달성했지만, 우리는 이로 인한 리스크가 독립된 시스템을 구축하는 것보다 높다고 판단했습니다.

대규모에서의 Rust

FART를 만들게 된 동기 중 일부는 Java로 작성된 기존 서비스들을 교체하는 것이었습니다. 이를 잠시 고민한 후, 우리는 이러한 서비스들을 하나의 Rust 서비스로 통합하여 런타임 오버헤드를 줄이기로 결정했습니다. FART를 자주 배포하지 않기 때문에 이는 수용 가능한 거래였습니다. FART는 LTO로 컴파일되므로 정말 잘 활용할 수 있습니다.

우리는 오랜 시간 동안 다양한 GC 등을 사용하여 오래된 Java 시스템을 조정하려고 노력했으며, 결국 async Rust + Mimalloc이 동일한 하드웨어에서 훨씬 낮은 메모리 요구 사항으로 훨씬 더 나은 성능을 보여준다고 결정하여 전환하기로 했습니다.

Rust는 공유 힙과 잠금을 사용하는 네트워크 관련 코드에 정말 유용하다는 것이 밝혀졌습니다. 그러나 런타임 문제에 대해 완벽하지는 않습니다. LLM이 Rust로 작성한 코드는 데드락에 상당히 취약하며, 이를 극복하는 방법은 시스템을 이해하기 쉬운 상태 기계로 설계하는 것이며, 단순히 async/await의 집합체가 아닙니다.

FART 마스터

각 배포에는 자체 FART 마스터가 포함되어 있습니다. 마스터는 크론, 웹훅 등을 조정하는 역할을 맡고 있습니다.

고객 영향

FART 시스템은 이제 약 1년 동안 운영되고 있습니다. 최근에야 액티브-액티브 배포로의 마이그레이션을 진행했습니다. 지역 간 자신의 쓰기를 읽는 데 일부 영향이 있으며, 이는 위의 링크된 블로그 게시물 및 문서에서 다루어집니다.

FART는 배경에서 조용히 작동하지만, 그 존재는 항상 느껴질 것입니다. 우리는 귀하의 사용 사례에 대해 우리의 시스템이 더 빠르기를 바랍니다(데이터의 변경 결과로 이어지는 대부분의 사용자 작업은 일부 지역에서 더 빨라질 것입니다).

배포

배포는 서비스 자체를 배포하는 데 사용하는 동일한 글로벌 오케스트레이션 시스템을 사용합니다. FART 문서는 Sloperators가 배포를 절대적으로 신뢰하지 말고, 릴리스하기 전에 항상 페이로드를 검증해야 한다고 권장합니다.

배포 후 FART 경고는 에스컬레이션 정책을 따릅니다: 먼저 방, 다음 층, 마지막으로 건물입니다.

결론

인터넷은 튜브의 연속이라고 하지만, 실제로는 음푹 음푹 소리의 연속입니다.

모든 주요 릴리스와 마찬가지로, 우리는 이 변경 사항을 최적화하고 테스트하며 제대로 릴리스하는 데 시간을 할애할 수 있어 기쁘게 생각합니다. 우리는 앞으로 다가올 일들에 대해 기대하고 있습니다. 패스트코멘트는 이 작업 덕분에 더 나은 확장성과 더 나은 가동 시간을 가질 것입니다. FART 운용 매뉴얼에서는 이렇게 말합니다: "무언가 냄새가 나면, 무언가를 말하세요". 문제를 발견하시면 아래에 알려주십시오.