Чистая архитектура приложения на Go: FAQ

06a37a34aa421bba02685cb66990d420.png

15–16 октября в Слёрм во второй раз пройдет интенсив «Чистая архитектура приложения на Go», где за 2 дня под руководством Senior Go Backend в Robovoice Николая Колядко вы сможете вкатиться в чистую архитектуру и Go. Результатом интенсива станет полноценный микросервис с REST API.

Мы собрали вопросы, которые нам чаще всего задавали об интенсиве, и попросили Николая подробно ответить на них.

Можно ли обходиться без чистой архитектуры?

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

Однако без чистой архитектуры становится больно уже через год-два разработки, когда команды сформированы и взаимодействуют между собой. На данном этапе обычно появляется много бизнес-логики, которую сложно поддерживать, в ней сложно искать проблемы и исправлять их. А чтобы исправить недостаточно производительную БД, придется вообще все переписывать.

Для средних и крупных проектов неприемлемо писать плоский код — нужно использовать шаблоны. Одним из этих шаблонов как раз является чистая архитектура: она помогает определить потребности бизнеса, написать и покрыть их тестами. Такие тесты независимы от БД или внешних данных, значит, при возникновении инфраструктурных ошибок мы в любом случае будем уверены, что бизнес-логика работает.

Как будет проходить практика на интенсиве?

В интенсиве будет больше практики в процентном выражении: полтора дня практики на полдня теории.

Проходить всё будет следующим образом. Вы слушаете презентацию и получаете задание по теме. Я даю некоторое время на самостоятельное выполнение задания, после чего демонстрирую, каким образом сделал бы сам. Если студенты не успели выполнить задание, они могут подтянуть мои изменения из Git-а. 

Практический блок выстроен как пирамидка: все задания зависят друг от друга. Если вы не успели что-то свое — берите последнее из моих заданий и дорабатывайте его.

Расскажи об итоговом проекте: как поможет этот сервис, почему делаем именно его, можно ли сразу применить его в своей работе?

На выходе создадим полноценный микросервис с REST API и шаблоном через gRPC API, который будет создавать контакты и объединять их в группы. Контакты можно будет читать, обновлять и удалять. Мы решили использовать именно этот пример, потому что в большинстве проектов есть такая сущность, как контакт, а также реализована некая агрегация (объединение) сущностей.

Обычно, в качестве итоговых проектов создают сущность User, но там две с половиной функции. Это неинтересно. На нашем примере можно отработать некоторые специфические задачи. Например: запрос от клиента о запрете создавать контакт с конкретным кодом страны (США, ОАЭ и т. д.), на который можно навесить какую-то логику.

Будут также определенные паттерны: вставка сразу в несколько таблиц, обновление. Часть кода можно будет использовать как шаблон и реализовывать проекты на его основе.

Я — разработчик. Мне нужно идти на интенсив?

Да. У вас появится опыт работы с шаблонами, которые применяются в большинстве современных highload-проектов. Сегодня все крупные проекты, даже работающие на монолитах, используют чистую архитектуру и различные допы наподобие Event Sourcing-а.

Также расширится кругозор и прокачаются навыки. Знание чистой архитектуры помогает разработчику не только быть в тренде, но и быстро «въезжать» в работу на новом проекте, где используется подобная практика.

Наконец, станет проще взаимодействовать с заказчиком. Более глубокое понимание потребностей клиента позволяет эффективнее распределять задачи и интегрировать их в структуру проекта.

Я — архитектор, мне нужно идти на интенсив?

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

Будем ли разбирать кейсы из практики студентов?

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

Выдаете ли вы сертификат?

Да, по окончании интенсива все участники получат фирменный сертификат Слёрма о прохождении курса.

Зачем проходить этот интенсив, если все можно найти бесплатно в интернете?

Найти можно всё, я сам так же собирал информацию бесплатно. Загвоздка в том, что качественные фактические примеры встречаются довольно редко. Например, в Git-е можно подсмотреть только маленькие примитивные сервисы, в которых нет сложной логики взаимодействия.

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

Мы ждем Junior-разработчиков на Go и опытных разработчиков, которые переходят на Go с других языков. Также участники интенсива должны знать типы данных, умееть писать запросы на SQL и разбираться в Git.

Присоединиться к интенсиву можно до 15 октября по этой ссылке: https://slurm.club/3CM7OiH

© Habrahabr.ru