Инструменты SRE-инженера: девелопмент
SRE-инженер -- профессия не из легких, плюс она сочетает в себе 2 довольно трудоемких направления — это разработка и эксплуатация. Давайте подробнее рассмотрим первое из них.
Девелопмент в SRE
Во-первых, один из скиллов SRE-инженера заключается в умении писать код на одном из языков программирования, используемом в технологическом стеке компании. На практике это может быть, к примеру, C#, Python, Bash, Golang, но суть не в этом, а в том, что для позиции SRE-инженера нормальная практика -- это не только написание скриптов, но и непосредственное погружение в процессы разработки, плюс постоянные коммуникации с командой. Также это может быть (опционально) составление технических заданий, участие в спринтах, копание в бэклоге и пр.
Во-вторых, важно понимать и иметь опыт работы с известной ныне концепцией Infrastructure as Code. Мы говорим о модели, позволяющей управлять инфраструктурой посредством вызовов соответствующих процедур в программном коде. Это, в свою очередь, дает возможность избавляться от настройки виртуальных машин (VM) в ручном контуре. При такой модели инфраструктура и среда разработки представляют собой единое целое.
В-третьих, многие проекты осуществляют перенос своей инфраструктуры в Terraform. А это значит, что вы должны знать этот инструмент, ведь очень велика вероятность того, что вы с ним столкнетесь. Сам по себе Terraform представляет собой утилиту open-source, предназначенную для развертывания и управления облачной инфраструктурой as code, причем вне зависимости от того, какой у вас провайдер: AWS, Google Cloud, Azure и пр.
При запуске Terraform осуществляет чтение кода и, применяя представленные облачными провайдерами плагины, приводит инфраструктуру к описанному состоянию, осуществляя нужные вызовы к API. Также он легко встраивается в пайплайн проекта и позволяет отслеживать общее состояние всей инфраструктуры.
Четвертое, о чем стоит упомянуть, -- это Kubernetes — как же без него в SRE? Kubernetes сегодня представляет собой полноценную экосистему, состоящую из различных сервисов и утилит. Все это богатство предназначено для развертывания/автоматизации/настройки микросервисов и контейнеризированных приложений. По сути, Кубер предоставляет вам фреймворк, обеспечивающий гибкую работу распределенных систем. В числе прочего, он осуществляет масштабирование и обработку ошибок в программном приложении, предоставляет шаблоны для развертывания и многое чего еще. Также Kubernetes прекрасно выполняет балансировку нагрузки трафика между контейнерами, позволяет относительно быстро развернуть/откатить любое число контейнеров, может работать с защищенными протоколами в целях защиты персональных данных.
Пятый нюанс -- работа с билдами в Drone CI. Что-что, но пул-реквесты придется делать очень часто, а так как билд, как правило, проходит через стандартный конвейер задач, то весьма вероятно, что придется составлять его пайплайн. И вот здесь на сцену выходит Drone — система непрерывной интеграции, которая основана на docker-контейнерах и прекрасно работает и с гитхабом, и с менее известными репозиториями. На деле каждый шаг из пайплайна проходит обработку в отдельном docker-контейнере и запускается посредством drone agent. Ну а роль координатора играет Drone server.
По материалам блога https://storedigital.ru/.