Upgrade to Pro — share decks privately, control downloads, hide ads and more …

С PHP/Python на Go: как мы помогаем разработчик...

Zhanna
July 03, 2024
5.8k

С PHP/Python на Go: как мы помогаем разработчикам (почти) безболезненно сменить стек

Zhanna

July 03, 2024
Tweet

More Decks by Zhanna

Transcript

  1. C PHP на Go: как мы помогаем разработчикам (почти) безболезненно

    сменить стек Михаил Мохначев Руководитель отдела разработки
  2. • 19 лет в коммерческой разработке • Верстал html,css, писал

    на delphi, python, PHP, Golang • Руководил дизайн-бюро • ТТК, МТС, РосТелеком Обо мне
  3. • Приняли решение переходить на Go, когда стали переписывать большой

    php- монолит в 2017 году. Сейчас 95% трафика идут через сервисы, написанные на нем. • Есть сервисы на PHP, которые требуют поддержки и доработки. • Новые сервисы пишем только на Go*. (java c# python) Backend-разработка в Lamoda Tech
  4. • Статья-путеводитель в Confluence • Можно разделить на 4 этапа

    • 2 недели (рекорд составил 2 дня) Технический онбординг с PHP на Go
  5. 1 этап Предварительный Время прохождения этапа: 1 день. 1. Заведение

    задачи онбординга, в которой сотрудник логирует время и учится работать с нашим таск- трекером. 2. Настройка окружения на новом рабочем ноутбуке сотрудника. 3. Проверка доступов ко всем системам, которые потребуются в будущем для разработки новых сервисов.
  6. 2 этап Теоретический Время прохождения этапа: примерно 2 дня. 1.

    Теория Go — знакомство с документацией языка и основными практиками. Все нужные ссылки собраны в нашем путеводителе в Confluence. 2. A tour of Go — каждый сотрудник, изучающий язык, проходит этот вводный курс, который является стандартом в обучении разработке на Go. 3. Знакомство с нашими внутренними спецификациями и требованиями (например, с соглашением о наименовании API-методов), которые будет необходимо соблюдать в дальнейшем при разработке.
  7. Придумать тему для сервиса Это может быть, что угодно: от

    некоторого подобия Redis до игр типа морского боя и т.п. Обязательные требования: • У сервиса должны быть “ручки” для общения с другими сервисами • Он должен взаимодействовать с базой данных В нашем путеводителе в Confluence есть пошаговая инструкция для создания нового сервиса 3 этап: создание собственного сервиса 1
  8. Так как мы используем подход Specification First, то первым делом

    сотрудник пишет OpenAPI спецификацию своего сервиса. Затем на ее основе создается базовый код приложения при помощи генератора scratch. 3 этап: создание собственного сервиса 2
  9. После этого новичок приступает к описанию непосредственной логики своего приложения.

    В путеводителе в Confluence описаны все основные команды и есть ссылки на более подробную документацию по используемым инструментам. Одновременно сотрудник узнает о том: • как должна выглядеть структура приложения; • как должно быть реализовано взаимодействие модулей между собой и с внешним окружением; • какой корректный нейминг задавать папкам. 3 этап: создание собственного сервиса 3
  10. Тестирование Unit-тестирование встроено в язык и описано в документации. А

    для функционального тестирования мы используем собственный инструмент Gonkey. Он не требует написания кода, лишь интеграции — и новичок знакомится с ним, тестируя свой сервис. 3 этап: создание собственного сервиса 3 Gonkey на Github Статья на Хабр
  11. Инфраструктура На этом этапе сотрудник встраивает созданный им сервис в

    нашу систему. Добавляет в сервис Mетрики. Он узнает, зачем нужны Makefile, и какие команды должны в них присутствовать. А также какие docker и docker compose файлы нужно создать, чтобы приложение могло развернуться через Bamboo на боевом окружении, и чтобы другой разработчик мог развернуть его у себя локально. 3 этап: создание собственного сервиса 4
  12. 4 этап Не экзамен) Разбор типичных ошибок Время прохождения этапа:

    встреча на 2 часа. 1. Разобрать типичные кейсы отличий PHP от Go 2. Проводим разбор заданий из технического собеседования 3. Выдаем рекомендации с чем нужно разобраться более глубоко и на что обратить внимание 4. Возвращаем в “Яму страданий” (Эффект Даннинга — Крюгера)
  13. Что получает сотрудник? 1. Он изучает Go, причем не только

    теоретически, но и практически. Так, как это работает у нас в компании. 2. Познает все наши инструменты для создания сервисов. 3. Осознает инфраструктуру. Результаты технического онбординга
  14. Узнаем новичка поближе Видим, как он пишет код. Не что-то

    краткое на бумажке в условиях собеседования, а полноценный сервис. Восполняем пробелы в знаниях Этот код мы рассматриваем на пул реквесте и можем скорректировать какие- то шаблоны Первые задачи Можем выбрать наиболее подходящие для него первые рабочие задачи. 1 2 3 Что получает Lamoda Tech?