Въведение в Spinnaker

1. Общ преглед

В този урок ще разгледаме Spinnaker, платформа за непрекъсната доставка с отворен код, създадена от Netflix. Можем да го използваме за разполагане на нашите приложения в множество доставчици на облак.

Системата е изградена върху Spring Boot и поддържа много доставчици на облак.

Ще видим как работи и за кои случаи можем да го използваме.

2. Предистория

Нека да разгледаме историята на разработването на софтуер. Първо, имахме Водопада с редки издания.

След това започнахме да работим Agile и предоставяхме функции на всеки спринт. Въпреки това все още не разполагахме с всеки спринт. За съжаление потребителите все още не можеха да използват новите функции, които лежаха на рафт.

Имаше някои причини да не се разгръща редовно. Един от тях беше фактът, че стъпките за внедряване често се изпълняват ръчно и са склонни към човешки грешки.

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

3. Спинакер

Със Spinnaker можем да използваме непрекъсната доставка или непрекъснато внедряване, за да пуснем автоматично приложението си в производство. Непрекъсната доставка означава, че всичко е подготвено за производствена версия.

Въпреки това, изданието се одобрява ръчно, преди приложението да бъде внедрено в производството. Непрекъснатото внедряване означава, че няма ръчна намеса. Всички стъпки се изпълняват, включително внедряването в производството. Просто натискаме кода на приложението си към система за контрол на версиите и това е всичко.

От натискането на нашия код до контрола на версиите до внедряването до производството, ние можем да изпълним много стъпки. Можем да изградим нашия код, да тестваме кода, да го разположим в тестова среда и да изпълним функционални тестове. Използваме така наречения конвейер, за да конфигурираме всички тези стъпки.

Със Spinnaker можем да създадем такъв конвейер и да разположим нашето приложение на повечето доставчици на облак.

4. Компоненти

Spinnaker се състои основно от две части: абстракционен слой върху различни доставчици на облак и инструмент за непрекъсната доставка.

4.1. Традиционни облачни внедрения

Когато разглеждаме доставчиците на облак, всички те предлагат горе-долу еднакви услуги. Тези услуги включват неща като екземпляри, без сървър и поддръжка на контейнери.

Конфигурацията на тези услуги обаче значително варира между доставчиците. Това затруднява превключването между доставчици. Отнема известно време, за да преминем към друг доставчик на облак и да научим всички подробности, което означава, че основно имаме заключване на доставчик с нашия доставчик на облак.

Netflix искаше да има възможност лесно да превключва между доставчиците на облак, вместо да зависи само от един. Ето защо те изградиха абстракционен слой върху доставчиците на облак.

4.2. Абстракционен слой

Когато използваме Spinnaker, това е еднакво за всички доставчици на облак. Можем да го използваме на Amazon Web Services, Microsoft Azure, Google Cloud Platform, OpenStack, Google App Engine или Kubernetes. Това ни позволява да преминем към друг доставчик на облак, ако цените са по-конкурентни.

Още повече, можем да изберем да разполагаме едновременно с множество доставчици. По този начин можем да стартираме нашето приложение на двама или повече доставчици за допълнително съкращаване.

Друго предимство на слоя за абстракция е, че той се фокусира върху приложенията, вместо върху ресурсите. Обикновено доставчиците на облак ни показват ресурсите, които използваме в момента. Трябва обаче сами да разберем какво приложение използва кои ресурси.

Но ресурсите не са интересни за нас. Искаме да стартираме нашето приложение, без да отделяме време за проследяване на ресурсите. Spinnaker има ориентиран към приложенията изглед. И така, когато го разгледаме, първо виждаме приложението и след това виждаме ресурсите, използвани от приложението.

4.3. Непрекъсната доставка

На върха на абстракционния слой Netflix изгради непрекъсната платформа за доставка. Тази платформа ни позволява да разположим нашето приложение на един или повече доставчици на облак. Прилича малко на Дженкинс, но предлага по-приятна интеграция с доставчиците на облак и изисква по-малко конфигурация.

Можем да задействаме непрекъснат конвейер за доставка от Jenkins, качено изображение на Docker или git push, например. След това можем просто да създадем изображение или контейнер с нашето приложение и да го стартираме в производството.

Има обаче много повече опции като автоматизирани тестове и ръчни одобрения преди внедряване в производството.

Можем дори да решим каква стратегия искаме да следваме, когато внедряваме нова версия на съществуващо приложение. Като такъв е възможно просто да замените старата версия с новата версия. По-добра стратегия обаче би била да ги пуснете първо рамо до рамо. По този начин можем автоматично или ръчно да проверим дали новата версия работи и ако е така, да премахнем старата версия.

5. Моделът на облака Netflix

Всяко приложение се състои от една или повече сървърни групи. Една и съща версия на приложението работи на всички екземпляри в сървърната група. Използва се следната конвенция за именуване: ---. Полето (по избор) на стека се използва за указване дали групата сървъри е за тестови, производствени или други цели. Незадължителното поле за подробности се използва за допълнителна информация.

И накрая, имаме концепцията за клъстер, който съдържа една или повече сървърни групи със същото име, стек и детайл. Въпреки това, през повечето време всяка сървърна група в клъстера изпълнява различна версия на приложението. Неуспешните екземпляри ще бъдат заменени с нов екземпляр.

Възможно е също автоматично да добавяте екземпляри към сървърна група, за да поберете увеличеното натоварване.

6. Стратегия за внедряване

Когато разполагаме нова версия на приложение, обикновено се избира стратегията „червено / черно“. Първо, нова група сървъри, съдържаща новата версия на приложението, се разполага в клъстера. След внедряването на приложението се извършва проверка дали новата група сървъри е здрава.

Сега групата сървъри е активирана и достъпна за нашите клиенти. И накрая, старата сървърна група е деактивирана.

В този сценарий е лесно да се върнете, ако нещо се обърка с новия сървър на приложения. Можем просто да активираме сървърната група със старата версия отново и да я направим достъпна за нашите клиенти.

7. Защо Spinnaker

Със Spinnaker можем да се съсредоточим върху нашето приложение, вместо върху облачните ресурси, които използваме. Това улеснява разгръщането и поддръжката на нашите приложения.

Освен това Spinnaker дава възможност да работи на множество доставчици на облак едновременно. Освен това можем лесно да преминем към други доставчици на облак в зависимост от тяхната ценова стратегия и наличните функции.

8. Заключение

Spinnaker се основава на опита на Netflix. Можем да използваме техните знания и да работим по същия начин с минимални усилия. Въз основа на тези инструменти можем лесно да внедрим конвейер за разгръщане, за да внедрим нашите приложения в производството.

За да научите повече за Spinnaker, изтеглете безплатната непрекъсната доставка с Spinnaker ebook.