이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 12540|회답: 0

PayPal은 단 8개의 가상 머신으로 하루에 수십억 건의 거래까지 확장합니다

[링크 복사]
게시됨 2019. 9. 25. 오후 4:11:58 | | | |
전통적으로 하루에 10억 건의 거래를 처리하는 시스템은 수백 대의 VM이 필요했지만, PayPal은 단 8대의 VM만으로도 모든 것을 처리하며, 90% CPU 사용률로 빠른 응답을 제공합니다. 이는 PayPal이 이전에 달성한 적 없는 거래 밀도이며, 프로세스 완성 시간은 1/10의 1에 불과해 조직이 컴퓨팅 인프라를 확장하지 않고도 성장에 맞춰 대응할 수 있도록 도와주고 비용을 절감합니다. 이건 어떻게 하는 거죠?



PayPal은 시스템을 Akka 기반 액터 모드로 전환했습니다. Squbs: PayPal은 앱 개발에 새로운 반응적 접근 방식을 취했습니다 (하이퍼링크 로그인이 보입니다.PayPal은 이 과정의 세부 사항을 설명합니다. 이제 Squbs를 오픈소스로 공개해 GitHub에 게시했습니다 (하이퍼링크 로그인이 보입니다.)。

프로젝트가 직접 접근해야 할 때, 상태 기반 서비스 모델은 여전히 충분한 주목을 받지 못합니다. 상태 기반 서비스에 대해 더 알고 싶다면, 지금 확장 가능한 상태 기반 서비스를 계속 구축해야 하는 이유를 읽어보시길 권장합니다 (하이퍼링크 로그인이 보입니다.이 기사는 케이티 맥카프리의 연설을 바탕으로 작성되었습니다. 이 글이 설득력이 없다면, Akka의 경쟁사인 Erlang을 사용해 매우 높은 처리량을 제공하는 WhatsApp도 있습니다: 190억 달러 규모의 WhatsApp 아키텍처 (하이퍼링크 로그인이 보입니다.)。

위 기사를 추천하는 이유는 PayPal이 아키텍처에 대한 상세한 소개를 제공하지 않고, 왜 Akka를 선택했는지와 Akka로 마이그레이션의 이점에 더 많은 시간을 할애하기 때문입니다. 하지만 이 글은 여전히 '정교한 길을 벗어나는' 실천에 대한 귀중한 격려와 시범을 제공합니다.

서비스에 많은 가상 머신을 사용하는 것이 뭐가 문제인가요?

  • 매우 낮은 처리량, 매우 작은 가상 머신으로 서비스를 운영하세요. 액터 기반 반응형 시스템의 가장 큰 장점은 컴퓨팅 자원을 더 효율적으로 활용할 수 있어 시스템 크기를 크게 줄이고 전통적인 방식의 '단순하고 조잡한' 자동 확장을 피할 수 있다는 점입니다.
  • 네트워크와 라우팅 인프라에 큰 부담을 줍니다. 서비스가 더 상호 연결되는 경향이 있기 때문에 요청이 많은 네트워크 홉을 거쳐야 할 수 있으며, 이는 지연 시간을 증가시키고 사용자 경험이 저하됩니다.
  • 크기가 클수록 비용이 더 비싸집니다. 수백 대의 가상 머신을 가진 서비스는 관리, 모니터링, 비효율적인 캐싱 측면에서 높은 고유 비용을 안고 있습니다.
  • 작을수록 더 민첩합니다. 수백 대의 가상 머신에 서비스를 배포하는 것은 시간이 많이 소요되는 과정입니다.
  • 각 가상 머신에서 더 많은 CPU를 활용하세요. CPU는 더 이상 속도를 높일 수 없기 때문에, 각 가상 머신에서 더 많은 CPU를 더 효율적으로 활용할 수 있어야 합니다.
  • 마이크로서비스는 유지보수가 쉽고 구축이 빠른 느슨하게 결합된 나노서비스로 구축되어야 합니다. 복잡한 시스템을 다루고 싶어 하는 사람은 없고, 코드 계층을 깊이 파고들지 않고도 다양한 서비스의 역할을 더 잘 파악할 수 있어야 합니다.


이러한 요소들을 고려하여 PayPal은 다음과 같은 시스템을 구축하고자 했습니다:

  • 수백 개의 노드로 수평적으로 확장할 뿐만 아니라, 더 많은 프로세서로 확장하여 하루에 수십억 건의 요청을 처리할 수 있는 목표도 달성할 수 있습니다.
  • 지연이 낮고 매우 세밀한 제어가 가능합니다.
  • 실패 앞에서도 회복력을 가지세요.
  • 서비스 경계의 유연한 조정.
  • 프로그래밍 모델과 문화, 그리고 더 단순한 오류 및 오류 처리 메커니즘을 통해 확장성과 단순성을 촉진합니다.


PayPal이 더 '얇은' 스택을 사용하고 싶어 하며, 스택에 많은 기술과 다양한 수준의 움직이는 부품이 포함되길 원하지 않는 것은 분명합니다. 일반적으로 아카 및 상태 기반 시스템은 이러한 요구에 매우 적합하며, 대형 부품 스택을 하나의 기술로 '분해'할 수 있습니다. PayPal이 Erlang보다 Akka를 선택한 이유는 Java가 Java 위에 기반을 두고 더 많은 경험을 가지고 있기 때문입니다. 많은 사람들에게 Erlang을 처음부터 배우는 것은 현실적이지 않습니다.

아카와 함께라면 다음과 같은 점이 있습니다:

  • 설명하기 쉬운 코드를 작성하세요
  • 테스트하기 쉬운 코드를 작성하세요
  • 오류 및 고장 시나리오는 JVM을 사용하는 전통적인 모드보다 더 자연스럽게 처리됩니다
  • 더 빠르고 탄력적이며 단순한 코드를 작성하여 오류를 더 유창하게 처리하고 버그 수를 줄이세요


PayPal은 즉시 Akka를 기반으로 자체 프레임워크인 Squbs를 작성했으며, 이는 'Cubes'와 운율을 맞출 때 사용되었습니다. 이를 통해 "큐브"라 불리는 나노서비스 구축을 위한 모듈식 기술 계층을 만들 수 있습니다. 큐브들은 대칭적이며, 서로 다른 큐브 간의 의존성도 대칭적이고 느슨하여 Akka가 이미 제공하는 메시지 인터페이스만 노출됩니다.

또한 AKKA 코드를 도입할 때 프로그래머들이 겪는 어려움도 설명하는데, Akka/Scala에 훈련된 사람을 고용해야 할 수도 있습니다.

대부분의 서비스는 요청을 받고, 데이터베이스를 호출 및 읽고 쓰며, 다른 서비스를 호출하고, 규칙 엔진을 호출하고, 캐시에서 데이터를 얻고, 캐시에 쓰기 등 유사한 목적을 가지고 있기 때문입니다... 그 결과, 오케스트레이터 패턴(Orchestrator Pattern)과 영구 스트림(Perpetual Stream)과 같은 패턴을 통해 서비스를 추상화할 수 있습니다.

Squbs는 PayPal이 Akka를 기반으로 반응형 애플리케이션을 만드는 표준 관행이 되었습니다. 팀이 아직 상태 기반 시스템을 고려하지 않았다면, PayPal, Facebook, Uber, Microsoft에서 잘 작동하므로 시도해볼 만합니다.







이전의:크롬을 싫어하게 만드는 세 가지 이유
다음:vs 폴더를 생성하고, 해답을 생성할 때 bin 파일 아래에 아무도 없습니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com