[Слёрм] Чистая архитектура приложения на GO [Николай Колядко]

450

Зачем нужна чистая архитектура?

  • Удобство тестирования. Вы можете запускать тесты без пользовательского интерфейса, базы данных, веб-сервера или любого другого внешнего компонента.
  • Независимость от фреймворка. Архитектура не зависит от какой-либо библиотеки, поэтому вы можете использовать фреймворк в качестве инструмента и не пытаться втиснуть свою систему в рамки его ограничений.
  • Независимость от базы данных. Вы можете поменять Oracle или SQL Server на MongoDB, BigTable и т.д.
  • Независимость от UI. Вы легко можете изменить пользовательский интерфейс, не затрагивая остальную систему. Например, можете заменить веб-интерфейс на консольный, не меняя бизнес-правил.Ваши бизнес-правила не связаны с базой данных.

Как понять, что вам пора на интенсив?

  • Не знаете, что такое чистая архитектура и как сформировать структуры папок по этой технологии
  • Переходите на Go с другого языка программирования и хотите быстрее понять, как всё работает
  • Пишете на Go, но не работали над большими проектами
  • Хотите брать интересные задачи и создавать сложные приложения на Go с нуля

Программа курса:

День 1
Разберем структуру проекта на Golang, обсудим примеры использования чистой архитектуры и научимся справляться с возникающими сложностями.
Практика:

  • Создаем структуру проекта
  • Наполняем Dependency injection (DI)
  • Подключаем PostgreSQL через DI

День 2
Разбираем накопившиеся вопросы, закрепляем материал предыдущего дня, учимся формировать структуры папок по чистой архитектуре
Практика:

  • Создаем структуры папок
  • Созданием конструкторов для слоёв и устанавливаем зависимости
  • Проводим инициализация слоёв на main
  • Наполняем слои (Domain, Use, Case, Delivery, Repository)

День 3
Изучаем Observability, контекст (context) и трассировку, заканчиваем интенсив запуском и демонстрацией работы приложения (сервиса по работе с контактами и возможностью их группировки)
Практика:

  • Добавляем использование контекста
  • Добавляем логирование ошибок
  • Подключаем Jaeger через DI
  • Добавляем трассировку
  • Учимся покрывать тестами блок Use Case