Рубрики
Uncategorized

Kube объяснил: Часть 1 — Как CI/CD и микросервисы привели к Kubernetes

Инженерные команды всегда имели постоянное давление, чтобы доставлять программное обеспечение быстрее, дешевле и больше … Помечено Kubernetes, Microservices, Docker, DevOps.

Kube объяснил (серия 2 частей)

Инженерные команды всегда имели постоянное давление, чтобы доставлять программное обеспечение быстрее, дешевле и надежно. В результате эти факторы были обусловлены многими недавними тенденциями в бэкэнд -инфраструктуре.

Kubernetes, Microservices, контейнеры — технологии, которые мы в совокупности называем «облачными родственниками» — помогают инженерам развертывать программное обеспечение в облаке быстрее и в большей масштабе. Вместе они представляют собой наиболее значимое инновации в бэкэнд -инфраструктуре с момента введения облака в первую очередь.

Хотя может показаться, что эти новые инструменты появились из технологического эфира, на самом деле, они коренится в повсеместном организационном давлении, возвращающемся до изобретения облака. То, как команды инженеров работают вместе для доставки программного обеспечения, вызвало потребность в облачном дизайне, который мы видим сегодня.

Итак, какие организационные тенденции привели к созданию облачных родственников, и почему?

Перед облаком основным узким местом для развертывания программного обеспечения было обеспечение и управление физическим оборудованием. Требуются новые услуги:

  • Новые серверы будут куплены и доставлены.
  • Серверы, которые будут установлены в центре обработки данных.
  • Администратор для их настройки.

Вместе эти задачи требовали недель времени и усилий. Не имело значения, насколько удивительно эффективными были ваши процессы QA или развертывания, поскольку любой прирост скорости в этих областях будет затмеваться неэффективностью процесса развертывания аппаратного развертывания.

Впервые облако позволило обеспечить новый вычислитель за считанные минуты. В результате основное узкое место для развертывания программного обеспечения перешло от обеспечения аппаратного обеспечения к инженерным процедурам, регулирующим развертывание программного обеспечения. Ниже мы более подробно опишем, как проявилось это узкое место и как CI/CD и микросервисы появились для их решения.

CI/CD

В то время, когда появилось облако, процесс развертывания программного обеспечения был в основном ручным — Это выглядело примерно так:

  • Разработчик пишет программное обеспечение.
  • Отдельная команда по обеспечению качества проверяет программное обеспечение.
  • Операционная команда развертывает программное обеспечение.

Этот процесс был чрезвычайно неэффективным. Он в значительной степени полагался на человеческие усилия, которые были подвержены ошибкам. В результате всей этой неэффективности команды были стандартизированы на двухнедельном спринте развертывания, в ходе которого партия изменений будет кодирована, протестирована и развернута. Две недели были огромным улучшением по сравнению с худшей эпохой до облака, но все же оставили много места для улучшения.

Основная идея непрерывной интеграции/непрерывной доставки (CI/CD) заключалась в том, чтобы полностью автоматизировать процесс тестирования и развертывания. Инженеры и операторы QA больше не нуждались в тестировании и развертывании вручную. Вместо этого они могут писать код, который тестирует и развертывает для них программное обеспечение. В результате, примерно в это же время вы начинаете видеть платформы CI/CD, такие как Jenkins и инструменты автоматизации инфраструктуры, такие как Chef и Puppet, получают популярность. С этой новой философией и новым набором инструментов время развертывания сократилось с двух недель до менее двух часов.

Микросервисы

Когда появилось облако, большинство команд использовали то, что мы сейчас называем монолитной архитектурой. Весь код, написанный всей инженерной группой, будет составлен в один большой бинар и развернут. С чисто технической точки зрения, этот подход имеет много преимуществ: его легко понять, отлаживать и работать. Однако с организационной точки зрения это приводит к ненужной взаимозависимости между командами разработчиков.

В результате этой архитектуры развертывание до производства было естественным путем — изменение кода в то же время перевозилось в одну монолит. Это сделало разработчики программного обеспечения очень взаимозависимым, постоянно блокируя друг друга и не смогли добиться независимого прогресса.

В результате появилась концепция микросервисов. Микросервисы заменяют монолит множеством небольших независимых услуг, каждый из которых имеет свой отдельный конвейер развертывания и жизненный цикл. Впервые микросервисы освободили команды, чтобы добиться прогресса и развернуться независимо.

В то время как CI/CD и микросервисы сделали программное обеспечение для развертывания в облаке более эффективным, они также ввели новые сложности и эксплуатационные проблемы. CI/CD резко увеличил частоту, с которой мы развертываем программное обеспечение для производства, и микросервисы увеличили количество услуг, которые необходимо управлять.

Хуже того, в то время, когда впервые появилось облако, не было стандартизированного артефакта развертывания. У каждого микросервиса были свои особенности с точки зрения того, как он был упакован, начал, останавливался, контролировал и поддерживал. Эти различия были управляемыми, когда операторам, необходимыми только с точки зрения относительно нечасто меняющегося монолита. Но как только появились микросервисы и CI/CD, скорость изменения сделала его несостоятельными.

Наконец, когда эти тенденции приобрели популярность, появились контейнеры. Можно думать о контейнере как о полностью стандартизированном артефакте развертывания, который имеет постоянную упаковку, распределение, мониторинг и жизненный цикл. Микросервисы, упакованные в контейнеры, позволяют инфраструктуре быть совершенно не знают конкретных деталей их реализации, что делает их намного проще для управления.

Кроме того, поскольку артефакт развертывания, наконец, стандартизировался через контейнеры, стало возможным создать систему общего назначения, которая управляет флотами этих контейнеров. Kubernetes стал неизбежным результатом этих тенденций.

Таким образом, мы находимся сегодня в мире, где облачные инструменты позволяют командам разработчиков программного обеспечения сгладить процесс, который был нарушен появлением облачных вычислений много лет назад. Эти инструменты не появились без причины, вместо этого они представляют собой логический результат постоянного давления для обеспечения программного обеспечения быстрее, надежно и в большей масштабе.

Во второй части «Kube объяснил», мы обсудим, как эти инструменты работают вместе, чтобы создать сегодняшнюю стандартную облачную архитектуру и более подробно охватывать Docker и Kubernetes, и как Келда вписывается в более широкую картину. Быть в курсе.

Kube объяснил (серия 2 частей)

Оригинал: «https://dev.to/ethanjjackson/kube-explained-part-1-how-ci-cd-and-microservices-led-to-kubernetes-4e3»