навіщо потрібна чиста Архітектура?- зручність тестування. Ви можете запускати тести без інтерфейсу користувача, бази даних, веб-сервера або будь-якого іншого зовнішнього компонента.
- незалежність від фреймворку. Архітектура не залежить від будь-якої бібліотеки, тому ви можете використовувати фреймворк як інструмент і не намагатися втиснути свою систему в рамки її обмежень.
- незалежність від бази даних. Ви можете поміняти Oracle або SQL Server на MongoDB, BigTable і т. д.
- незалежність від UI. Ви можете легко змінити інтерфейс користувача, не впливаючи на решту системи. Наприклад, можете замінити веб-інтерфейс на консольний, не змінюючи бізнес-правил.Ваші бізнес-правила не пов'язані з базою даних.
- Не знаєте, що таке чиста архітектура і як сформувати структури папок за цією технологією
- переходьте на Go з іншої мови програмування і хочете швидше зрозуміти, як все працює
- Пишете на Go, але не працювали над великими проектами
- хочете брати цікаві завдання і створювати складні додатки на Go з нуля
День 1
Розберемо структуру проекту на Golang, обговоримо приклади використання чистої архітектури і навчимося справлятися з виникаючими складнощами.
Практика:
Розбираємо накопичені питання, закріплюємо матеріал попереднього дня, вчимося формувати структури папок по чистій архітектурі
Практика:
Вивчаємо Observability, контекст (context) і трасування, закінчуємо інтенсив запуском і демонстрацією роботи програми (сервісу по роботі з контактами і можливістю їх угруповання)
Практика:
Розберемо структуру проекту на Golang, обговоримо приклади використання чистої архітектури і навчимося справлятися з виникаючими складнощами.
Практика:
- створюємо структуру проекту
- наповнюємо Dependency injection (DI)
- підключаємо PostgreSQL через DI
Розбираємо накопичені питання, закріплюємо матеріал попереднього дня, вчимося формувати структури папок по чистій архітектурі
Практика:
- створюємо структури папок
- створенням конструкторів для шарів і встановлюємо залежності
- проводимо ініціалізація шарів на main
- наповнюємо шари (Domain, Use, Case, Delivery, Repository)
Вивчаємо Observability, контекст (context) і трасування, закінчуємо інтенсив запуском і демонстрацією роботи програми (сервісу по роботі з контактами і можливістю їх угруповання)
Практика:
- додаємо використання контексту
- додаємо логування помилок
- підключаємо Jaeger через DI
- додаємо трасування
- Вчимося покривати тестами блок Use Case
https://privatelink.de/?https://slurm.io/go-architecture