Целева аудитория
Вие сте разработчик, който иска да насочи кариерата си към по-усъвършенстван модел DevOps? Вие сте класически Ops-инженер и искате да разберете какво означава DevOps? Или пък не сте нито едно от двете и, след като сте прекарали известно време в ИТ-сектора, желаете да смените работата си и нямате представа откъде да започнете?
Ако да, продължете да четете, за да разберете как можете да станете инженер DevOps от средно ниво за шест месеца! Накрая, ако вече много години работите в DevOps, все пак ще можете да извлечете много полезно от този цикъл статии и да научите къде се намира индустрията за интеграция и автоматизация в момента и накъде се стреми в своето развитие.

Какво е това изобщо?
Първо, какво е DevOps? Можете да потърсите определения и да се пробвате да преминете през цялата тази словесна тъга, но знайте, че повечето от определенията са просто безсмислица, облечена в гладка форма. Затова ще ви дам същността на всички тези определения: DevOps е начин за доставка на софтуер, при който болката и отговорността се делят между всички участващи. И това е всичко.
Добре, но какво всъщност означава това съкращение? То означава, че традиционно разработчиците (хората, които създават софтуер) в своята работа се ръководят от стимули, които значително се различават от стимулите на операциите (хората, които управляват софтуера). Например, като разработчик, искам да създам колкото се може повече нови функции възможно най-бързо. В крайна сметка, това е моята работа и точно това изискват клиентите! Но ако съм човек от Ops, то аз искам колкото се може по-малко нови функции, защото всяка нова функция е промяна, а всяка промяна носи рискове. В резултат на това несъответствие в стимулите се роди DevOps.
DevOps се опитва да обедини разработката и операциите (интеграцията и автоматизацията) в една група. Идеята е, че сега една група ще споделя както болката, така и отговорността (и вероятно наградата) за създаването, внедряването и получаването на приходи от софтуер, ориентиран към клиента.
Пуристите ще ви кажат, че няма такова нещо като "DevOps инженер". "DevOps е култура, а не роля", ще кажат те. Разбира се, технически погледнато, те са прави, но, както често се случва, този термин излезе извън първоначалното си значение. Така че, DevOps инженер е нещо като "системен инженер 2.0". С други думи, това е човек, който разбира жизнения цикъл на разработката на софтуер и създава инструменти и процеси за разработка на софтуер, за да решава класически оперативни задачи.

DevOps всъщност означава изграждане на цифрови конвейери, които вземат кода от лаптопа на разработчика и го превръщат в доход от използването на крайния продукт, в това е всъщността. Обърнете внимание, че избора на кариера в DevOps е доста добре компенсиран финансово, като почти всяка компания или "прави DevOps", или претендира за това. Независимо от местоположението на тези компании, общите възможности за трудоустройство като DevOps са сравнително високи и предлагат "приятна" и значима заетост за дълги години напред.
Въпреки това, бъдете внимателни с компаниите, които наемат "DevOps екип" или "DevOps отдел". Строго погледнато, такива неща не би трябвало да съществуват, защото в крайна сметка DevOps е все пак култура и начин на доставка на софтуер, а не комплектоване на нов екип или създаване на отдел с модно име.
Отказ от отговорност
А сега нека за момент оставим чашата с "Cool-Aid" настрана и да помислим за следното. Чули ли сте стария израз "няма по-млади DevOps инженери"? Ако не, знайте, че това е популярен троп в Reddit и StackOverflow. Но какво означава това?
По-простому, тази фраза означава, че е необходимо много години опит в съчетание с твърдо разбиране на инструментите, за да станеш наистина ефективен практик Senior DevOps. И за съжаление, няма кратък път до целта. Така че, това не е опит да се измами системата — не мисля, че наистина може да се преструваш на старши DevOps инженер с няколко месеца опит в бранша. Постигането на ясно разбиране на бързо променящите се инструменти и методологии изисква години на практика, и не може да се избегне. Въпреки това, съществува почти единодушно (модерно, ако искате) меню с инструменти и концепции, които използват повечето компании, и точно за това ще стане дума.
Отново, инструментите са различни от уменията, така че, докато изучавате инструментите, уверете се, че не пренебрегвате уменията си (интервюиране, изграждане на мрежи, писмена комуникация, отстраняване на проблеми и т.н.). Основното е, не изпускайте това, което искаме да намерим – начин за изграждане на напълно автоматизирана цифрова линия, която взима идеи и ги превръща в доходоносни парчета код. Това е единственият и най-важен извод от цялата тази статия!
Стига с приказките, кога мога да започна?
По-долу е представена пътната карта „Основни знания DevOps“. След като усвоите всичко, което е там изобразено, можете смело и честно да наречете себе си DevOps инженер! Или облачен инженер, ако не ви харесва наименованието „DevOps“.

Тази карта отразява моето (и вероятно на повечето хора, работещи в това пространство) разбиране за това, какво трябва да знае един компетентен DevOps инженер. Въпреки това, това е само мнение, и разбира се, ще има несъгласия. Това е напълно нормално! Ние не се стремим към съвършенство, а към стабилна основа, върху която наистина можем да изградим.
Трябва да преминете по този път постепенно, слой по слой. Започнете (и продължете!) с основите, изучавайки първо елементите, обозначени с синьо — Linux, Python и AWS. След това, ако времето или търсенето на пазара на труда позволи, се заемете с фиолетовите неща — Golang и Google Cloud.
Честно казано, основният слой е нещо, което ще се налага да изучавате безкрайно. ОС Linux е много сложна и обучението ѝ отнема години. Python изисква постоянна практика, за да сте в крак с времето. AWS се развива толкова бързо, че това, което знаете днес, след година ще е само част от общия пакет знания. След като усвоите основите, преминавайте към реалния набор от умения. Обърнете внимание, че има 6 сини колони (Конфигуриране, Версия, Пакетиране, Разгръщане, Стартиране, Мониторинг), по една за всеки месец на учене.

