ОЧЕНЬ ЧИСТАЯ АРХИТЕКТУРА НА GOLANG

  Рет қаралды 18,943

The Art of Development

2 жыл бұрын

Весь исходный код здеся:
github.com/theartofdevel/golang-clean-architecture
Больше обо мне и курсах можно прочитать здесь:
artofedu.org/
Не забываем про Телеграмм группу:
Telegram Group: t.me/theartofdevel
И канал:
Telegram Channel: t.me/theartofdev
Предыдущие видео про чистую архитектуру:
Часть 3 - kzfaq.info/get/bejne/hteBrKZ33s3Nips.html
Часть 2 - kzfaq.info/get/bejne/qcVyotiQ0qnMe6c.html
Часть 1 - kzfaq.info/get/bejne/m7yYfM-ZsdKYlWg.html
Приятного просмотра!
GitHub репозиторий: github.com/theartofdevel/production-service
Задачи для пулл реквестов: github.com/theartofdevel/production-service/issues
Поддержи выход новых видео на Патреоне!
www.patreon.com/theartofdevelopment
Другие видео:
Уроки по Golang. Advanced. REST API. Вебсервер.
kzfaq.info/get/bejne/pbpzYJtntqeoeWQ.html
Изучаем Python. Урок 1. Основы. Бонус: Пишем приложение на FastAPI kzfaq.info/get/bejne/gLqSgbed0b6ucp8.html
Изучаем Golang. Урок 1. Основы + веб-сервер в 3 строки в конце урока! kzfaq.info/get/bejne/fZyVjcSJxNLLkoU.html
Разработка системы заметок на Python, Golang и микросервисы в 2021 году kzfaq.info/get/bejne/it6ZbJiDtra2gGQ.html
Как стать разработчиком. Часть 1 kzfaq.info/get/bejne/qruBpdWemLvHkn0.html
Что такое микросервисы за 200 секунд kzfaq.info/get/bejne/h59ppZqk2K7Wpok.html
Что такое Apache Kafka за 200 секунд kzfaq.info/get/bejne/f75jgcKa1J6Ulac.html
Telegram Group: t.me/theartofdevel
VK: theartofdevel
Дружественный Golang чат: t.me/gogolang
----
Меня зовут Артур Карапетов и я занимаюсь всем, что связано с разработкой. Я создаю высоконагруженные информационные системы, стартапы, занимаюсь личным обучением людей в сфере разработки (программисты, аналитики, системные администраторы), также я помогаю компаниям и стартапам с обучением людей работать и повышением их квалификации.
На этом канале я выкладываю ролики на интересующие меня темы, здесь можно найти серию роликов про создание информационной системы с нуля, а также можно найти серию уроков по языкам, которые я люблю. Добро пожаловать и приятного просмотра!
#go #разработка #архитектура #программирование #golang #курс #урок #голанг #го #tutorial #architecture #cleaning #production #development #howto #learnbasics #coding #programming #изучаемIT

