Архитектура Golang приложений 🚀Разбор реального проекта

Поділитися
Вставка
  • Опубліковано 16 чер 2024
  • Roadmap по каналу - bit.ly/3yKtxWf
    Курс GOLANG NINJA - bit.ly/3VWKfu3
    Обновленное видео 2022 - • Архитектура Golang При...
    00:00 - Введение. Flat архитектура приложения на моем первом проекте с Golang
    02:37 - Лучшие практики проектирования структуры приложений
    04:22 - Директория /cmd
    10:08 - Еще один пример структуры проектов. Пакеты pkg и internal
    15:25 - Дополнительные директории в проекте. Пример API документации
    20:05 - Детальный разбор internal. Чистая архитектура.
    #golang #backend #архитектура

КОМЕНТАРІ • 162

  • @MaksimZhashkevych
    @MaksimZhashkevych  2 роки тому +6

    Обновленное видео 2022 - ua-cam.com/video/mesl2Si6saw/v-deo.html

    • @daniilevsienko4060
      @daniilevsienko4060 Рік тому

      то есть это можно не смотреть?

    • @user-gh3bs7xk1h
      @user-gh3bs7xk1h 3 місяці тому

      мне кажется совсем другой человек 2021 - 2024

  • @ivandedenev6323
    @ivandedenev6323 2 роки тому +9

    Спасибо тебе, мужик! Было капец как полезно! Я сейчас на стажировке и мне остро не хватало как раз таких разъяснений "по полочкам"

  • @assylkhanyeszhanov2356
    @assylkhanyeszhanov2356 3 роки тому +8

    Спасибо большое за видео, очень рад что нашёл ваш канал) продолжайте в том же духе!

  • @DarDarbl4
    @DarDarbl4 3 роки тому +63

    Путаете немного Инверсию зависимости(DIP) и Инъекцию зависимости(DI). Вообще названия не удачные поэтому путаница возникает между Инверсией зависимости, Инъекцией зависимости, Инверсией Управления. А так же Repository выродился в Gateway. Домен выродился в Анемичную Модель, то есть модель без поведения. Интерфейсы немножко пухловаты для инверсии, и лежат не на том слое, но шаги в правильном направлении, я уж так, придирки)) А вообще Вы молодец что просвещаете народ!

    • @hedinsss
      @hedinsss Рік тому

      Согласен, сложно смотреть когда понимаешь паттерны и думаешь де блин)

    • @Levelord92
      @Levelord92 Рік тому

      @@hedinsss а какие именно тут паттерны?

    • @Raymzhan
      @Raymzhan Рік тому +3

      @@Levelord92 еврейские

  • @MRogalsky20
    @MRogalsky20 11 місяців тому

    Ух, сколько связей и переплетений)
    А я только на начале изучения языка Go, а здесь уже проект! интересно было просмотреть структуру, что-то думаю поймется со временем. Спасибо!

  • @miraclechina1301
    @miraclechina1301 3 роки тому +5

    Супер, молодец, удачи тебе!

  • @stanislavdimitrenko
    @stanislavdimitrenko 3 роки тому +4

    Отличное видео. Спасибо!

  • @tilekasankulov5034
    @tilekasankulov5034 3 роки тому +3

    Супер видео!!!
    Давай еще)))

  • @ziliboba73
    @ziliboba73 3 роки тому +1

    Спасибо друг! :) Стало все намного понятнее.

  • @bekhruziskandarzoda3726
    @bekhruziskandarzoda3726 2 роки тому +1

    Спасибо, очень интересный материал! Максим, будем очень благодарны, если опубликуешь в гитхабе проект с подобной структурой. Очень хочется поиграться и изучить подробнее.

  • @mrakvervolkov8597
    @mrakvervolkov8597 3 місяці тому

    Спасибо огромное! За моими плечами только один очень редкий фреймворк, для которого структуру мы разрабатывали сами. Так как я сейчас изучаю go, было очень интересно сравнить и сопоставить мои знания с новыми.

  • @user-hr1kt5bp8c
    @user-hr1kt5bp8c 2 роки тому +1

    Спасибо! Весьма и весьма полезно.

  • @user-ct8fp2mm9y
    @user-ct8fp2mm9y 3 роки тому +4

    Отличный видос!

  • @kyleRQWS
    @kyleRQWS 2 роки тому +1

    Я снова влюбился в go и спасибо за инфу про организации приложения!

  • @user-iy8zf6ex1t
    @user-iy8zf6ex1t 2 роки тому +1

    Классно объясняешь, спасибо)

  • @user-ip8cq7gy8y
    @user-ip8cq7gy8y 3 роки тому +3

    Это если не лучший, то один из лучших каналов по данной тематике на русскоязычном ютубе 🔥

  • @fortis-lt
    @fortis-lt 5 місяців тому

    очень интересная структура! Большое спасибо!

  • @user-lu1vf3ms8s
    @user-lu1vf3ms8s 3 роки тому +9

    Огромное спасибо за это видео, долго не мог понять из статей как грамотно орагнизовать структуру проекта. Было бы круто, если бы ты записал более подробное видео по чистой архитектуре и по чистому коду, в частонсти про SOLID в го. Есть масса статей, но они как правило очень поверхностно описывают эти принципы.

    • @user-go6ht9uo9p
      @user-go6ht9uo9p 3 роки тому +2

      насколько я слышал в го нет классического ооп, но есть свои подобия

    • @bigMihanWhere2007
      @bigMihanWhere2007 Рік тому

      На юдеми курс golang-ninja от максима. И там есть глава чистая архитектура. Как раз перед этой главой шла часть с ссылкой на этот видосик

  • @kochewnic9984
    @kochewnic9984 2 роки тому

    оооо) реализация ddd в go) интересно, интересно)

  • @user-st3fn9do1x
    @user-st3fn9do1x 11 місяців тому

    Очень полезное видео, спасибо

  • @chelovak
    @chelovak 3 роки тому

    Личные ключи в головном readme - это, конечно, сильно! ;-)

  • @cothromachd
    @cothromachd Рік тому

    как же ты по красоте делаешь

  • @denissavast
    @denissavast Рік тому

    Благодарю за информацию!

  • @Zermond
    @Zermond 3 роки тому +3

    Ахренеть, как круто и доступно объясняешь :) спасибо!

  • @user-mt9bq2xe1z
    @user-mt9bq2xe1z 3 роки тому +3

    Крутой канал. Продолжай пожалуйста

  • @ivkis3270
    @ivkis3270 2 роки тому

    офигеть насколько это сложно, но красиво..

  • @PhotoLightTV
    @PhotoLightTV 3 роки тому

    Браво, хороший разбор, DI (e.g. Wire) не пробывал?

  • @igor5379
    @igor5379 7 місяців тому +1

    как пинок в правильном направлении, зачёт.

  • @domoji74tsukasa91
    @domoji74tsukasa91 3 роки тому +1

    Супер Макс. Хотелось бы потом по этому проекту, хотя бы в простой версии увидеть курс. Интересно как ты изначально настраиваешь проект, папки, структуры и тд. Также интересно было как ты настроил свой Goland, какая тема, какой шрифт

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 роки тому +2

      Golang у меня стандартный) Только немного хоткеи под себя настроил.
      На канале скоро будет курс по телеграм боту с нуля, там все эти моменты будут разобраны)

    • @konstantingeist3587
      @konstantingeist3587 3 роки тому

      Есть подход с генератором проектов. Можно написать утилиту, которая сразу создаёт нужные папки/файлы, прописывает везде всё нужное. Но это актуально если веб-приложения (микросервисы) однотипные по структуре и их много.

  • @gekka-group
    @gekka-group Рік тому

    Все супер, единственное было бы хорошо если нижнюю часть экрана не обрезали. К примеру терминал был не полностью виден.

  • @Edvard-Aliev
    @Edvard-Aliev 3 роки тому +3

    Большое спасибо за видео и за код, очень важно что такие люди как вы открывают код в опенсорс и показывают как "правильно" создавать проекты

  • @LEONEMSOLIS
    @LEONEMSOLIS 2 роки тому

    актуальненько :3

  • @konstantinivanov160
    @konstantinivanov160 3 роки тому +8

    Отличное видео. Спасибо. Создай видео как работать со Swagger. Так как ты умеешь. Четко, без воды и по существу )).

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 роки тому +5

      Уже записано, скоро будет на канале)

  • @alexanonymous5823
    @alexanonymous5823 3 роки тому +1

    спасибо за видео, если возможно пожалуйсто увеичивайте шрифт в редакторе и по возможности названия папок со шрийтом побольше. в любомслучае спасибо

  • @vtotbl
    @vtotbl 3 роки тому +5

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

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 роки тому +3

      Спасибо, рад что видео оказалось полезным.
      Думаю не все кто посмотрит знает про ддд и чистую архитектуру, хотелось чтобы по просмотру не оставалось много вопросов)

  • @assylkhanyeszhanov2356
    @assylkhanyeszhanov2356 3 роки тому +10

    О пожеланиях: было бы здорово на вашем канале посмотреть как на Го работать с брокерами сообщений (Кафка, Раббит)

  • @naneri
    @naneri 3 роки тому +2

    Спасибо за ключи, генерировать заново не обязательно ;)

  • @darknet106
    @darknet106 3 роки тому +2

    очень хороший контент! спасибо за проделанную работу!
    Вопрос : какой опыт работы с Go и в целом программистом?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 роки тому +4

      Спасибо за отзыв!
      Программирую еще с детства, на первую работу веб-разработчиком устроился в 2016-ом, с Golang работаю с начала 2018-го

  • @katia_suya9729
    @katia_suya9729 3 роки тому +2

    Очень классно объясняешь, спасибо)

  • @themansonbrother01
    @themansonbrother01 3 роки тому +3

    Спасибо! Очень полезное видео. Когда только начинал погружаться в язык (думал сделать его основным перейдя с php), было не понятно как структурировать проект. Много информации было перелопачено. Я так же нарывался на этот репозиторий с бест практисами для структурирования приложения. Здесь же, при просмотре видео, все стало более чем понятно!

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 роки тому

      Очень рад что видео оказалось полезным!

  • @germanigortsev4848
    @germanigortsev4848 2 роки тому

    Про репозитории интересно , пойду смотреть еще видео, реально примеров адекватных по работе с бд нет и разделение удачное по моделям / сервисам / репозиториям. Еще нет видоса хорошего по graphql

  • @ERge77
    @ERge77 2 роки тому

    А можешь посоветовать какую-нибудь библиотеку для работы c Excel (XLSX) открытие/редактирование/запись, но чтобы она работала на старой версии 1.10
    Не могу найти...

  • @nikitagladkih5857
    @nikitagladkih5857 3 роки тому

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

  • @robotbender817
    @robotbender817 11 місяців тому +1

    Спасибо что делитесь опытом. Имхо подход Feature by package самый топовый подход который подойдет для всех видов приложений
    Сначала делим на бизнес логические сущности (модули)
    user
    profile
    payment
    cart
    А дальше в каждой папке будет
    user
    ->features
    ->login
    -> repositories
    -> services
    -> forms

    • @user-bk1eb4xw4o
      @user-bk1eb4xw4o 2 місяці тому

      По гуглю по читаю, спасибо. Сам вот делаю первые шаги в go, до этого немного писал на python

  • @alexandertsapkov491
    @alexandertsapkov491 3 роки тому

    Коммент для активности

  • @user-ez4ch3lq9b
    @user-ez4ch3lq9b Рік тому +2

    Хм хм, а если мы в cmd хотим запихнуть ещё один проект с main. То для этого нового проекта, где будут храниться пакеты? Видимо так же в internal и pkg. И получается некоторые пакеты используются совместно двумя проектами, некоторые пакеты уникальны для одного проекта. Так как же разрабу понять, какие куда относятся и можно ли что-то поменять для одного проекта и при этом не сломать другой?
    Вот этого я не понял.

  • @devfront5432
    @devfront5432 3 роки тому +1

    Максим, сделай пожалуйста курс по Kafka

  • @user-jh1vx3vx1c
    @user-jh1vx3vx1c 3 роки тому

    Это нормально, что у нас service зависит от структуры Repositories и хэндлер от структуры Services? Там конечно содержатся интерфейсы как поля, но все же это не нарушение Clean Architecture? Это удобно конечно, но не лучше ли такие dependency injection проводить с мэина? например сохдать десять репозиториев и уже их запихнуть в сервис напрямую и то же самое с хэндлером? Тогда получится куча репозиториев и куча стуктур сервисов вместо одного, но не будет ли так правильнее?

  • @user-rm5jx8pi4i
    @user-rm5jx8pi4i 3 роки тому +8

    Спасибо за видео. Только если возможно, то хотелось бы крупнее шрифт в ide.

  • @Heretic_Man
    @Heretic_Man 3 роки тому +1

    Красава!

  • @ostrbor
    @ostrbor 3 роки тому +1

    Если у вас один main, имхо не нужно создавать cmd, т.к. смысл доп усложнения структуры папок в том, чтобы решить задачу разделения мейнов.

  • @vladislavrodin8036
    @vladislavrodin8036 3 роки тому +10

    насколько я знаю, в GO принято объявлять интерфейсы в местах использования, а не рядом с имплементацией. Тут же всё наоборот (например, в папке репозитория).

    • @roman.chudov
      @roman.chudov 3 роки тому +1

      абсолютно верно!

    • @MaksimZhashkevych
      @MaksimZhashkevych  2 роки тому

      все верно, так уж пошло на этом проекте) новые стараюсь писать следуя этому принципу

    • @vadimadamlyuk7487
      @vadimadamlyuk7487 2 роки тому +2

      (Совершенно искренний вопрос): А можно тему поподробнее раскрыть, с примером и объяснением "почему". И что делать, если интерфейс используется в нескольких местах?

    • @volodymyrzaiets8388
      @volodymyrzaiets8388 2 роки тому

      @@vadimadamlyuk7487 Go отличается по работе с интерфейсами от других языков, где обычно есть что то типа implement, в таких случаях мы должны декларировать интерфейс до использования, в случаи с go, нам не нужно явно имплементировать интерфейс, мы можем работать со структурой а только потом назначить для нее интерфейс, это и есть основный смысл держать интерфейсы ближе к имплементации. А экспортить интерфейсы нам не кто не запрещает, и более того они для этого и нужны т.я именно на интерфейсах строится контракт между сервисами

  • @ThePirateHistory
    @ThePirateHistory 3 роки тому +2

    Интересно) Можно пожалуйста увидеть инверсию зависимостей? Почему domain? просто у меня идут какие-то недопонимание. Почему изначальное не http2?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 роки тому +1

      Domain - от подхода DDD(Domain Driven Design).
      Вопрос про http не совсем корректный. Пакет v1 предназначен для инициализации группы эндпоинтов /api/v1

  • @berlin8pm486
    @berlin8pm486 3 роки тому

    Скажите, а какова скорость написания кода относительно, допустим node.js или других технологий? Как часто стартапы в WEB берут Golang в качестве основного языка?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 роки тому +1

      Два последних проекта на которых я работал - это были стартапы.
      Скорость разработки много в чем зависит от команды, инструментов, автоматизации рутинных задач и выстроенных процессов. Если команда хорошо знает ноду, то конечно запустить проект на Go будет дорого и сложно, и наоборот)

  • @PavelKorchagin-tl5ff
    @PavelKorchagin-tl5ff 2 роки тому +2

    Спасибо огромное за видео, сам пишу также проекты (не только на GO) с применением Чистой Архитектуры. Хотел бы у тебя узнать, почему у тебя интерфейсы слоя Repository зависят от примитивов MongoDB типа primitive.ObjectID? Интерфейсы Repository должны быть более абстрактными и не привязываться к деталям реализации. В случае, если придется заменить источник данных, например, на Postgres возникнут проблемы. Думаю, лучше было бы заменить primitive.ObjectID на какой-нибудь string, а внутри уже конкретной реализации, в твоем случае MongoDB, преобразовать string в primitive.ObjectID.

    • @MaksimZhashkevych
      @MaksimZhashkevych  2 роки тому

      Если спустя полгода-год работы над проектом прийдется заменить Mongo на Postgres, то ObjectID в интерфейсах будут самой незначительной проблемой)))
      Спасибо за отзыв, рад что видео оказалось полезным

  • @AchekSlime
    @AchekSlime 2 роки тому

    Фоновая музыка иногда сливается с речью и мешает восприятию, убавьте 🙏
    Классная подача и подробный разбор тем, лайк!

  • @vyacheslavs5642
    @vyacheslavs5642 Рік тому

    А как организованы Unit тесты в проект на Go?

  • @simplesv27
    @simplesv27 3 роки тому +10

    Спасибо, полезная информация. У меня есть пара вопросов:
    1) У тебя в домене IDs в structs имеют тип primitive.ObjectID. Не нарушает ли это идею чистой архитектуры, что entities не должны знать какая база данных используется.
    В случае если id передается как string параметром в route, то в каком слое ты приводишь string к objectID, в delivery ? И не лучше ли все эти конвертации проводить в репозиториях и ID на structs хранить как strings ?
    2) Метод SignIn в StudentsService принимает StudentSignInInput struct объявленный, как я понимаю, в handler, то есть в StudentsService будет input из верхнего слоя. Это нормальная практика, или может такие structs лучше держать в domain или service ?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 роки тому +2

      Спасибо, рад что видео оказалось полезным.
      1) Да, нарушает. Однако я пришел к такому выводу, что проще все это хранить в таком виде, поскольку база данных MongoDB скорее всего никогда не поменяется. Если же вдруг и поменяется, намного больше головняка будет с миграцией данных с одной базы в другую и рефакторингом инфраструктуры, чем с изменением типа поля в структуре :)
      2) StudentSignInInput объявлен в пакете service

    • @cjo737
      @cjo737 3 роки тому +1

      @@MaksimZhashkevych тогда зачем объявлять интерфейс в репозитории?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 роки тому +1

      @@cjo737 Чтобы можно было покрыть сервисы юнит тестами, а в качестве репозиториев использовать моки

    • @xbsxbs22
      @xbsxbs22 2 роки тому

      @@MaksimZhashkevych В Go без интерфейса нельзя делать стабы/моки на основании сигнатур имплементации сервиса?

    • @volodymyrzaiets8388
      @volodymyrzaiets8388 2 роки тому +3

      @@MaksimZhashkevych интересно конечно писать интерфейсы для тестов))

  • @gooseman5578
    @gooseman5578 11 місяців тому +1

    какой смысл в /internal/, если там код для приложения, но его нельзя использовать (он НЕ клонируется)?

  • @vladimireliseev7602
    @vladimireliseev7602 3 роки тому +2

    Спасибо, хорошо описано. Я аналогично пишу.
    Хотелось детальней взглянуть на репозиторий. Ссылочка есть?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 роки тому +2

      Да, проект в открытом доступе на моем Github:
      github.com/zhashkevych/courses-backend

    • @vladimireliseev7602
      @vladimireliseev7602 3 роки тому

      @@MaksimZhashkevych thanks

    • @vladimireliseev7602
      @vladimireliseev7602 3 роки тому

      @@MaksimZhashkevych скажи пожалуйста, как корректно назвать такую архитектуру. Т.е. ты в видео озвучил, что есть архитектура flat. А как корректно назвать архитектуру, которую ты используешь в видео?

    • @dostontoshpulatov4043
      @dostontoshpulatov4043 3 роки тому

      @@vladimireliseev7602 clean architecture

  • @vesh95
    @vesh95 2 роки тому

    Я искал подобную информацию во множестве видео, но во всех оказались какие-то онлайн-школы.
    Что ж, тут по крайней мере не попытались впарить промокод да и сама школа всего лишь в коде.
    Так что с моей точки зрения - одобрено

  • @TheWowashka
    @TheWowashka 3 роки тому +5

    Когда планируется релиз книги "Архитектура Современных Веб-Приложений" ?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 роки тому +7

      Владимир, материал книги уже почти готов, однако в процессе работы я решил дополнить текст дополнительными видеоуроками. По итогу весь этот проект перерос в полноценный курс.
      Сейчас я активно работаю над платформой, на которой будут опубликованы "Язык Go Для Начинающих" и "Архитектура Современных Веб-Приложений". Платформа позволит безболезненно обновлять и дополнять материалы курса, а также предоставит более удобный формат для его прохождения.
      Подробную информацию я скоро сообщу в email-рассылке для всех, кто скачал первую главу.

    • @user-bb5xw8bd8w
      @user-bb5xw8bd8w 2 роки тому

      С таким кодом это будет натуральная диверсия. Какие книги могут быть у пионеров? Вопрос риторический

  • @miraclechina1301
    @miraclechina1301 3 роки тому +8

    Не раз слышал о том что не нужно мешать подходы из Java/C# к Go, и советуют не использовать DDD а использовать обычный go-way.

    • @DarDarbl4
      @DarDarbl4 3 роки тому +5

      А причем тут DDD и язык? DDD это не про язык и не про программирование, это проектирование. Реализовать можно на любом языке язык это инструмент. DDD это про архитектуру6 фундаментальные принципы проектирования сложных систем, например такой фундаментальный шаблон как Единый Язык это не про программирование.

  • @nameless_bro1
    @nameless_bro1 3 роки тому +1

    Все круто🔥, только(!), пожалуйста, называй папки - директориями, а файлы(.go) - пакетами🙏. Удачи в развитии канала🍀

    • @maksimg2127
      @maksimg2127 2 роки тому

      Пакет это не файл, а папка

  • @ArtemCYOU
    @ArtemCYOU 2 роки тому

    интерфейс и подсветку vs в goland и было бы зашибись)

  • @user-lb3ed3hv8o
    @user-lb3ed3hv8o 2 роки тому

    А ссылки нет. И, на хабе, также найти не найти данный пример(

  • @romanhs4591
    @romanhs4591 3 роки тому

    можно ли в main подключить локальные пакеты без указания пути через github?

    • @cyneruxyz
      @cyneruxyz 3 роки тому

      Да. Пример: "pkg/auth", если ссылки на хаб нету, он в корне проекта ищет директорию pkg и в ней пакет auth. Поиск не относительно исполняемого файла, а от корневого каталога - это важно.

  • @user-kw9cu
    @user-kw9cu 10 місяців тому

    👍

  • @b.g.5106
    @b.g.5106 3 роки тому

    💪👍

  • @user-cc4jg2bs8z
    @user-cc4jg2bs8z 3 роки тому

    У вас на гитхаб, в том проекте который вы позиционируете как клин архитектур, нет папки internal, это нищетово, мне хотелось посмотреть как вы с ним работаете.

  • @OleksiyOs
    @OleksiyOs Рік тому

    дякую

  • @kyleRQWS
    @kyleRQWS 2 роки тому +1

    Посмотрел курс по RestAPI и вернулся сюда, todo буду переносить на эту структуру, заодно и отточу понимание что и как программировать на go.
    Я загорелся желанием уйти от php и забыть его как страшный сон )

    • @xbsxbs22
      @xbsxbs22 2 роки тому

      Чего страшного в пхп?

    • @kyleRQWS
      @kyleRQWS 2 роки тому +1

      @@xbsxbs22 страшного ничего нет, а вот атавизмы из-за его возраста присутствуют.

    • @xbsxbs22
      @xbsxbs22 2 роки тому

      @@kyleRQWS Какие к примеру?

    • @kyleRQWS
      @kyleRQWS 2 роки тому

      @@xbsxbs22 Функции str_* и с иным форматом наименования strstr strpos, file_exists и filesize.

    • @xbsxbs22
      @xbsxbs22 2 роки тому

      @@kyleRQWS Не совсем понимаю, в чём проблема с именами этих обёрток? они вполне себе заимствованы из библиотек С. Разве Go отличается каким-то особенно отточенным и выверенным неймингом?

  • @mahabat23
    @mahabat23 3 роки тому +2

    Путь "internal->delivery" я бы переименовал в "internal->transport". Вы ведь так и называете его на русском. Потому как слово "delivery" имеет смысл "доставка", как доставка пиццы, в одну сторону - по направлению к объекту получателю.

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 роки тому +1

      хорошее замечание, имеет смысл, спасибо
      я однажды столкнулся с delivery на одном проекте - так и приелось)

  • @pavelpoison3524
    @pavelpoison3524 3 роки тому +1

    Ну какой крон уж?) Тайм тикер есть... А вообще, очень полезное видео!)

  • @stepanchebotaryov5988
    @stepanchebotaryov5988 3 роки тому

    При регистрации на твоём сайте получил письмо с битой ссылкой ( текст выделяется, самой ссылки для активации нет )
    :)

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 роки тому

      Проверил, все работает, а подскажи свой email?

    • @stepanchebotaryov5988
      @stepanchebotaryov5988 3 роки тому

      @@MaksimZhashkevych botanprog@aol.com

    • @stepanchebotaryov5988
      @stepanchebotaryov5988 3 роки тому

      @@MaksimZhashkevych Пользователь с таким email уже зарегистрирован. Если возникли проблемы, напиши мне на zhashkevychmaksim@gmail.com

  • @kolotunbabubay
    @kolotunbabubay 2 роки тому

    я бы использовал DTO.

  • @arucrsov4495
    @arucrsov4495 3 роки тому

    Чё 2160p это каК?

  • @slavapol-v1553
    @slavapol-v1553 3 роки тому

    Так как по Go это сейчас самый адекватный ресурс на русском. Разрешите спросить
    package main
    import "fmt"
    func main() {
    p0 := new(int)
    x := *p0
    p1, p2 := &x, &x
    fmt.Println(p1 == p2) // true
    fmt.Println(p0 == p1) // false
    p3 := &*p0
    fmt.Println(p0 == p3) // true
    }
    не могу вкурить, что произошло вот в этой строке p3 := &*p0

  • @zasssada
    @zasssada 3 роки тому

    Что за IDE?

  • @ostrbor
    @ostrbor 3 роки тому +1

    Мне кажется для веб сервера не походит internal, т.к. такие приложения вряд ли будут импортировать, поэтому защищать от импорта не нужно.

    • @alexeykirinyuk9713
      @alexeykirinyuk9713 3 роки тому +1

      Мне кажется логичнее pkg не использовать в таком случае 😀 а то странно держать бизнес логику в «публичных» пакетах

  • @user-fb6fr5nx9u
    @user-fb6fr5nx9u 3 роки тому

    Решил погрузится в го (по работе хотелось бы переписать один небольшой специфичный микросервис с ноды)
    обычно я стараюсь следовать стайлгайдам конкретных технологий, но, блин, почему в Го так любят все сокращать, переменные из двух букв, обрубленные слова, котрые часто вижу в исходниках библиотек (например, pkg - вместо package, sk - вместо signingKey, sd - вместо seed, h - вместо handler) и тд
    Это реально так приянто в Го или мне просто такой код попадается странный
    Дичь же полная, программы люди же читают, зачем символы экономить, жертвуя читабельностью?)

    • @konstantingeist3587
      @konstantingeist3587 3 роки тому +2

      Есть такое. В стандартной либе тоже такая фигня. Напр. в функции могут встретиться переменные n, s, t и nn, и хер разбери, что они значат. Сам я нарушаю эти правила и пишу без сокращений.

    • @faizulla5838
      @faizulla5838 8 місяців тому

      Потому что Амеры любят сокращать, и зык сам не Golang a Go....

  • @iNerV
    @iNerV 2 роки тому

    а где тесты если это реальный проект? только один увидел, где остальные?

  • @thebosha90
    @thebosha90 2 роки тому +2

    Очередной недо-DDD/clean architecture. Переименуй entity в model и не путай людей. У тебя там сейчас описаны типичные модели ничего не имеющие общего с entity. Возможно, что-то поменяется когда начнёшь писать тесты, но пока это Франкенштейн какой-то. Например, как минимум entity вообще ничего про JSON и как они представлены во внешних слоях знать не должны. И методов там кроме доменной (бизнес) логики никаких не должно быть.

  • @bossikom
    @bossikom 3 роки тому +3

    Писал отзыв развернутый и текст изчез. Коротко, инверсия зависимостей и внедрение зависимостей это разные вещи. У вас в проекте нет инверсии зависимоетей, и буква D в SOLID не соблюдается.

  • @Linuh.
    @Linuh. 9 місяців тому

    Я кстати успел поюзать ключи если что

    • @MaksimZhashkevych
      @MaksimZhashkevych  9 місяців тому

      без проблем, проект неактивный уже давно, юзай наздоровье

  • @fardeadok
    @fardeadok 3 роки тому

    У меня другая структура а тут даже папки вендора нет)

  • @UAStriker
    @UAStriker 3 роки тому +1

    Макс, расскажи как тебя взяли голанг-джуном когда ты толком не знал языка?

    • @MaksimZhashkevych
      @MaksimZhashkevych  3 роки тому +5

      Я показал работодателю что я проактивный, могу быстро учить новое, имею дикое желание развиваться как специалист.
      Также было плюсом что я до этого уже работал в 16 веб-разработчиком, а также у меня был профиль на фрилансе с 6 положительными отзывами.
      Ну и я выполнил 2 тестовых задания на Go, которые мне скинули)

    • @calmsam2217
      @calmsam2217 3 роки тому

      @@MaksimZhashkevych А щас вы также работаете Go Backend разработчиком?) Спасибо за ваши видео, они помогают, надеюсь их будет больше и они будут полными , то есть front + back + docker + db и т д)

  • @user-qj3ij4ux6r
    @user-qj3ij4ux6r 4 місяці тому

    Эх, хорошие раньше видосы были, сейчас, к сожалению, сплошное водогонство пошло.

  • @wMwPlay
    @wMwPlay 2 роки тому +1

    4-ый раз смотрю это видео полностью уже, каждый раз с пользой. Слава Украине!

  • @Blowjin
    @Blowjin 2 роки тому

    "имеет место", а не "имеет место быть". Второе -- это ошибка.

  • @awsom82
    @awsom82 3 місяці тому

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

  • @user-bb5xw8bd8w
    @user-bb5xw8bd8w 2 роки тому +1

    Чем огорчают нынешние детки, сразу оговорюсь, что не все - мы уже все знаем и все умеем. 10К часов или 10 лет никто не отменял, вместо того, чтобы пачкать мозги другим нужно ботанить это время

  • @faizulla5838
    @faizulla5838 Рік тому

    Мляя, без музона слабо????
    словно евровидение освещаете...

  • @7nolikov
    @7nolikov 2 роки тому +2

    Нет ни одной причины повторять информацию в видео несколько раз. Понятнее от этого не становится, только раздражает. Видео можно перематывать, если захочется послушать еще раз.

  • @alexk5067
    @alexk5067 2 роки тому

    Не понял.. в чем прикол? этот проект можно куда проще реализовать на любой адекватной срм symphony, laravel, typo3.. да хоть самому с 0 написать.. Зачем использовать для этого GO? Создать новый язык что бы что? писать сайты??))

  • @user-si7he1kz9o
    @user-si7he1kz9o 3 роки тому +6

    Очередной пухлый роман вместо микросервиса

  • @MaksimZhashkevych
    @MaksimZhashkevych  2 роки тому +1

    Курс GOLANG NINJA - bit.ly/3VWKfu3

    • @LEONEMSOLIS
      @LEONEMSOLIS 2 роки тому

      Какая цена примерно будет? Или пока что не думал?