fbcode 패턴 모음 — folly 사용의 실전
Meta fbcode 코드 리뷰에서 반복적으로 등장하는 folly 사용 패턴 — overview + 시리즈 마무리.
89개의 포스트 · 1/4 페이지
Meta fbcode 코드 리뷰에서 반복적으로 등장하는 folly 사용 패턴 — overview + 시리즈 마무리.
folly::observer — read mostly 값의 atomic refresh, hot config·feature flag·LB weight 같은 패턴의 표준.
CancellationSource/Token의 전파 모델 — coroutine·Future·callback 트리에서 협력적 취소.
folly::AsyncIO와 IoUringBackend — kernel async disk I/O, callback과 coroutine 통합.
folly::io::Codec — IOBuf 기반 통합 compression API. zstd/lz4/snappy를 같은 인터페이스로.
RecordIO의 frame 포맷, checksum, mid-file 복구 — append-only log 파일의 표준 패턴.
DynamicConverter의 역할 — folly::dynamic과 user struct 사이 boilerplate 없는 양방향 변환.
folly::demangle의 역할 — C++ mangled name을 읽기 쉬운 형식으로, crash log와 typeid 출력에 필수.
folly::format의 historical 위치, fmt와의 관계, std::format으로의 마이그레이션 경로.
MicroSpinLock의 1-byte 표현, sleep 없는 순수 spin — 짧은 critical section 전용.
MicroLock의 1-byte 표현 — futex 기반 lock으로 std::mutex(40+ byte)의 메모리 비용 회피.
Indestructible<T>의 동기 — Meyers singleton의 static deinitialization 함정과 그 회피.
folly::Init의 역할 — gflags 파싱, signal handler, glog 설정, exit handler 통합.
SpookyHashV2의 ARX (Add/Rotate/Xor) 기반 빠른 hash — F14의 hasher 기본 후보.
Fingerprint의 polynomial Rabin-Karp 기반 hash — sharding, dedup, content addressing.
Uri의 RFC 3986 파싱, query string 추출, scheme/host/path 분해 — 표준에 없는 빈자리.
Range<Iter>의 설계, StringPiece의 일반화, std::span / std::string_view와의 관계.
언제 Try, 언제 Expected — 비동기 결과 슬롯과 도메인 오류 표현의 명확한 분리.
Try<T>의 세 상태 (value/exception/empty), Future 내부에서의 역할, exception_wrapper와의 관계.
Expected<T, E>의 monadic API, std::expected와의 차이, absl::StatusOr와의 비교 — 예외 없는 에러 표현.
coro::Baton과 coro::Mutex — thread를 block하지 않고 코루틴만 suspend하는 동기화 프리미티브.
blockingWait, collectAll, collectAllRange — sync 경계 연결과 병렬 합성, deadlock 회피 규칙.
AsyncGenerator<T>의 pull-based 모델, co_yield, for co_await — 비동기 iterator의 표준 후보 패턴.
Task<T>의 lazy start, executor 바인딩, scheduleOn, 값/예외 전파 — production async의 기본 단위.