Учимся генерировать код из OpenAPI, делать автоверсионирование, разрабатывать мобильные SDK и растить команду без ошибок
Мы к вам с видеодокладами с недавнего митапа для iOS-разработчиков. Red Hot Chili Apples — это ежегодное мероприятие, которое собирает в нашем уютном питерском офисе креативных ребят из ЮMoney и других крупных российских компаний. В этом году спикеры из Сбера и ВКонтакте выступали у нас с докладами о платформенных командах и автоверсионировании. А ребята из ЮMoney рассказали о кодогенерации из Open API и мобильных SDK.
Скорее к докладам и не забудьте потом сохранить в закладки!
Кодогенерация из Open API. Дмитрий Шаколо, ЮMoney
Все приложения ЮMoney взаимодействуют с сервером через REST API. Есть модели данных, которые мы описываем сначала для бэкенда, затем — для всех клиентских приложений iOS и Android. Раньше данные нужно было описывать и тестировать вручную для каждого клиента. Это делали наши разработчики, что, естественно, занимало много времени. Но мы попробовали кодогенерацию из OpenAPI — и с тех пор всё изменилось. В своём докладе рассказываю, с какими проблемами ручной реализации мы столкнулись и как кодогенератор из OpenAPI помог нам сократить время генерации кода для всех клиентских приложений.
Таймкоды:
01:03 С какими проблемами ручной реализации кода мы столкнулись в команде и что решили с этим делать
04:03 Как выглядит OpenAPI-спецификация, что в ней можно описать и какие инструменты позволяют разработчику упростить работу с ней
05:41 OpenAPI Generator: по каким критериям мы выбирали генератор, почему остановились на решении от OpenAPI Tools и как с ним работать
07:14 Зачем нам понадобилась кастомизация: три причины
08:42 Как работает OpenAPI Generator
09:34 Как выглядит код генератора, который готов к использованию, и несколько методов, которые покажут, как легко сконфигурировать генератор или итоговый код
12:31 Mustache-шаблон: что это такое и для чего он нужен
13:23 Тестирование: как генератор избавил нас от необходимости писать тесты для каждого отдельного проекта и что мы делаем теперь
14:03 Автоматизация: что можно автоматизировать и как это устроено в ЮMoney
15:40 Итоги: у нас появился единый источник правды (спецификация), сократилось время реализации кода, мы выработали единый подход к работе с кодом API и документацией, автоматизировали процесс генерации
Команда платформы — сердце большого проекта. Михаил Харитончик, Сбер
Сегодня у Сбера более 200 мобильных команд, 50 мобильных приложений и релизы продуктов каждые две недели. Первые годы мы работали в режиме стартапа, но бизнес рос очень быстро, фич становилось больше, разработчиков —тоже. Вместе с этим стали появляться проблемы в коммуникации: начались споры по поводу выбора стандартов разработки и переиспользования кода. Чтобы решить их, в Сбере сформировали платформенную команду, которая стала следить за скоростью попадания кода в текст сборки, за обновлением технологического стека, культурой комьюнити и многими другими вещами. В своём докладе рассказываю о компетенциях платформенной команды, об 11 ошибках, с которыми мы столкнулись в своей работе, и о том, чему они нас научили.
Таймкоды:
02:15 Team Topologies: книга про платформенные команды, которую я рекомендую
03:42 Как Сбер вырос из стартапа в корпорацию
04:37 Что ждёт команды, которые стремительно растут
10:17 Как в Сбере появилась платформенная команда и какие у неё задачи
14:12 Компетенции платформенной команды
15:22 11 ошибок платформенной команды Сбера и чему они нас научили
28:39 Результаты, которые принесли Сберу платформенные команды
Автоверсионирование и как сделать его правильно. Максим Холявкин, ВКонтакте
Однажды я поймал в приложении баг, но не мог понять, из какой он версии. Три месяца у нас не было релизов, а я не помнил, когда поставил приложение на телефон — неделю назад или месяц. Нужно было решить вопрос версий приложения раз и навсегда, и сделать это нашей команде помогло автоверсионирование. Рассказываю, почему так важно отделять одну версию от другой, как в этом помогает автоверсионирование, в чём разница между маркетинговой и внутренней версиями приложения и как сделать идеальную полную версию независимо от того, какие есть препятствия.
Таймкоды:
01:19 Как выглядят маркетинговая, внутренняя и полная версии приложений iOS и macOS
02:15 Как устроено базовое версионирование
02:40 Какие требования к маркетинговой и внутренней версиям у Apple
03:21 Чего нет в требованиях Apple, но на что надо обратить внимание
07:15 Зачем нужно версионирование и автоверсионирование
09:16 Почему я считаю, что лучший формат привязан к дате коммита
11:04 Критерии идеальной полной версии
12:37 Варианты того, как сделать маркетинговую версию приложения
16:12 Что может помешать нам сделать идеальную версию и как с этим быть
18:25 Как выглядит идеальная внутренняя версия
20:16 Имплементация, или как сделать хорошо, чтобы переделывать пришлось только один раз
24:21 Полезный код для разработчика
Разработка платёжного SDK. Илья Фёдоров, ЮMoney
Для приёма платежей через ЮKassa мы разработали мобильное платёжное SDK. Оно содержит в себе необходимые сценарии и интерфейсы, чтобы наши клиенты могли как можно быстрее начать принимать платежи в своих приложениях. На скорость и простоту интеграции SDK влияет то, каким образом спроектировано API SDK, поддерживается ли API&ABI-совместимость, насколько удобна документация, существует ли наглядное демо-приложение.
В докладе расскажу, какие фичи нужно иметь в SDK, чтобы ускорить его интеграцию и уменьшить нагрузку на техподдержку. Также затрону вопрос о формате дистрибуции такого продукта: поделюсь, почему мы оставляем SDK ЮKassa опенсорсным и как автоматизируем процесс раскатки новой версии в публичный репозиторий.
А ещё в своём докладе я приведу пример использования дизайн-паттернов для упрощения восприятия API и поддержки его стабильности при добавлении нового функционала.
Таймкоды:
01:35 Платёжный SDK ЮKassa: поддерживать как можно больше популярных менеджеров зависимости и иметь несколько способов интеграции
03:17 Принципы в разработке, которые делают API проще
05:42 Как мы применили эти принципы к нашему модулю токенизации
07:47 Как мы использовали дизайн-паттерны для упрощения API
09:47 Что такое демо-приложение, для каких SDK оно нужно и почему это необходимая фича
10:50 SwiftUI-готовность
12:00 Какие бывают форматы дистрибуции мобильного SDK
15:00 Кастомизация: почему важно дать клиенту SDK, адаптированный под его фирменный стиль
16:05 Опенсорс: почему в ЮKassa выбрали этот формат распространения SDK
17:20 Как опубликовать код в опенсорсе и какие есть этапы публикации
19:57 Документация к SDK: как должна выглядеть и какие разделы есть в нашей
22:05 Итоги: идеи спринтов для разработчиков, которые делают SDK прямо сейчас
ЮMoney готовит много интересных мероприятий этой осенью. Чтобы не пропустить их, подписывайтесь на наш телеграм-канал ЮMoney Tech и следите за новостями.