Роберт Егоров - Уходим с Кобола современности на Go при разработке ентепрайз решений
Как мы сносили Java. Практические рекомендации для тех, кто раздумывает об использовании Go в следующем проекте. Рассмотрим последовательность действий для создания корпоративного приложения.
программист, архитектор, руководитель разработки, до 2006 - Чехия: Продуктовый менеджер, продуктовый директор - Чехия/Босния/Сербия/РФ: Консультант, CTO - Чехия/РФ: Гофер, one man show, стартапы/заказная разработка ПО One man show
разработка на заказ • уникальное решение • тиражируемое • аутстаффинг/аутсорсинг Виды разработки ПО Продуктовая разработка Разработка на заказ …“Добавим движок!”.. …”И так сойдет!”…
продакшн платформе • Небольшое количество одновременно работающих пользователей • Много сущностей и пользовательских форм • Разнообразие отчетных форм • Разные операционные системы • Противодействие пользователей • Некомпетентность пользователей • Некомпетентность администраторов или отсутствие на фултайм • Необходимость передавать исходные тексты Особенности enterprise решений
ОС/Архитектуры • Принцип: явное лучше неявного • Быстрая скорость компиляции • Низкий оверхед финального приложения • Единые правила форматирования кода • Встроенные средства тестирования и бенчмаркинга • Проверен в крупных проектах, используется крупнейшими мировыми компаниями Golang с точки зрения CTO И еще можно сказать про микросервисы!
организовать main() • Как хранить параметры приложения • Каким логгером пользоваться • Какой http роутер выбрать • Как Вы работаете с базой данных… Вопросы новичков из Слака golang-ru.slack.com
рабочее время • Он-лайн кассы • Частично компьютеры с Windows XP • Отсутствие фултайм администратора • Нет специалиста для постановки технического задания. • Оставляем права себе! • 60 часов интервью • Выявление сценариев пользователей Запрос Ответ
• Пишет слой доступа к данным и кэшам • Пишет ключевые конструкции приложения • Предоставляет Go методы/функции для фронтендера • Менторинг фронтендера по Go Бэкендер Фронтендер • HTML/CSS/JS по мокапам • Изучает Go! • Пишет HTTP контроллеры на Go • Вызывает Go методы backend • Меняет структуру JSON API для эффективности – Профит!
организовать main() • Как хранить параметры приложения • Каким логгером пользоваться • Какой http роутер выбрать • Как Вы работаете с базой данных… Вопросы новичков из Слака golang-ru.slack.com
не торопимся разделять все параметры сразу • Хороший тон все параметры передавать через командную строку и/или переменные среды окружения • На практике, когда параметров больше N необходимо разделять, что будет передаваться из командной строки, что может лежать в конфигурационном файле, базе данных.
функции • Много разных на гитхаб • Каждый по своему хорош • Все еще появляются новые • Идеального нет • Пишем всё • Используем log15 за собственной оберткой
неплох, но для растущего проекта недостаточно функционален • Много разных на гитхаб • Каждый по своему хорош • Все еще появляются новые • Идеального нет • Используем echo
звено • HTML шаблоны • Библиотека создания xlsx файлов tealeg/xlsx • Собственные наработки поверх tealeg/xlsx, которые пока стыдно выкладывать на гитхаб ☺