# XFaaS: 매일 수조(Trillion)건 호출을 처리하는 Meta의 서버리스 플랫폼

> Clean Markdown view of GeekNews topic #11527. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=11527](https://news.hada.io/topic?id=11527)
- GeekNews Markdown: [https://news.hada.io/topic/11527.md](https://news.hada.io/topic/11527.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2023-10-26T10:25:01+09:00
- Updated: 2023-10-26T10:25:01+09:00
- Original source: [engineercodex.substack.com](https://engineercodex.substack.com/p/meta-xfaas-serverless-functions-explained)
- Points: 13
- Comments: 0

## Topic Body

- Meta가 내부적으로 사용하는 FaaS 플랫폼   
- 수십 개의 데이터센터 리전들에 분산된 10만 대 이상의 서버에서 매일 수조 건의 함수 호출을 처리  
- AWS Lambda, Azure Functions 보다 효율적이라고 주장하며 "XFaaS: Hyperscale and Low Cost Serverless Functions" 논문을 통해서 공개   
### 흥미로운 통계 및 시사점  
- 논문의 핵심은 소프트웨어로 하드웨어 사용을 최적화하여 서버리스 성능을 개선할 수 있다는 것  
- 메타는 Serverless Functions의 스타트업 오버헤드 낭비를 인식하고, 모든 워커가 시작 오버헤드 없이 모든 기능을 즉시 실행할 수 있는 Universal Worker를 에뮬레이트하는 것을 목표로 함   
  - 이정도 대규모에서 하드웨어 비용은 막대하며 아주 작은 비율이라도 중요함   
- XFaaS는 사용자를 대면하지 않는 기능에만 사용됨. 서버리스 함수는 사용자 대면 기능에 일관되게 사용하기에는 가변 지연 시간이 너무 많음  
- XFaaS의 클라이언트는 매우 급격한 방식으로 함수 호출을 실행. 피크 수요는 오프 피크 수요보다 4.3배 더 높음   
  - 한 예로 15분 이내에 2,000만 건의 함수 호출이 XFaaS에 제출되기도 함   
  - Meta는 급증하는 함수에도 패턴이 있다는 것을 발견하고, 이를 활용하여 워크로드에서 급증하는 함수를 더 예측 가능하게 만들었음   
### XFaaS 는 얼마나 효율적인가?   
- 업계 평균보다 훨씬 높은 66%의 일일 평균 CPU 사용률을 달성  
- 시간(함수 지연을 통해)과 공간(부하가 적은 데이터센터로 전송하여)을 사용하여 부하를 효율적으로 분산  
  > 메타는 많은 기능을 - 부하와 비용을 예측할 수 있는 - 사용량이 많지 않은 시간대에 예약하도록 계속 전환중   
- 내부 클라우드이기 때문에 Meta는 동일한 프로세스에서 여러 사용자의 여러 기능을 실행하는 등 여러 가지 고유한 최적화를 수행할 수 있음   
- 대부분의 함수는 1초 이내에 실행되지만 모든 함수가 그렇지는 않음   
### XFaaS로 해결한 문제들   
- 문제: 긴 콜드 스타트 시간  
  - 컨테이너가 너무 일찍 종료되면 다음 호출을 위해 전체 컨테이너를 다시 초기화해야 함   
  - 컨테이너가 너무 늦게 종료되면 유휴 상태로 남아 귀중한 컴퓨팅 리소스를 낭비하게 됨   
  - 해결책: XFaaS는 JIT 컴파일과 같은 방법을 사용하여 모든 워커가 모든 함수를 즉시 실행할 수 있도록 근사화(approximate)함  
- 문제: 심한 부하 분산  
  - 오버-프로비저닝으로 인해 추가 하드웨어 비용이 발생하거나 오버프로비저닝 시 시스템 속도가 느려짐   
  - 해결책: XFaaS는 delay-tolerant한 함수 실행을 사용량이 적은 시간까지 연기하고 전 세계 데이터센터 리전으로 함수 호출을 분산  
- 문제: 다운스트림 서비스에 과부하가 걸림   
  - 예: 사용자를 대면하지 않는 함수의 호출이 급증하여 사용자를 대면하는 온라인 서비스가 중단된 적이 있음   
  - 해결책: XFaaS는 TCP 혼잡 제어와 유사한 메커니즘을 사용하여 함수 실행을 조절  
### 일반 FaaS 와의 비교 (AWS Lambda, Google Cloud Functions, Azure Functions)  
- 퍼블릭 클라우드 FaaS는 함수 실행을 단일 데이터센터 리전으로 제한하는 반면, XFaaS는 함수 호출을 전 세계로 분산할 수 있어 로드 밸런싱을 개선할 수 있음   
- FaaS 플랫폼은 하드웨어 사용률을 간과한 채 지연 시간을 줄이는 데 우선 초점을 맞춤. XFaaS는 하드웨어 사용률과 함수 호출의 처리량에 중점을 둠   
- 퍼블릭 클라우드에 도움이 될 수 있는 XFaaS 기술들   
  - 호출자가 함수 실행 시작 시간을 지정할 수 있도록 허용   
  - 함수 소유자가 완료 기한에 관한 서비스 수준 목표(SLO)를 설정할 수 있음 (SLO가 낮으면 더 나은 실행시간을 위해 지연 가능)  
  - 함수 소유자가 함수에 중요도 수준을 지정할 수 있도록 허용  
- 퍼블릭 클라우드는 XFaaS처럼 여러 사용자의 기능을 동일한 프로세스에서 실행할 수 없지만, 대규모 클라우드 고객은 가상 프라이빗 클라우드에서 XFaaS 접근 방식을 채택할 수 있음   
- 소수의 메타 팀이 XFaaS 용량의 상당 부분을 소비. 퍼블릭 클라우드를 사용하는 유사한 대규모 고객도 XFaaS 전략의 이점을 누릴 수 있을 것   
### Background: 가정 및 요구 사항  
- 가정  
  - 핵심 인사이트는 대부분의 XFaaS 기능이 자동화된 워크플로우에 의해 트리거되며, 지연이 있어도 괜찮다는 것  
  - 이를 통해 XFaaS는 시간(기능을 지연시킴으로써)과 공간(부하가 적은 데이터센터로 전송함으로써)에 걸쳐 부하를 분산 가능   
  - XFaaS는 PHP, Python, Erlang, Haskell의 런타임과 모든 언어에 대한 일반 컨테이너 기반 런타임을 지원  
  - 함수에는 함수 이름, 인수, 런타임, 중요도, 실행 시작 시간, 실행 완료 기한, 리소스 할당량, 동시성 제한, 재시도 정책 등 개발자가 설정할 수 있는 여러 가지 속성이 있으며, 실행 완료 기한은 초에서 24시간까지 설정 가능   
  - XFaaS는 지역마다 하드웨어 용량이 다르므로 로드 밸런싱은 이를 고려해야 함   
- 워크로드 유형  
  - 메타는 세 가지 유형의 워크로드를 XFaaS에서 지원  
    - 대기열 트리거 함수  
    - 이벤트 트리거 함수(데이터 웨어하우스 및 데이터 스트림 시스템의 데이터 변경 이벤트)  
    - 타이머 트리거 함수(미리 설정된 타이밍에 자동 실행)  
  - XFaaS는 비사용자 대면 기능인 비동기 추천 시스템, 로깅, 생산성 봇, 알림 등에 사용됨   
### 전체 아키텍처  
(이 부분은 너무 길고 논문의 내용을 거의 그대로 옮긴 것이라 생략합니다.)

## Comments



_No public comments on this page._