Разбира се, забелязали сте отсъствието на важен етап в нашия шестмесечен план – тестването. Умишлено не го включих в пътната карта, защото написването на модул, интеграцията и тестовете за приемане са трудни и традиционно лягат на плещите на разработчиците. Пропускането на етапа „тестване“ се обяснява с това, че целта на тази пътна карта е да се усвояват основните умения и инструменти възможно най-бързо. Липсата на опит в тестването, според автора, представлява само незначителна пречка за правилното използване на DevOps.
Освен това, помнете, че тук не изучаваме куп несвързани технически термини, а стремим се към разбиране на инструментите, които в единна свръзка създават ясна история. Тази история представлява цялостната автоматизация на процеса — цифров конвейер, който движи данни подобно на производствена линия. Не искате да изучавате куп инструменти и постоянно да спирате! Инструментариумът за DevOps се променя бързо, а концепциите — по-рядко. Затова трябва да се стремите да използвате инструментите като обучителни проксита за концепции от по-високо ниво.
Добре, нека задълбаваме малко повече!
Основни познания
Под горната стъпка с надпис Foundation виждате уменията, които всеки DevOps инженер трябва да овладее. Тези умения включват уверено боравене с трите „стълба“ на индустрията: операционната система, езика за програмиране и публичното облако. Тези неща не са нещо, с което можете лесно да се запознаете и да продължите напред. Тези умения трябва да се усъвършенстват и да се шлифова майсторството в тях, за да сте в авангарда на индустрията и да актуализирате професионалната среда около вас. Нека разгледаме всяко от тях поотделно.
Linux е основата, на която всичко работи. Можете ли да бъдете страхотен практик в DevOps, оставайки изцяло в екосистемата на Microsoft? Разбира се, можете! Няма такъв закон, който да изисква използването единствено на Linux. Но имайте предвид, че въпреки че всичко, свързано с Linux, може да се направи и в Windows, там това става много по-трудно и с по-малко функционални възможности. В момента може спокойно да се предположи, че без познания по Linux е невъзможно да станете истински DevOps професионалист, така че Linux е нещо, което трябва да изучавате и изучавате.
Честно казано, най-добрият начин да направите това е просто да инсталирате Linux (Fedora или Ubuntu) у дома и да го използвате колкото се може повече. Разбира се, вие ще счупите много неща, ще се застоявате в работни процеси, ще трябва да поправяте всичко, но така ще научите Linux!

Между другото, в Северна Америка вариантите RedHat са по-разпространени, така че е разумно да започнете с Fedora или CentOS. Ако се чудите дали да вземете включването на KDE или Gnome, изберете KDE. Това е средата, която самият Линус Торвалдс ползва.
Python днес е доминиращ език за бек-енд. Лесно е да започнете работа с него и той се използва широко. Python е много разпространен в областта на изкуствения интелект и машинното обучение, така че ако някога искате да се пренасочите към още една гореща сфера, ще бъдете напълно готови за това.

Amazon Web Services: отново, невъзможно е да станете опитен DevOps професионалист без добро разбиране на това как работи публичното облако. А ако искате да научите колкото се може повече за него, изучавайте Amazon Web Services. Това е водещ играч в областта на услугите, предлагащ най-богата гама от работни инструменти.
Може ли вместо това да започнете с Google Cloud или Azure? Разбира се, че може! Но вземайки предвид последния финансов кризис, трябва да се помни, че AWS е най-сигурният вариант, поне през 2018 година, тъй като предлага безплатна регистрация на акаунт и възможност за изучаване на облачни услуги. Освен това, конзолата на AWS предоставя на потребителите прост и понятен интерфейс за избор. Добрата новина е, че за това не е необходимо да знаете всички технологии на Amazon.

Започнете със следното: VPC, EC2, IAM, S3, CloudWatch, ELB (Elastic Load Balancing под EC2) и Security Group. Тези неща са достатъчни, за да започнете работа, а всяко модерно облачно предприятие активно използва тези инструменти. Собственият учебен сайт на AWS е добро място за начало.
Препоръчвам ви да отделяте по 20-30 минути на ден за изучаване и практика с Python, Linux и AWS, в допълнение към другите неща, които ще трябва да научите. Смятам, че разходите от час на ден, пет дни в седмицата, са достатъчни, за да разберете процесите в индустрията DevOps в рамките на 6 месеца или дори по-малко. Има общо 6 основни компоненти, всеки от които е свързан с месец обучение. Това е всичко, от което ще се нуждаете, за да придобиете основни знания.
В следващите статии ще разгледаме следващото ниво на сложност: как напълно да автоматизирате настройката, версионирането, опаковането, внедряването, стартирането и мониторинга на софтуера.
Продължението ще бъде съвсем скоро…
Малко реклама 🙂
Благодарим ви, че оставате с нас. Харесвате ли нашите статии? Искате ли да виждате повече интересни материали? Подкрепете ни, като направите поръчка или препоръчате на познати, , уникален аналог на entry-level сървъри, който е създаден от нас за вас: (с налични опции за RAID1 и RAID10, до 24 ядра и до 40GB DDR4).
Dell R730xd на половин цена в дата центъра Equinix Tier IV в Амстердам? Всичко това само при нас в Нидерландия! Dell R420 — 2x E5-2430 2.2GHz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB — от 99 $! Чете се за това
Източник: habr.com
