The Netflix Cosmos Platform -번역

Netflix Cosmos 플랫폼

조정 된 기능은 microservice입니다

으로프랭크 샌 미구엘Cosmos 팀을 대신하여

Introduction

COSMOS는 비동기 워크 플로우 및 서버리스 함수로 MicroServices의 최상의 측면을 결합한 컴퓨팅 플랫폼입니다.그것의 달콤한 지점은 복잡한, 복잡한 계층 적 워크 플로우를 통해 조정 된 리소스 집약적 인 알고리즘을 분량에서 몇 년 사이에 포함하는 응용 프로그램입니다.그것은 한 번에 수십만 개의 CPU를 소비하는 높은 처리량 서비스와 인간이 계산 결과를 기다리고있는 대기 시간에 민감한 작업 부하를 모두 지원합니다.

코스모스 서비스

이 기사에서는 우리가 코스모스를 지은 이유, 어떻게 작동하는지, 우리가 방해받은 것들 중 일부를 공유하는 이유를 설명합니다.

배경

Netflix의 미디어 클라우드 엔지니어링 및 인코딩 기술 팀은 시스템을 공동으로 운영하여 수신 미디어 파일을 파트너와 스튜디오에서그들을 놀아 라모든 장치에서.이 시스템의 첫 번째 세대는 2007 년 스트리밍 출시와 함께 살아갔습니다. 2 세대 추가 된 규모는 작동하기가 매우 어렵습니다.세 번째 세대,다시로드되었습니다, 약 7 년 동안 온라인이었으며 안정적이지 않은 것으로 입증되었습니다.대규모 확장 가능…에

리로드가 설계되었을 때 우리는 제한된 컴퓨팅 클러스터를 운영하는 소규모 개발자 팀이었고 하나의 사용 사례에 중점을 둡니다 : 비디오 / 오디오 처리 파이프 라인.시간이 3 배 이상의 개발자의 수를 통과 할 때, 우리의 사용 사례의 폭과 깊이가 확장되었고, 우리의 규모는 10 배 이상 증가했습니다.모 놀리 식 아키텍처는 새로운 기능의 전달을 크게 느려졌습니다.우리는 더 이상 모든 사람들이 새로운 기능을 구축하고 배포하는 데 필요한 전문 지식을 소유 할 것을 기대할 수 없었습니다.생산 문제를 다루는 것은 인프라 코드가 모두 응용 프로그램 코드와 섞여 있기 때문에 모든 개발자에게 세금을 쌓은 값 비싼 잡초가되었습니다.우리가 소규모 팀이었을 때 우리를 잘 게재 한 중앙 집중식 데이터 모델은 책임이되었습니다.

우리의 대응은 워크 플로우 중심 마이크로 서비스를위한 플랫폼 인 Cosmos를 만드는 것이 었습니다.1 차 목표는 우리의 현재의 역량을 보존하는 것이 었습니다.

  • 관측 가능 – 내장 로깅, 추적, 모니터링, 경고 및 오류 분류를 통해.
  • 모듈성 – 서비스를 구성하고 컴파일 타임 및 런타임 모듈성을 모두 사용하는 의견이있는 프레임 워크입니다.
  • 생산성 – 전문화 된 테스트 러너, 코드 생성기 및 명령 줄 인터페이스를 포함한 로컬 개발 도구.
  • 배달 – 파이프 라인의 완전 관리 된 연속 배달 시스템, 지속적인 통합 작업 및 종료 테스트 종료 시스템.끌어 오기 요청을 합병하면 수동 개입 없이는 생산할 수 있습니다.

우리는 그것이 있었지만, 우리는 또한 확장 성, 신뢰성, 보안 및 기타 시스템 자질을 개선했습니다.

개요

코스모스 서비스는 마이크로 서비스가 아니지만 유사점이 있습니다.전형적인 마이크로 서비스는 요청 부하를 기반으로 자동 입학을 기반으로하는 상태 비 저장 비즈니스 로직이있는 API입니다.API는 다른 시스템에서 응용 프로그램 데이터 및 이진 종속성을 분리하면서 동료와 강력한 계약을 제공합니다.

전형적인 마이크로 서비스

코스모스 서비스는 마이크로 서비스의 강력한 계약 및 분리 된 데이터 / 종속성을 유지하지만 다단 워크 플로우 및 계산식 집약적 인 비동기식 서버가없는 기능을 추가합니다.일반적인 Cosmos 서비스의 아래 다이어그램에서 클라이언트는 비디오 인코더 서비스 API 레이어에 요청을 전송합니다.일련의 규칙은 워크 플로 단계 단계와 서버가없는 함수 집합 전원 특정 알고리즘을 조정합니다.기능은 Docker 이미지로 패키지화되어 있으며 자체 미디어 특정 이진 종속성 (예 : 데비안 패키지)을 가져옵니다.큐 크기에 따라 크기가 조정되며 수만 개의 다른 용기를 사용할 수 있습니다.요청은 몇 시간 또는 며칠이 걸릴 수 있습니다.

전형적인 코스모스 서비스

우려의 분리

