Про Cosmos — Serverless платформа от Netflix
03.03.2021
На этой неделе на хайпе статья Нетфликса про их новую Serverless платформу Cosmos — https://netflixtechblog.com/the-netflix-cosmos-platform-35c14d9351ad. Я решил описать основные моменты из этой статьи — возможно обсудим её в следующем выпуске подкаста.
Проблема:
Была 7-ми летняя система для кодирования видео. Система из микросервисов. Сложно поддерживать и никто не знает как пилить фичи.
Решение:
Сделать платформу Cosmos — это Microservice + Workflow + Serverless. Платформа должна поддерживать 2 типа приложение — latency-sensitive workloads и high throughput services.
Cosmos — основные цели:
- Observability — нам нужны логи, трейсинги и мониторинг из коробки.
- Modularity — нужен opinionated фреймворк для поддержания единой структуры
- Productivity — мы должны уметь комфортно локально разрабатывать и тестировать приложения на платформе.
- Delivery — Написанные приложения на платформе должны легко деплоиться в прод. Кроме того, интеграционные тесты должны легко запускатьсятам, при необходимости.
Архитектура
Платформа Cosmos состоит из 2 слоев, каждый из которых состоит из 3 блоков.
- Логика делится на API, workflow и serverless functions. Каждый компонент скейлится независимо. Они сами знают, как скейлится (API — на основе метрик с беленсера, функции — на основе размера очереди).
- Логика делится на application и platform. Приложение ничего не знает про скейлинг, это абстракция от платформы.
Платформа Cosmos состоит из 3 компонентов. Они общаются черех асинхронную очередь Timestone. Компоненты:
- Optimus — API слой, трансформирующий запросы в бизнес сущности платформы
- Plato — workflow движок, написанный на DSL (Groovy). Состоит из 4 элементов — match condition, action for execution, success handler, error handler.
- Stratum — serverless движок для запуска serverless нагрузок. Построен на Titus
Latency-sensitive applications:
- Resource pools — можно резервировать ресурсы под себя
- Warm capacity — можно часть ресурсов держать гретыми всегда
- Micro-batches — Stratum может уменьшать количество запусков контейнеров благодаря батчам.
- Priority — Приоритетами можно лоу летенси выставлять на первые места для выполнения
Взаимодействие Платформенных команд и Прикладных программистов.
- Все должны поменять мышление.
- Приладные программисты жертвую гибкость и получают стабильность и удобный способ разработки ПО.
- Платформенные программисты должны делать всё для повышения dev expirience
Категории: Программирование