Пікірлер: 58
@user-jv5jn4kk8w
@user-jv5jn4kk8w 2 жыл бұрын
Спасибо, что продолжаете делиться своими успехами.
@tzofeolam
@tzofeolam 2 жыл бұрын
Выходит, что в Go нет устоявшейся конвенции по логическому разделеню кода на директории/пакеты, как например в Java? Иногда забавно наблюдать за всеми этими метаниями в ролике, в процессе написания кода: "сделаем это здесь... нет, лучше сделаем этот тут или лучше там".
@brothers_karamazovs
@brothers_karamazovs 2 жыл бұрын
Спасибо за стрим! Было бы здорово осветить подробнее тему реализации транзакций в юзкейсах и сервисах на практике.
@temak8805
@temak8805 2 жыл бұрын
Спасибо, супер. Хотелось бы увидеть примеры с транзакциями на разных уровнях.
@andreyspoki4672
@andreyspoki4672 Жыл бұрын
Пересмотрел предыдущие видео о чистой архитектуре и это видео. Этот вариант намного круче, проще, понятнее и гибче. Сделано более качественно, однозначно лайк👍 Будем реализовывать на практике😊
@marcelosoian
@marcelosoian 2 ай бұрын
Нельзя не поставить лайк. Много чего уточнил для себя. Спасибо что поделились.
@MaximRovinsky
@MaximRovinsky 2 жыл бұрын
С переделанной архитектурой, теперь должно быть проще тестировать и в целом выглядит прозрачно понятно. Круто организовано - это 𝕃𝕚𝕜𝕖👍
@zak_47
@zak_47 2 жыл бұрын
как всегда топ!
@alekseybudaev2135
@alekseybudaev2135 2 жыл бұрын
Как всегда круто. Давай что нибудь на веб сокетах.
@MarkAnto7
@MarkAnto7 Жыл бұрын
Реально очень чистая архитектура, файл мэин.го из репозитория пустой А без шуток лучшие уроки по Го - спасибо Артур.
@user-cb6kk7xp2y
@user-cb6kk7xp2y Жыл бұрын
Отличный видос, то что я искал. Только начал изучать чистую архитектуру и меня очень напрягало куча одинаковых интерфейсов в разных папках. Значит я все правильно понял
@theeasywaytr4293
@theeasywaytr4293 2 жыл бұрын
Ура!!!
@DzintarsDev
@DzintarsDev 10 ай бұрын
Teperj nado video - " Samaja chistaja Go arhitektura"! :D
@Almas-2002
@Almas-2002 2 жыл бұрын
можешь записать видео с крутыми запросами через select на go
@TheArtofDevelopment
@TheArtofDevelopment 2 жыл бұрын
Смотреть x1.5-x2 :D и заходим в Телеграмм Канал: t.me/theartofdev И в Телеграмм Группу: t.me/theartofdevel
@user-pg6mb6il1c
@user-pg6mb6il1c 2 жыл бұрын
Ахтур
@theeasywaytr4293
@theeasywaytr4293 2 жыл бұрын
Наконец-то посмотрел, спасибо, красота какая! Вопрос: а как же интерфейс Сервиса? Разве NewService не должен возвращать именно интерфейс, а не конкретную реализацию сервиса?
@TheArtofDevelopment
@TheArtofDevelopment 2 жыл бұрын
нет. принимаем интерфейс а возвращаем интерфейс
@artfrela
@artfrela Жыл бұрын
@@TheArtofDevelopment очепятка, Accept interfaces, return structs
@user-el8ek4jg9l
@user-el8ek4jg9l Жыл бұрын
Спасибо за отличные уроки по Го. В репозитории примера файл мэйн.го пустой. Так и задумано?
@MIhailRbk
@MIhailRbk Жыл бұрын
Потому что все адепты чистой архитектуры умалчивают о том как все это дерьмо инитить, а вот тут всплывает все дерьмо которое они так старательно отовсюду вычистили
@TheArtofDevelopment
@TheArtofDevelopment Жыл бұрын
я не адепт) но проблемы есть везде
@vp_arth
@vp_arth 4 ай бұрын
А где-то уже есть отдельное видео о том, чем так плохи указатели? Если бы в go были константные указатели, ты бы от них не отказался?
@asmr_codster
@asmr_codster Жыл бұрын
Спасибо за видео. А что делать, если этот сервис нужно поднять на сервере в докере? yaml/env/json файлы же не хранят в репозитории? Как тогда задеплоить в gitalb, например ?
@TheArtofDevelopment
@TheArtofDevelopment Жыл бұрын
через ENV переменные
@user-rj5kt3ft8w
@user-rj5kt3ft8w 2 жыл бұрын
можно пожалуйста громче
@vp_arth
@vp_arth 4 ай бұрын
У тебя не юзкейсы, а коллекции юзкейсов. Юзкейсы - это «предоставить список доступных книг отфильтрованных по X», «выдать книгу пользователю», «получить новую книгу на баланс» и т.п.
@gooseman5578
@gooseman5578 7 ай бұрын
нет "тама" исходного кода, он старый
@bossikom
@bossikom 2 жыл бұрын
А зачем в entity нужны json-атрибуты. по сути domain вообще не должен знать что такое json? Он должен конвертиться во что угодно соответствующим адаптером (json, sql, xml, proto...)
@artfrela
@artfrela Жыл бұрын
Думаю сила привычки ;-)
@cegheyYT
@cegheyYT 2 жыл бұрын
Про возврат из конструктора неэкспортируемого типа, мне сделали замечание в дипломной работе ((, теперь ищу источник истины ))
@TheArtofDevelopment
@TheArtofDevelopment 2 жыл бұрын
а что они предлагают возвращать? интерфейс ?
@cegheyYT
@cegheyYT 2 жыл бұрын
@@TheArtofDevelopment на вызывающией конструктор функции я и так принимаю в виде интерфейса. Но сказали что это плохая практика, нужно делать экспортируемым сам тип. Хотя я не понимаю что плохого в таком подходе, Вот и ищу где почитать про самый правильный способ ))
@PeWpIC
@PeWpIC 2 жыл бұрын
@@cegheyYT Нужно проверить. Например у тебя есть интерфейс, а тебе нужно определить тип и кастануть к нему, если тип не экспортируемый, то не сможешь привести к нему
@PeWpIC
@PeWpIC 2 жыл бұрын
Ну и вообще странно делать тип не экспоритруемым, если предпологается, что он будет использоваться за пределами своего пакета
@user-mu1ud3ov6g
@user-mu1ud3ov6g 10 ай бұрын
Эх. Сколько придётся принять антидепрессантов, чтобы из python войти в чистую архитектуру на Golang. Когда на видео эксперт 20 минут тратит на реализацию простейшего казалось бы кейса exlude/include fields. Который по идее должен идти в месте с параметрами функции GetList(limit, offset, include, exclude). Но в Golang нет параметров default у функций вот и появляются всякие встраивания структуры в структуру, которые работают под кейс всё равно, а не ABC. Страшно.
@user-yk5mu4md8n
@user-yk5mu4md8n 2 жыл бұрын
Все круто конечно, но смотреть тяжело... Лайф формат классно, но сложно для восприятия.
@preegnees6664
@preegnees6664 Жыл бұрын
А есть какая нибудь такая же крутая архитектура при работе с брокерами типа Кафки?
@TheArtofDevelopment
@TheArtofDevelopment Жыл бұрын
так архитектура такая же. чтение из кафки - это как веб контроллер, запись в кафку это как слой работы с БД.
@preegnees6664
@preegnees6664 Жыл бұрын
@@TheArtofDevelopment понял, спасибо большое)))
@user-pg6mb6il1c
@user-pg6mb6il1c 8 ай бұрын
почему не создать бы один общий интерфейс и привязывать сторажи к нему? зачем дублирование кода?
@vp_arth
@vp_arth 4 ай бұрын
Интерфейсы в go вообще не нужны в общем случае. Они объявляются ровно там, где требуется соответствие контракту. Один и тот же сторадж в разных сценариях может удовлетворять разным интерфейсам - один сценарий только создаёт сущности, другой только ищет и т.п. Полный интерфейс всего стораджа не нужен никому.
@andreyparovozz
@andreyparovozz 3 ай бұрын
Куда девать контроллеры миддл вари?
@TheArtofDevelopment
@TheArtofDevelopment 3 ай бұрын
в отдельный пакет
@andreyparovozz
@andreyparovozz 3 ай бұрын
@@TheArtofDevelopment В папке controllers? Вообще, предложенная архитектура мне очень нравится. Очень лаконично и логично!
@userqh67vey6
@userqh67vey6 9 ай бұрын
архитектура все еще чистая или уже не очень?
@TheArtofDevelopment
@TheArtofDevelopment 9 ай бұрын
уже не очень. ждите новый ролик.
@fpway
@fpway 8 ай бұрын
Зачем разделять dto в http и в service? Они имеют идентичные поля, разница лишь в json тэгах. Они на что-то влияют? Почему нельзя использовать один dto с тэгами на два слоя?
@ubermensch1971
@ubermensch1971 6 ай бұрын
Не понимаю какую роль тут играют сервисы? они же просто вызывают методы репозитория что можно делать и из юзкейсов
@TheArtofDevelopment
@TheArtofDevelopment 6 ай бұрын
там размещаю дополнительную логику по сущности: обогащение, кеш можно туда воткнуть.
@vp_arth
@vp_arth 4 ай бұрын
Вместо того, чтобы просто возвращать 200 с совершенно другой структурой ответа (бедные клиенты), посмотри хотя бы на `Content-Type: application/problem+json` Какая разница, транспорт это или нет. До того как понять, какова схема прилетела в ответе, клиент вынужден как-то распарсить ответ и убедиться, что это не ошибка.. Не надо так.
@TheArtofDevelopment
@TheArtofDevelopment 2 ай бұрын
так нет другой структуры. поля error и message парсите всегда и все
@flamehowk
@flamehowk Жыл бұрын
Какие книги? Какие авторы? Какие модели? Те, которые по подиуму ходят, или те, которые по небу летают? Автор хоть бы 5 секунд потратил на то, чтобы объяснить - об чем тут вообще речь...
@TheArtofDevelopment
@TheArtofDevelopment Жыл бұрын
5 секунд потратил
@flamehowk
@flamehowk Жыл бұрын
@@TheArtofDevelopment Наверное где-то в другом видео, ссылку на которое автор дать забыл. Да Вы просто переслушайте свое видео - там нет никакого объяснения. Сторонний зритель заходит и ощущает себя пришедшим на середину пьесы...
Best KFC Homemade For My Son #cooking #shorts
00:58
BANKII
Рет қаралды 67 МЛН
Clown takes blame for missing candy 🍬🤣 #shorts
00:49
Yoeslan
Рет қаралды 44 МЛН
Опасность фирменной зарядки Apple
00:57
SuperCrastan
Рет қаралды 11 МЛН
İĞNE İLE TELEFON TEMİZLEMEK!🤯
0:17
Safak Novruz
Рет қаралды 1,2 МЛН
АЙФОН 20 С ФУНКЦИЕЙ ВИДЕНИЯ ОГНЯ
0:59
КиноХост
Рет қаралды 1,2 МЛН
Какой ноутбук взять для учёбы? #msi #rtx4090 #laptop #юмор #игровой #apple #shorts
0:18
8 Товаров с Алиэкспресс, о которых ты мог и не знать!
49:47
РасПаковка ДваПаковка
Рет қаралды 169 М.
Kumanda İle Bilgisayarı Yönetmek #shorts
0:29
Osman Kabadayı
Рет қаралды 2,2 МЛН