[Слёрм] Чистая архитектура приложения на GO (Николай Колядко)
?
- Удобство тестирования. Вы можете запускать тесты без пользовательского интерфейса, базы данных, веб-сервера или любого другого внешнего компонента.
- Независимость от фреймворка. Архитектура не зависит от какой-либо библиотеки, поэтому вы можете использовать фреймворк в качестве инструмента и не пытаться втиснуть свою систему в рамки его ограничений.
- Независимость от базы данных. Вы можете поменять Oracle или SQL Server на MongoDB, BigTable и т.д.
- Независимость от UI. Вы легко можете изменить пользовательский интерфейс, не затрагивая остальную систему. Например, можете заменить веб-интерфейс на консольный, не меняя бизнес-правил.Ваши бизнес-правила не связаны с базой данных.
- Не знаете, что такое чистая архитектура и как сформировать структуры папок по этой технологии
- Переходите на Go с другого языка программирования и хотите быстрее понять, как всё работает
- Пишете на Go, но не работали над большими проектами
- Хотите брать интересные задачи и создавать сложные приложения на Go с нуля
Разберем структуру проекта на Golang, обсудим примеры использования чистой архитектуры и научимся справляться с возникающими сложностями.
Практика:
- Создаем структуру проекта
- Наполняем Dependency injection (DI)
- Подключаем PostgreSQL через DI
Разбираем накопившиеся вопросы, закрепляем материал предыдущего дня, учимся формировать структуры папок по чистой архитектуре
Практика:
- Создаем структуры папок
- Созданием конструкторов для слоёв и устанавливаем зависимости
- Проводим инициализация слоёв на main
- Наполняем слои (Domain, Use, Case, Delivery, Repository)
Изучаем Observability, контекст (context) и трассировку, заканчиваем интенсив запуском и демонстрацией работы приложения (сервиса по работе с контактами и возможностью их группировки)
Практика:
- Добавляем использование контекста
- Добавляем логирование ошибок
- Подключаем Jaeger через DI
- Добавляем трассировку
- Учимся покрывать тестами блок Use Case