코스모스에는 두 가지 분리가 있습니다.한편으로는 API, Workflow 및 Serverless 함수간에 논리가 나뉩니다.반면에 논리는 응용 프로그램과 플랫폼간에 분리됩니다.플랫폼 API는 분산 컴퓨팅의 세부 사항을 숨기면서 응용 프로그램 개발자에게 미디어 특정 추상화를 제공합니다.예를 들어, 비디오 인코딩 서비스는 API, 워크 플로 및 함수의 scale-agnostic 인 구성 요소로 구성됩니다.그들이 달리는 규모에 대한 특별한 지식은 없습니다.이러한 도메인 별 특정 스케일 – 불가지론 구성 요소는 3 개의 맨 위에 구축됩니다.규모 인식작업 분배의 세부 사항을 처리하는 Cosmos 서브 시스템 :

  • Optimus, API 레이어는 내부 비즈니스 모델에 외부 요청을 매핑합니다.
  • 플라토, 비즈니스 규칙 모델링을위한 워크 플로 계층입니다.
  • 지층, 무늬가없고 계산 집약적 인 기능을 실행하기 위해 호출되는 서버가없는 계층입니다.

서브 시스템은 모두 타임 스톤을 통해 서로 비동기 적으로 서로 통신하며, 하이 스케일, 낮은 대기 시간 우선 순위 큐 시스템.각 하위 시스템은 서비스의 다른 관심사를 해결하고 목적으로 구축 된 관리 지속적인 전달 프로세스를 통해 독립적으로 배포 할 수 있습니다.이러한 우려를 분리하면 Cosmos 서비스를 작성, 테스트 및 운영하기가 더 쉽습니다.

플랫폼 및 응용 프로그램의 분리

코스모스 서비스 요청

Cosmos 서비스 요청의 추적 그래프

위의 그림은 Nirvana의 스크린 샷, 우리의 관찰 능력 포털입니다.그것은 Cosmos (이 경우 비디오 인코더 서비스)에서 일반적인 서비스 요청을 보여줍니다.

  1. 인코딩에 대한 하나의 API 호출이 있으며, 비디오 소스와 레시피가 포함되어 있습니다.
  2. 비디오는 31 덩어리로 나뉩니다. 31 개의 인코딩 기능이 병렬로 실행됩니다.
  3. 어셈블 함수가 한 번 호출됩니다
  4. 인덱스 기능이 한 번 호출됩니다
  5. 워크 플로가 8 분 후에 완료됩니다

서비스 레이어징

Cosmos는 서비스의 분해 및 레이어징을 지원합니다.결과적으로 모듈 식 아키텍처를 통해 팀은 전문 분야에 집중하고 API를 방출하고주기를 방출 할 수 있습니다.

예를 들어, 위에서 언급 한 비디오 서비스는 장치에서 재생할 수있는 스트림을 만드는 데 사용되는 많은 것 중 하나 일뿐입니다.이러한 서비스는 검사, 오디오, 텍스트 및 패키징을 포함하여 상위 수준의 서비스를 사용하여 조율됩니다.이들 중 가장 크고 가장 복잡하고 이들은 스튜디오에서 출처를 가져 와서 Netflix 서비스에서 재생할 수있는 Tapas입니다.또 다른 높은 수준의 서비스는 마케팅 클립이나 일일 생산 편집 프록시와 같은 스튜디오 운영에 사용되는 Sagan입니다.

코스모스 서비스의 레이어링

프로덕션 스튜디오에서 새 제목이 도착하면 검사를 수행하고 비디오를 인코딩하는 요청 (여러 해상도, 자질 및 비디오 코덱), 오디오 (여러 자질 및 코덱)를 인코딩하고 자막 (많은 언어)을 생성하는 요청을 조정하는 타파스 워크 플로를 트리거합니다.및 패키지 결과 출력 (다중 플레이어 형식).따라서 TAPAS에 대한 단일 요청은 다른 코스모스 서비스와 수천 개의 계층 기능 호출에 수백 가지의 요청을 초래할 수 있습니다.

아래 추적은 최상위 서비스의 요청이 낮은 수준의 서비스로 내려갈 수있는 방법의 예를 보여줍니다.이 경우 요청은 8 가지 다른 코스모스 서비스와 9 가지의 계층 기능을 포함하는 수백 가지의 다른 조치가 완료 될 때 24 분이 걸렸습니다.

여러 레이어를 통해 서비스 요청의 추적 그래프

워크 플로우 규칙!

또는 우리는 말해야합니까?워크 플로우 규칙~을 빼앗아가는 것플라톤은 서비스 개발자가 도메인 논리를 정의하고 상태 비 저장 함수 / 서비스를 조정할 수있는 프레임 워크를 제공하여 Cosmos에서 모든 것을 함께 묶는 접착제입니다.Optimus API 레이어에는 워크 플로를 호출하고 상태를 검사하는 기본 기능이 내장되어 있습니다.Stratum Serverless Layer는 서버없는 함수를 쉽고 직관적으로 호출하기 위해 강력한 유형의 RPC 클라이언트를 생성합니다.

Plato는 우리의 알고리즘의 비동기적이고 계산 된 집중적 인 성격을 빌려하는 전방 체인 규칙 엔진입니다.절차 워크 플로우 엔진과 달리Netflix의 도체Plato를 사용하면 “항상 켜짐”인 워크 플로를 쉽게 만들 수 있습니다.예를 들어,보다 나은 인코딩 알고리즘을 개발할 때, 규칙 기반 워크 플로는 새로운 워크 플로를 트리거하고 관리 할 필요없이 기존 비디오 업데이트를 자동으로 관리합니다.또한 워크 플로가 다른 서비스를 호출 할 수 있으므로 위에서 언급 한 서비스 레이어를 사용할 수 있습니다.

