5 подписчиков

SD-EP61: Uber CI/CD

Uber — одна из самых инновационных компаний. Давайте рассмотрим их стек CI/CD подробнее: Планирование. Тут Jira, без комментариев. Backend. Spring Boot (https://spring.

Uber — одна из самых инновационных компаний. Давайте рассмотрим их стек CI/CD подробнее:

Планирование. Тут Jira, без комментариев.

Backend. Spring Boot (https://spring.io/projects/spring-boot) используется для разработки сервисов. Для контроля и управления конфигурациями Uber создал систему под названием Flipr (https://www.uber.com/blog/flipr/).

Code issues. Uber разработал NullAway (https://github.com/uber/NullAway), для устранения проблем с NullPointer и NEAL (https://github.com/uber/NEAL) для контроля написания качественного кода. Кроме того, был создан сервис – Piranha (https://github.com/uber/piranha), чтобы контролировать и управлять feature flags.

Репозиторий. Uber использует Bazel (https://bazel.build/about).

Тестирование. Uberиспользует SLATE (https://www.uber.com/blog/simplifying-developer-testing-through-slate/) для управления кратковременными средами тестирования и Shadower (https://www.uber.com/blog/introducing-shadower-a-minimalistic-load-testing-tool/) для нагрузочного тестирования путем воспроизведения производственного трафика. Так же Uberразработал Ballast (https://www.uber.com/blog/introducing-ballast-an-adaptive-load-test-framework/), для тестирования своих сервисов с максимальной нагрузкой и оптимальной эффективностью.

ИИ. Для задачи более точного прогнозирования и оптимизации Uberактивно поддерживает такое решение как Pyro (https://www.uber.com/blog/pyro/).

Сборка. Uber упаковывает свои сервисы в контейнеры с помощью uBuild (https://www.uber.com/blog/ubuild-fast-and-safe-building-of-thousands-of-container-images/). Это их универсальный инструмент на базе Buildkite (https://buildkite.com/) для решения всех задач по сборке.

Деплой. Micro Deploy (сокращенно известную как μ Deploy – https://www.uber.com/blog/micro-deploy-code/), cсобственная система развертывания Uber, которая создает, обновляет и откатывает сервисы.

Мониторинг. Uber создал собственные системы мониторинга. Они используют платформу uMetric (https://www.uber.com/blog/umetric/), построенную на Cassandra, чтобы обеспечить единообразие.

Специальные инструменты. Uber полагается на Peloton (https://github.com/uber/peloton) для планирования нагрузок, составления графиков и операций. Crane (https://www.uber.com/blog/crane-ubers-next-gen-infrastructure-stack/) строит мультиоблачную инфраструктуру для оптимизации затрат. А благодаря uAct (https://www.uber.com/blog/uact-unified-action-platform/) и информационной панели OnCall (https://www.uber.com/blog/software-engineers-on-call-dashboard/) Uber может отслеживать события.

P.S. Этот пост основан на Uber BlogEngineering(https://www.uber.com/en-US/blog/engineering/)