26 март, 2019

Венцислав Кайнакчиев е DevOps Architect в SoftServe. Казва, че за него не съществува понятие като “Junior DevOps”, защото всеки специалист на тази позиция трябва дълбоко да познава компютърните мрежи, контейнерни платформи, базов сървърен софтуер, средства за автоматизация и CI/CD и още, и още…

Какви са изискванията за един DevOps?

Може би трябва да уточним, че използването на DevOps като позиция все още не е строго дефинирано и може да изисква различни познания според компанията. Традиционно това е концепция за обединяване на разработването (Dev), пускането в продукция и поддръжка (Ops) в рамките на жизнения цикъл на даден софтуерен продукт или услуга.

В малка компания, фокусирана върху един продукт, примерно в startup, естественият фокус е разработването на софтуера, като жизненият цикъл може да се автоматизира според вече наличните знания на Dev екипа и вече съществуващата платформа (да благодарим на cloud провайдърите!).

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

А какви са отговорностите?

Според мен най-важното за такава работа е способността и желанието за самообучение. DevOps като концепция и практика се развива много динамично, така че ни се налага постоянно да изучаваме нови средства и практики. Много важна е комуникацията с клиенти и колеги, както и самоорганизацията при решаване на поставените задачи.

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

Какви средства за разработка и автоматизация използваш?

Естествено, git е един от първите софтуери, които инсталирам. За програмиране и скриптове основно ползвам Python, все по-рядко Bash. Изучавам Go, но все още не го ползвам в работата си.

Много често започвам от нулата в Jupyter, където мога свободно да експериментирам с различни идеи и евентуално визуализации. След това основното развитие на кода е в самостоятелни файлове и модули в git repository.

Задължително имам docker с kubernetes на работния си лаптоп, за да мога да стартирам свободно комбинации от контейнеризиран софтуер. За configuration management предпочитам SaltStack или Ansible, в зависимост от естеството и приоритетите на проекта.

За дефиниране на инфраструктурата използвам най-вече Terraform, който в последните години се разви като универсалното средство за множество платформи.

И разбира се, почти винаги използваме CI/CD, най-често Jenkins.

Има ли tool, платформа, service, който използваш, въпреки че виждаш проблеми в него?

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

Естествено, работим с различни документи и понякога ни се налага да играем “имейл пинг-понг” с тях. За щастие има подходящи средства за колаборация, които доста облекчават процеса.

Понякога проблемът не е в избора на софтуер, а по-скоро използването на много стара версия с известни проблеми като бъгове, производителност или ограничена функционалност. Например, в един скорошен проект трябваше да започнем с пренаписването на legacy Terraform код, преди да мислим за развиване на нова функционалност.

С какви други позиции в екипа има връзка DevOps архитекта?

Както вече споменах, естеството на позицията предполага сериозно взаимодействие с множество различни специалисти. Според проекта комуникираме с Project managers, Business analysts, Developers, Data engineers, QA, Security, IT support и т.н. Разбира се, трябва да общуваме постоянно с клиента, докато не останат неизяснени въпроси по състоянието и развитието на инфраструктурата.

Какви са предизвикателствата, които срещаш?

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

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

Коя е най-трудната задача, с която си се сблъсквал?

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

Голямо предизвикателство за мен беше директният контакт с представители на Enterprise клиенти. Завиждах благородно на по-екстровертните колеги, които лесно намираха общ език с непознати хора. Но с времето свикнах и вече активно търся подобни проекти, за да продължа да подобрявам комуникационните си умения.

Колко време отнема, за да се достигне до Senior ниво?

Няколко хиляди часа в активно изучаване и правене на нещо ново 🙂. Задължително трябва дълбоко познаване на компютърните мрежи, хардуер, операционни системи, виртуални, облачни и контейнерни платформи, базов сървърен софтуер, средства за автоматизация и CI/CD. Затова според мен понятие като “Junior DevOps” не може да съществува.

За себе си бих казал, че огромна част от опита, който съм натрупал за близо 20 години в ИТ средите, ми е послужил като сериозна база за надграждане до сегашното ми ниво на знания и умения. За съжаление някои млади хора смятат, че могат набързо да си пуснат Linux с Docker и Jenkins, да разиграят няколко сценария и вече са квалифицирани DevOps специалисти.

Колко души работят в твоя екип?

В екипа сме над 60 души, като сме разпределени в България, Украйна и Полша. Имаме вътрешно разделение по специализации, но то е по-скоро условно. В момента работим по разрастването на българския екип, като имам удоволствието да участвам в техническите интервюта на потенциалните ни нови колеги.

По конкретен проект обикновено се групират 2-5 технически специалисти, като за по-големите освен DevOps engineer(s) може да има DevOps architect, Business analyst, Developer(s), Security expert и т.н.

Какъв е проектът, по който работиш?

В момента работя по 3 проекта в различен стадий на развитие. Естеството на работата в нашия екип позволява избор между фокусиране върху един по-продължителен проект или работа в няколко различни насоки с по-кратки срокове за изпълнение.

Последният проект, в който се включих, представлява интерес най-вече заради интегрирането на засилени мерки за сигурност в облачна среда.

Какви други умения са необходими, за да бъде човек добър професионалист?

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

Каква е заплатата на един Top DevOps Аrchitect?

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

Ако ограничим въпроса до Top специалисти, т.е. доста над средното ниво, очакваната им заплата е 50-100% над средната за ИТ, в единични случаи и повече.

На кои въпроси трябва да може да отговори всеки кандидат за позицията DevOps позиция?

Мога да дам пример: При моето постъпване изискванията бяха за Linux/Windows administration, networking, security, hardware, high availability and disaster recovery, version control, automated testing, CI/CD, automation/configuration management, orchestration, virtualization, containerization, cloud platforms, OOP, scripting, SQL, NoSQL, queues, monitoring and logging, project management methodologies.

Естествено, много зависи от търсеното ниво на специалиста. Но аз винаги бих предпочел човек, който разбира как работят операционните системи и мрежите, но не е запознат например с cloud платформите, пред някого с практически умения в AWS и Kubernetes, но без разбиране как работят на по-ниско ниво.

Има ли обучения за DevOps в твоята компания? На какви въпроси би трябвало да може да отговори кандидат за обучение?

От миналата година имаме програма за обучение на системни администратори. Както споменах по-горе, в момента пазарът е труден и търсенето на този вид специалисти е предизвикателство. Моята компания реши да развива потенциала на професионалистите, които искат да преминат на следващо ниво. По този начин дадохме възможност на хората с опит в системна администрация да влязат в компанията, преминавайки курс на обучение в рамките на 3 месеца, да направят преход към DevOps роля и да се включват в различни проекти, които да разширят и практическата част от уменията им. Тази година мислим да продължим да действаме в тази насока.

Тагове: , , , , , , , , , , , , , ,