플라톤은 다단계 시스템입니다 (사용법Apache Karaf.), 워크 플로우 운영의 운영 부담을 크게 줄입니다.사용자는 자신의 규칙을 자신의 소스 코드 저장소로 쓰고 테스트 한 다음 컴파일 된 코드를 플라톤 서버에 업로드하여 워크 플로를 배포합니다.

개발자는 EmiRax로 작성된 일련의 워크 플로우 인 Emirax로 작성된 도메인 특정 언어 인 워크 플로를 지정합니다.각 규칙에는 4 개의 섹션이 있습니다.

  • 일치 :이 규칙에 대해 만족 해야하는 조건을 트리거합니다.
  • 조치 :이 규칙이 트리거 될 때 실행될 코드를 지정합니다.이는 요청을 처리하기 위해 계층화 함수를 호출하는 위치입니다.
  • 반응 : 조치 코드가 성공적으로 완료 될 때 실행될 코드를 지정합니다.
  • 오류 : 오류가 발생했을 때 실행할 코드를 지정합니다.

이러한 각 섹션에서 일반적으로 먼저 워크 플로우의 변경 사항을 기록한 다음 워크 플로우를 실행하거나 실행 결과를 반환하는 것과 같이 워크 플로를 전달하는 단계를 수행합니다 (자세한 내용은이 프리젠 테이션짐마자

대기 시간에 민감한 응용 프로그램

Sagan과 같은 코스모스 서비스는 사용자가 직면하기 때문에 대기 시간에 민감합니다.예를 들어, 소셜 미디어 게시물에서 일하는 아티스트는의 최신 시즌에서 비디오를 클리핑 할 때 오랜 시간을 기다리고 싶지 않습니다.돈을 강조하고…에계층의 경우, 대기 시간은작업을 수행 할 시간더하기컴퓨팅 리소스를 얻는 시간…에일이 매우 파열되면 (종종 사례), “리소스를 얻는 시간“구성 요소가 중요한 요소가됩니다.일러스트레이션을 위해 쇼핑을 할 때 일반적으로 구매할 것들 중 하나가 화장지입니다.일반적으로 장바구니에 문제가없고 체크 아웃 라인을 통과하는 데 아무런 문제가 없으며 전체 프로세스가 30 분이 걸립니다.

자원 희소성

그런 다음 어느 날 나쁜 바이러스 일이 일어납니다여러분동시에 더 많은 화장지가 필요합니다.너의화장지 대기 시간전반적인 수요가 사용 가능한 용량을 초과했기 때문에 30 분에서 2 주간의 경우코스모스 어플리케이션 (특히 층수 함수)은 파열 및 예측 불가능한 수요에 직면하여 동일한 문제가 있습니다.stratum 관리기능 실행 대기 시간몇 가지 방법으로 :

  1. 자원 풀.최종 사용자는 자신의 비즈니스 유스 케이스에 대해 계층 컴퓨팅 리소스를 예약 할 수 있으며, 사용자 그룹이 리소스를 공유 할 수 있도록 클립 풀이 계층 적입니다.
  2. 따뜻한 용량…에최종 사용자는 계층에서 시동 대기 시간을 줄이기 위해 수요가 발생하기 위해 컴퓨팅 리소스 (예 : 컨테이너)를 요청할 수 있습니다.
  3. 마이크로 배치…에Stratum은 또한 시동 대기 시간을 줄이기 위해 Apache Spark와 같은 플랫폼에서 발견되는 트릭 인 마이크로 배치를 사용합니다.아이디어는 많은 기능 호출에 대한 시작 비용을 전파하는 것입니다.기능을 10,000 번 입력하면 10,000 개의 컨테이너에서 한 번 실행되거나 1000 개의 컨테이너에서 각각 10 배로 실행될 수 있습니다.
  4. 우선 순위.대기 시간 저 대기 시간에 대한 욕구로 비용을 균형을 조정할 때, 보통 중간 어딘가에 착륙하는 것이 일반적으로 전형적인 버스트를 다루는 충분한 자원이지만 가장 낮은 대기 시간으로 가장 큰 버스트를 처리하기에 충분하지 않습니다.업무의 우선 순위를 지정함으로써 응용 프로그램은 자원이 부족한 경우에도 가장 중요한 작업이 낮은 대기 시간으로 가장 중요한 작업을 처리 할 수 있습니다.Cosmos 서비스 소유자는 최종 사용자가 우선 순위를 설정하거나 API 계층 또는 워크 플로에서 스스로 설정할 수 있습니다.

처리 민감한 응용 프로그램

Tapas와 같은 서비스는 많은 양의 컴퓨팅 리소스 (예 : 하루 당 수백만의 CPU 시간)를 소비하고 개별 작업을 완료하는 데 시간이 아닌 시간 또는 며칠 동안 작업 완료와 관련하여 더 관련이 있습니다….에즉, 서비스 수준 목표 (SLO)는하루에 작업작업 당 비용대신초당 작업…에

처리량에 민감한 작업 부하의 경우 가장 중요한 SLO는 Stratum Serverless Layer에서 제공하는 것입니다.Stratum, 그 꼭대기에 지어졌습니다Titus 컨테이너 플랫폼이를 위해 민감한 작업 부하가 유연한 자원 스케줄링을 통해 “기회 주의적”계산 리소스를 사용할 수 있습니다.예를 들어, 서버가없는 함수 호출 비용은 최대 1 시간까지 기다릴 수있는 경우가 낮아질 수 있습니다.

strangler 그림

우리는 레거시 시스템을 재 장전하는 것처럼 크고 복잡한 것처럼 유산 시스템을 움직이는 것으로 알고 있었지만, 실패한 재 공학 프로젝트의 파편이 흩어져있는 위험한 틈에 큰 도약이 될 것이라는 것을 알고 있었지만, 우리가 뛰어 내려야하는 질문은 없었습니다.위험을 줄이려면 우리는 그를 채택했습니다strangler 무화과 패턴새로운 시스템이 오래된 시스템을 돌아서 결국 완전히 대체 할 수 있습니다.

아직도 배우는 것

우리는 2018 년에 코스모스를 건설하기 시작했으며 2019 년 초부터 생산 중이 었습니다. 오늘날 약 40 개의 코스모스 서비스가 있으며 더 많은 성장이 올 것으로 예상됩니다.우리는 여전히 중간 여정에 있지만 지금까지 우리가 배웠던 것의 몇 가지 주요 조명을 공유 할 수 있습니다.

그만큼Netflix 문화핵심 역할을 수행했습니다

Netflix 엔지니어링 문화는 유명하게 하향식 제어가 아닌 개인적인 판단을 유의합니다.소프트웨어 개발자는 위험을 감수하고 의사 결정을 내리는 자유와 책임을 모두 가지고 있습니다.우리 중 누구도 소프트웨어 설계자의 제목이 없습니다.우리 모두는 그 역할을합니다.이러한 맥락에서 우주가 적합하게 등장하고 현지 최적화 시점에서의 다른 시도에서 시작합니다.Optimus, Plato 및 Stratum은 독립적으로 잉태하여 결국 단일 플랫폼의 비전으로 합쳐졌습니다.팀의 응용 프로그램 개발자는 사용자 친화적 인 API 및 개발자 생산성에 중점을 둡니다.인프라와 미디어 알고리즘 개발자 간의 강력한 파트너십을 현실로 전환시킵니다.우리는 하향식 엔지니어링 환경에서 그것을 할 수 없었습니다.

microservice + workflow + serverless

우리는 “프로그래밍 모델”서버가없는 기능을 조정하는 워크 플로를 트리거하는 MicroServices“강력한 패러다임이 될 것입니다.대부분의 사용 사례에서 잘 작동하지만 일부 응용 프로그램은 추가 된 복잡성이 이점의 가치가없는 것으로 간단합니다.

플랫폼 사고 방식

대형 분산 응용 프로그램에서 “플랫폼 플러스 응용 프로그램”으로 이동하는 것은 주요 패러다임 변화였습니다.모두가 그들의 사고 방식을 바꾸어야했습니다.응용 프로그램 개발자는 일관성, 신뢰성 등을 대가로 일정량의 유연성을 포기해야했습니다. 플랫폼 개발자는 더 많은 공감을 개발하고 고객 서비스, 사용자 생산성 및 서비스 수준을 우선 순위를 지정해야했습니다.애플리케이션 개발자가 플랫폼 팀이 자신의 필요에 따라 적절하게 집중하지 않고 플랫폼 팀이 사용자 요구에 의해 지나치게 느껴지는 기타 시간을 느꼈던 순간이있었습니다.우리는 서로 열려 있고 정직하게함으로써 이러한 어려운 반점을 겪었습니다.예를 들어 최근의 회고전 이후, 우리는 개발자 경험, 신뢰성, 관찰 가능성 및 보안과 같은 크로스 커팅 시스템 특성에 대한 개발 트랙을 강화했습니다.

플랫폼이 승리합니다

우리는 개발자가 비즈니스 문제에 더 많은 시간을 보내고 인프라를 다루는 데 더 많은 시간을 보내고 개발자가 더 효과적이고 더 빠르고 더 빨리 일할 수 있도록하는 목표로 코스모스를 시작했습니다.때때로 목표는 어려운 것처럼 보였지만 우리는 우리가 희망 한 이득을보기 시작했습니다.개발자가 코스모스에서 가장 좋아하는 시스템 특성 중 일부는 전달, 모듈성 및 관찰 가능성 및 개발자 지원을 관리합니다.우리는 이러한 자질을 더 잘 만들기 위해 노력하고 있으며 현지 개발, 탄력성 및 테스트 가능성과 같은 약한 영역에서 일하고 있습니다.

미래의 계획

2021은 대다수의 일을 우주로 재로드 한 것으로, 더 많은 개발자와 훨씬 더 높은 부하로 옮겨가는 것처럼 Cosmos의 큰 해가 될 것입니다.우리는 새로운 유스 케이스를 수용하기 위해 프로그래밍 모델을 발전시킬 계획입니다.우리의 목표는 코스모스를 사용하기 쉽고,보다 탄력적이며 더 효율적이고 효율적으로 더욱 쉽게 사용할 수있는 것입니다.Cosmos가 작동하는 방법과 우리가 어떻게 사용하는 방법에 대한 자세한 내용은 자세한 내용을 알아보십시오.

The Netflix Cosmos Platform

The Netflix Cosmos Platform

Orchestrated Functions as a Microservice

by Frank San Miguel on behalf of the Cosmos team

Introduction

Cosmos is a computing platform that combines the best aspects of microservices with asynchronous workflows and serverless functions. Its sweet spot is applications that involve resource-intensive algorithms coordinated via complex, hierarchical workflows that last anywhere from minutes to years. It supports both high throughput services that consume hundreds of thousands of CPUs at a time, and latency-sensitive workloads where humans are waiting for the results of a computation.

A Cosmos service

This article will explain why we built Cosmos, how it works and share some of the things we have learned along the way.

Background

The Media Cloud Engineering and Encoding Technologies teams at Netflix jointly operate a system to process incoming media files from our partners and studios to make them playable on all devices. The first generation of this system went live with the streaming launch in 2007. The second generation added scale but was extremely difficult to operate. The third generation, called Reloaded, has been online for about seven years and has proven to be stable and massively scalable.

When Reloaded was designed, we were a small team of developers operating a constrained compute cluster, and focused on one use case: the video/audio processing pipeline. As time passed the number of developers more than tripled, the breadth and depth of our use cases expanded, and our scale increased more than tenfold. The monolithic architecture significantly slowed down the delivery of new features. We could no longer expect everyone to possess the specialized knowledge that was necessary to build and deploy new features. Dealing with production issues became an expensive chore that placed a tax on all developers because infrastructure code was all mixed up with application code. The centralized data model that had served us well when we were a small team became a liability.

Our response was to create Cosmos, a platform for workflow-driven, media-centric microservices. The first-order goals were to preserve our current capabilities while offering:

  • Observability — via built-in logging, tracing, monitoring, alerting and error classification.
  • Modularity — An opinionated framework for structuring a service and enabling both compile-time and run-time modularity.
  • Productivity — Local development tools including specialized test runners, code generators, and a command line interface.
  • Delivery — A fully-managed continuous-delivery system of pipelines, continuous integration jobs, and end to end tests. When you merge your pull request, it makes it to production without manual intervention.

While we were at it, we also made improvements to scalability, reliability, security, and other system qualities.

Overview

A Cosmos service is not a microservice but there are similarities. A typical microservice is an API with stateless business logic which is autoscaled based on request load. The API provides strong contracts with its peers while segregating application data and binary dependencies from other systems.

A typical microservice

A Cosmos service retains the strong contracts and segregated data/dependencies of a microservice, but adds multi-step workflows and computationally intensive asynchronous serverless functions. In the diagram below of a typical Cosmos service, clients send requests to a Video encoder service API layer. A set of rules orchestrate workflow steps and a set of serverless functions power domain-specific algorithms. Functions are packaged as Docker images and bring their own media-specific binary dependencies (e.g. debian packages). They are scaled based on queue size, and may run on tens of thousands of different containers. Requests may take hours or days to complete.

A typical Cosmos service

Separation of concerns

Cosmos has two axes of separation. On the one hand, logic is divided between API, workflow and serverless functions. On the other hand, logic is separated between application and platform. The platform API provides media-specific abstractions to application developers while hiding the details of distributed computing. For example, a video encoding service is built of components that are scale-agnostic: API, workflow, and functions. They have no special knowledge about the scale at which they run. These domain-specific, scale-agnostic components are built on top of three scale-aware Cosmos subsystems which handle the details of distributing the work:

  • Optimus, an API layer mapping external requests to internal business models.
  • Plato, a workflow layer for business rule modeling.
  • Stratum, a serverless layer called for running stateless and computational-intensive functions.

The subsystems all communicate with each other asynchronously via Timestone, a high-scale, low-latency priority queuing system. Each subsystem addresses a different concern of a service and can be deployed independently through a purpose-built managed Continuous Delivery process. This separation of concerns makes it easier to write, test, and operate Cosmos services.

Separation of Platform and Application

A Cosmos service request

Trace graph of a Cosmos service request

The picture above is a screenshot from Nirvana, our observability portal. It shows a typical service request in Cosmos (a video encoder service in this case):

  1. There is one API call to encode, which includes the video source and a recipe
  2. The video is split into 31 chunks, and the 31 encoding functions run in parallel
  3. The assemble function is invoked once
  4. The index function is invoked once
  5. The workflow is complete after 8 minutes

Layering of services

Cosmos supports decomposition and layering of services. The resulting modular architecture allows teams to concentrate on their area of specialty and control their APIs and release cycles.

For example, the video service mentioned above is just one of many used to create streams that can be played on devices. These services, which also include inspection, audio, text, and packaging, are orchestrated using higher-level services. The largest and most complex of these is Tapas, which is responsible for taking sources from studios and making them playable on the Netflix service. Another high-level service is Sagan, which is used for studio operations like marketing clips or daily production editorial proxies.

Layering of Cosmos services

When a new title arrives from a production studio, it triggers a Tapas workflow which orchestrates requests to perform inspections, encode video (multiple resolutions, qualities, and video codecs), encode audio (multiple qualities and codecs), generate subtitles (many languages), and package the resulting outputs (multiple player formats). Thus, a single request to Tapas can result in hundreds of requests to other Cosmos services and thousands of Stratum function invocations.

The trace below shows an example of how a request at a top level service can trickle down to lower level services, resulting in many different actions. In this case the request took 24 minutes to complete, with hundreds of different actions involving 8 different Cosmos services and 9 different Stratum functions.

Trace graph of a service request through multiple layers

Workflows rule!

Or should we say workflow rules? Plato is the glue that ties everything together in Cosmos by providing a framework for service developers to define domain logic and orchestrate stateless functions/services. The Optimus API layer has built-in facilities to invoke workflows and examine their state. The Stratum serverless layer generates strongly-typed RPC clients to make invoking a serverless function easy and intuitive.

Plato is a forward chaining rule engine which lends itself to the asynchronous and compute-intensive nature of our algorithms. Unlike a procedural workflow engine like Netflix’s Conductor, Plato makes it easy to create workflows that are “always on”. For example, as we develop better encoding algorithms, our rules-based workflows automatically manage updating existing videos without us having to trigger and manage new workflows. In addition, any workflow can call another, which enables the layering of services mentioned above.

Plato is a multi-tenant system (implemented using Apache Karaf), which greatly reduces the operational burden of operating a workflow. Users write and test their rules in their own source code repository and then deploy the workflow by uploading the compiled code to the Plato server.

Developers specify their workflows in a set of rules written in Emirax, a domain specific language built on Groovy. Each rule has 4 sections:

  • match: Specifies the conditions that must be satisfied for this rule to trigger
  • action: Specifies the code to be executed when this rule is triggered; this is where you invoke Stratum functions to process the request.
  • reaction: Specifies the code to be executed when the action code completes successfully
  • error: Specifies the code to be executed when an error is encountered.

In each of these sections, you typically first record the change in state of the workflow and then perform steps to move the workflow forward, such as executing a Stratum function or returning the results of the execution (For more details, see this presentation).

Latency-sensitive applications

Cosmos services like Sagan are latency sensitive because they are user-facing. For example, an artist who is working on a social media post doesn’t want to wait a long time when clipping a video from the latest season of Money Heist. For Stratum, latency is a function of the time to perform the work plus the time to get computing resources. When work is very bursty (which is often the case), the “time to get resources” component becomes the significant factor. For illustration, let’s say that one of the things you normally buy when you go shopping is toilet paper. Normally there is no problem putting it in your cart and getting through the checkout line, and the whole process takes you 30 minutes.

Resource scarcity

Then one day a bad virus thing happens and everyone decides they need more toilet paper at the same time. Your toilet paper latency now goes from 30 minutes to two weeks because the overall demand exceeds the available capacity. Cosmos applications (and Stratum functions in particular) have this same problem in the face of bursty and unpredictable demand. Stratum manages function execution latency in a few ways:

  1. Resource pools. End-users can reserve Stratum computing resources for their own business use case, and resource pools are hierarchical to allow groups of users to share resources.
  2. Warm capacity. End-users can request compute resources (e.g. containers) in advance of demand to reduce startup latencies in Stratum.
  3. Micro-batches. Stratum also uses micro-batches, which is a trick found in platforms like Apache Spark to reduce startup latency. The idea is to spread the startup cost across many function invocations. If you invoke your function 10,000 times, it may run one time each on 10,000 containers or it may run 10 times each on 1000 containers.
  4. Priority. When balancing cost with the desire for low latency, Cosmos services usually land somewhere in the middle: enough resources to handle typical bursts but not enough to handle the largest bursts with the lowest latency. By prioritizing work, applications can still ensure that the most important work is processed with low latency even when resources are scarce. Cosmos service owners can allow end-users to set priority, or set it themselves in the API layer or in the workflow.

Throughput-sensitive applications

Services like Tapas are throughput-sensitive because they consume large amounts of computing resources (e.g millions of CPU-hours per day) and are more concerned with the completion of tasks over a period of hours or days rather than the time to complete an individual task. In other words, the service level objectives (SLO) are measured in tasks per day and cost per task rather than tasks per second.

For throughput-sensitive workloads, the most important SLOs are those provided by the Stratum serverless layer. Stratum, which is built on top of the Titus container platform, allows throughput sensitive workloads to use “opportunistic” compute resources through flexible resource scheduling. For example, the cost of a serverless function invocation might be lower if it is willing to wait up to an hour to execute.

The strangler fig

We knew that moving a legacy system as large and complicated as Reloaded was going to be a big leap over a dangerous chasm littered with the shards of failed re-engineering projects, but there was no question that we had to jump. To reduce risk, we adopted the strangler fig pattern which lets the new system grow around the old one and eventually replace it completely.

Still learning

We started building Cosmos in 2018 and have been operating in production since early 2019. Today there are about 40 cosmos services and we expect more growth to come. We are still in mid-journey but we can share a few highlights of what we have learned so far:

The Netflix culture played a key role

The Netflix engineering culture famously relies on personal judgement rather than top-down control. Software developers have both freedom and responsibility to take risks and make decisions. None of us have the title of Software Architect; all of us play that role. In this context, Cosmos emerged in fits and starts from disparate attempts at local optimization. Optimus, Plato and Stratum were conceived independently and eventually coalesced into the vision of a single platform. The application developers on the team kept everyone focused on user-friendly APIs and developer productivity. It took a strong partnership between infrastructure and media algorithm developers to turn the vision into reality. We couldn’t have done that in a top-down engineering environment.

Microservice + Workflow + Serverless

We have found that the programming model of “microservices that trigger workflows that orchestrate serverless functions” to be a powerful paradigm. It works well for most of our use cases but some applications are simple enough that the added complexity is not worth the benefits.

A platform mindset

Moving from a large distributed application to a “platform plus applications” was a major paradigm shift. Everyone had to change their mindset. Application developers had to give up a certain amount of flexibility in exchange for consistency, reliability, etc. Platform developers had to develop more empathy and prioritize customer service, user productivity, and service levels. There were moments where application developers felt the platform team was not focused appropriately on their needs, and other times when platform teams felt overtaxed by user demands. We got through these tough spots by being open and honest with each other. For example after a recent retrospective, we strengthened our development tracks for crosscutting system qualities such as developer experience, reliability, observability and security.

Platform wins

We started Cosmos with the goal of enabling developers to work better and faster, spending more time on their business problem and less time dealing with infrastructure. At times the goal has seemed elusive, but we are beginning to see the gains we had hoped for. Some of the system qualities that developers like best in Cosmos are managed delivery, modularity, and observability, and developer support. We are working to make these qualities even better while also working on weaker areas like local development, resilience and testability.

Future plans

2021 will be a big year for Cosmos as we move the majority of work from Reloaded into Cosmos, with more developers and much higher load. We plan to evolve the programming model to accommodate new use cases. Our goals are to make Cosmos easier to use, more resilient, faster and more efficient. Stay tuned to learn more details of how Cosmos works and how we use it.

2021년 3월 18일 성남시 분당구 부동산 경매 데이터 분석

2021년 3월 18일 용인시 부동산 경매 데이터 분석

경기도 용인시 수지구 상현동 843 상현마을성우5차아파트 103동 16층1603호 [집합건물 철근콘크리트조 116.2928㎡]

항목
경매번호 2019타경24604
경매날짜 2021.03.19
법원 수원지방법원
담당 경매2계
감정평가금액 574,000,000
경매가 574,000,000(100%)
유찰여부 신건


<최근 1년 실거래가 정보>
– 총 거래 수: 0건
– 동일 평수 거래 수: 0건

2021년 3월 18일 수원시 부동산 경매 데이터 분석

경기도 수원시 팔달구 경수대로 534, 103동 10층1001호 (인계동,인계극동스타클래스) [집합건물 철근콘크리트구조 84.961㎡]

항목
경매번호 2019타경13284,2019타경19015(병합)
경매날짜 2021.04.01
법원 수원지방법원
담당 경매12계
감정평가금액 302,500,000
경매가 211,750,000(70%)
유찰여부 유찰\t1회


<최근 1년 실거래가 정보>
– 총 거래 수: 11건
– 동일 평수 거래 수: 11건

최근 1년 동일 평수 거래건 보기

날짜 전용면적 가격
2020-11-29 84.927 3 37000
2020-08-10 84.927 11 38500
2020-07-11 84.927 10 35000
2020-07-14 84.927 14 35000
2020-07-02 84.961 4 28500
2020-07-23 84.927 3 33000
2020-06-25 84.961 13 35000
2020-06-08 84.947 15 38000
2020-05-26 84.947 15 36500
2020-04-22 84.947 6 33500
2020-03-03 84.947 2 14425

2021년 3월 17일 모바일 게임 매출 순위

Rank Game Publisher
1 리니지2M NCSOFT
2 리니지M NCSOFT
3 Cookie Run: Kingdom – Kingdom Builder & Battle RPG Devsisters Corporation
4 기적의 검 4399 KOREA
5 그랑사가 NPIXEL
6 세븐나이츠2 Netmarble
7 V4 NEXON Company
8 삼국지 전략판 Qookka Games
9 Genshin Impact miHoYo Limited
10 라이즈 오브 킹덤즈 LilithGames
11 메이플스토리M NEXON Company
12 R2M Webzen Inc.
13 뮤 아크엔젤 Webzen Inc.
14 블레이드&소울 레볼루션 Netmarble
15 바람의나라: 연 NEXON Company
16 S.O.S:스테이트 오브 서바이벌 KingsGroup Holdings
17 미르4 Wemade Co., Ltd
18 달빛조각사 Kakao Games Corp.
19 KartRider Rush+ NEXON Company
20 가디언 테일즈 Kakao Games Corp.
21 Roblox Roblox Corporation
22 FIFA ONLINE 4 M by EA SPORTS™ NEXON Company
23 리니지2 레볼루션 Netmarble
24 PUBG MOBILE KRAFTON, Inc.
25 Pmang Poker : Casino Royal NEOWIZ corp
26 검은강호2: 이터널 소울 9SplayDeveloper
27 Brawl Stars Supercell
28 붕괴3rd miHoYo Limited
29 찐삼국 ICEBIRD GAMES
30 한게임 포커 NHN BIGFOOT
31 Gardenscapes Playrix
32 Lords Mobile: Kingdom Wars IGG.COM
33 에오스 레드 BluePotion Games
34 Cookie Run: OvenBreak – Endless Running Platformer Devsisters Corporation
35 라그나로크 오리진 GRAVITY Co., Ltd.
36 Age of Z Origins Camel Games Limited
37 AFK 아레나 LilithGames
38 A3: 스틸얼라이브 Netmarble
39 갑부: 장사의 시대 BLANCOZONE NETWORK KOREA
40 Top War: Battle Game Topwar Studio
41 Empires & Puzzles: Epic Match 3 Small Giant Games
42 Epic Seven Smilegate Megaport
43 FIFA Mobile NEXON Company
44 Homescapes Playrix
45 컴투스프로야구2021 Com2uS
46 검은사막 모바일 PEARL ABYSS
47 크레센트 Eyougame Inc.
48 Gunship Battle Total Warfare JOYCITY Corp.
49 사신키우기 온라인 : 한정판 이벤트 진행중 DAERISOFT
50 황제라 칭하라 Clicktouch Co., Ltd.

2021년 3월 17일 성남시 분당구 부동산 경매 데이터 분석

2021년 3월 17일 용인시 부동산 경매 데이터 분석

경기도 용인시 기흥구 강남동로 20, 502동 20층2002호 (구갈동,강남마을코오롱하늘채) [집합건물 철근콘크리트조 84.99㎡]

항목
경매번호 2018타경7725
경매날짜 2021.03.31
법원 수원지방법원
담당 경매3계
감정평가금액 315,000,000
경매가 315,000,000(100%)
유찰여부 신건


<최근 1년 실거래가 정보>
– 총 거래 수: 0건
– 동일 평수 거래 수: 0건

2021년 3월 17일 수원시 부동산 경매 데이터 분석

경기도 수원시 영통구 봉영로1517번길 27, 911동 15층1502호 (영통동,벽적골9단지주공아파트) [집합건물 철근콘크리트조 49.63㎡]

항목
경매번호 2019타경20367
경매날짜 2021.03.24
법원 수원지방법원
담당 경매7계
감정평가금액 219,000,000
경매가 219,000,000(100%)
유찰여부 신건


<최근 1년 실거래가 정보>
– 총 거래 수: 164건
– 동일 평수 거래 수: 28건

최근 1년 동일 평수 거래건 보기

날짜 전용면적 가격
2021-02-16 49.26 12 39000
2021-02-20 49.57 14 34000
2021-02-03 49.26 5 35000
2021-02-06 49.63 9 31000
2021-01-26 49.26 15 35000
2021-01-30 49.26 6 35000
2020-12-10 49.26 14 30900
2020-12-17 49.26 3 31500
2020-12-05 49.63 14 31000
2020-11-18 49.26 19 29000
2020-11-27 49.26 14 31900
2020-11-06 49.57 8 30000
2020-10-23 49.26 13 31600
2020-10-29 49.63 13 31000
2020-10-30 49.26 11 31800
2020-09-29 49.26 15 31000
2020-08-15 49.26 17 30000
2020-08-15 49.26 17 30000
2020-08-18 49.26 4 29700
2020-07-01 49.57 6 29400
2020-07-01 49.57 5 27000
2020-07-06 49.26 11 29900
2020-06-17 49.57 2 23000
2020-06-20 49.26 19 28800
2020-06-24 49.26 6 29800
2020-06-25 49.57 14 29900
2020-05-14 49.63 10 25400
2020-03-23 49.57 17 23500

2021년 3월 16일 모바일 게임 매출 순위

Rank Game Publisher
1 리니지M NCSOFT
2 리니지2M NCSOFT
3 Cookie Run: Kingdom – Kingdom Builder & Battle RPG Devsisters Corporation
4 기적의 검 4399 KOREA
5 그랑사가 NPIXEL
6 세븐나이츠2 Netmarble
7 Genshin Impact miHoYo Limited
8 V4 NEXON Company
9 삼국지 전략판 Qookka Games
10 뮤 아크엔젤 Webzen Inc.
11 라이즈 오브 킹덤즈 LilithGames
12 R2M Webzen Inc.
13 메이플스토리M NEXON Company
14 블레이드&소울 레볼루션 Netmarble
15 미르4 Wemade Co., Ltd
16 S.O.S:스테이트 오브 서바이벌 KingsGroup Holdings
17 바람의나라: 연 NEXON Company
18 KartRider Rush+ NEXON Company
19 가디언 테일즈 Kakao Games Corp.
20 Pmang Poker : Casino Royal NEOWIZ corp
21 FIFA ONLINE 4 M by EA SPORTS™ NEXON Company
22 리니지2 레볼루션 Netmarble
23 Roblox Roblox Corporation
24 달빛조각사 Kakao Games Corp.
25 PUBG MOBILE KRAFTON, Inc.
26 한게임 포커 NHN BIGFOOT
27 검은강호2: 이터널 소울 9SplayDeveloper
28 찐삼국 ICEBIRD GAMES
29 붕괴3rd miHoYo Limited
30 에오스 레드 BluePotion Games
31 Lords Mobile: Kingdom Wars IGG.COM
32 Gardenscapes Playrix
33 라그나로크 오리진 GRAVITY Co., Ltd.
34 Brawl Stars Supercell
35 Cookie Run: OvenBreak – Endless Running Platformer Devsisters Corporation
36 Age of Z Origins Camel Games Limited
37 A3: 스틸얼라이브 Netmarble
38 AFK 아레나 LilithGames
39 Top War: Battle Game Topwar Studio
40 FIFA Mobile NEXON Company
41 Empires & Puzzles: Epic Match 3 Small Giant Games
42 갑부: 장사의 시대 BLANCOZONE NETWORK KOREA
43 크레센트 Eyougame Inc.
44 Epic Seven Smilegate Megaport
45 Homescapes Playrix
46 검은사막 모바일 PEARL ABYSS
47 컴투스프로야구2021 Com2uS
48 한게임포커 클래식 with PC NHN Corp.
49 그랑삼국 YOUZU(SINGAPORE)PTE.LTD.
50 카운터사이드 NEXON Company