Лого КРОК
0
Обложка: Что делает Python-разработчик в облаке

Что делает Python-разработчик в облаке

Игорь Анохин
Игорь Анохин
Старший инженер-разработчик Облака КРОК

Мы с командой КРОК Облачные Сервисы делаем Облако КРОК — IaaS-платформу, которая помогает компании расти и обеспечивает сервисами более 300 брендов. В статье расскажу, чем занимаются Python-разработчики в проекте.

Как строится работа в облаке

Python-разработчик в команде Облака КРОК — это человек, который развивает проект. Он:

  • разрабатывает новые сервисы для платформы и оптимизирует старые;
  • разрабатывает архитектуру для наших высоконагруженных масштабируемых приложений;
  • добавляет в наше облако новые API;
  • пишет unit-тесты;
  • проводит code review.

Разберу на примере. Недавно мы выпустили инкрементальное версионирование дисков. Фича позволяет мгновенно создавать версии диска и быстро возвращать его в исходное состояние. Благодаря этому можно спокойно проводить серьезные изменения системы — содержимое в любой момент можно восстановить.

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

Ещё мы недавно переработали систему импорта и экспорта виртуальных машин. Ответственный за неё разработчик, сперва оценил, как работает старая версия, и выявил проблемы. А затем переписал её и ускорил 3-5 раз.

Это основные задачи. Но Облако КРОК большое и делится на подсистемы, поэтому конкретные обязанности Python-разработчика зависят от направления, которое он развивает. Это могут быть сети и всё, что отвечает за коммуникацию виртуальных машин друг с другом, или системы облачного хранилища. А также управляемые базы данных — PostgreSQL и MongoDB и так далее — управляемые сервисы, вроде Kubernetes, и многое другое.

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

Общение с заказчиком и бизнес-задачи берут на себя тимлиды. Они же следят за синхронизацией процессов между подсистемами.

Что ещё

Некоторые задачи требуют изменений в «реальном мире», когда нужно не только написать код, но и заменить инфраструктуру — например, сеть на более быструю. Тогда разработчику приходится частично брать на себя роль инженера (или взаимодействовать с инженерами).

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

Кроме того, облачные сервисы КРОК — это не только создание и оптимизация внутренних сервисов, но и решение проблем заказчиков. Поэтому иногда приходится разбираться с кодом на других языках и смотреть на продукты клиентов.

У одного из наших заказчиков крайне редко падали запросы внутри приложения. Чтобы разобраться с проблемой, пришлось проверять наш код, с помощью которого обрабатывались запросы, смотреть, как работают внутренние утилиты, на которые он опирается, и мониторить клиентский сервис, написанный на С++.

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

Что нужно знать Python-разработчику для работы в облаке?

Во-первых, необходим опыт работы с Python (без других компетенций ещё можно работать, но без этой точно не получится). Отдельно стоит обратить внимание на асинхронный Python — он сейчас довольно популярен.

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

Также здорово, если человек знает средства виртуализации, такие как Docker и VirtualBox. И сетевые протоколы: HTTP, DNS, TCP/IP — и базы данных: SQL, PostgreSQL и так далее

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

Еще желательно быть коммуникабельным и грамотно вести переписку — особенно, если ты на удалёнке.

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

Что в итоге?

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

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

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

На этом всё! Делитесь в комментариях, какими проектами вы занимались в облаке и какие задачи решали.