Вы упомянули, что используете 2 типа для чтения/записи бд. Непонятно что такое типы, но мы открывали 2 коннекта к базе и оборачивали в структуру, а когда надо чтото делать с бд, то явно указываем в какую реплику идти. Судя по видео вы пытаетесь из го сделать джаву, что противоречит философии го. Есть фидбэк от людей, которые приходили к вам в команду и глядя на репозиторий говорили, что это очень круто/отстойно? Как я понял у вас есть опыт разработки монолитов на го. Не могли бы вы поделиться причинами такого выбора и какими нибудь сравнительными тестами(rps, memory, profiler...) монолита с микросервисами на го? Да и вообще про монолиты на го было бы интересно узнать(на сколько сложно поддерживать, какие трудности есть, как воююете с жирными бинарниками, какой размер монолита...)
@АлександрЗверев-й1х7 ай бұрын
Спасибо большое. Будет продолжение, но уже с reflection based DI?
@VyacheArt5 ай бұрын
Думаю да, в будущем расскажу про uber/dig и defval/di. Спасибо!
@qbee13 ай бұрын
белая тема это сильно, чуть не ослеп
@Александр-б6с3ъ7 ай бұрын
Не хватает про shared зависимости темы. Часто в ногу стреляют себе не понимая, что создается, а что переиспользуется. Каждый инжектор создает по умолчанию для себя новые зависимости независимые. Если использовать более 1 инжектора и где-то в графе зависимостей нужен будет общий логер например или коннект к базе данных, то там для каждого графа зависимостей в рамках инжектора будут провайдеры вывываться и возвращать новые инстансы (если провайдер не сделан специально как singleton возврат). В symfony DI это опция `shared` регулирует явно например. Об этом стоило бы подсветить и показать как оба варианта решать в wire, чтобы дать более полные знания
@VyacheArt5 ай бұрын
Можно сказать, что в Wire всё что создаётся в процессе "shared", то есть созданный единожды *log.Logger будет прокидываться далее во все инжекторы, которые требуют *log.Logger. Это можно заметить по сгенерированному файлу. Более того, нельзя использовать два инжектора, которые будут возвращать инстансы одного и того же типа, это тоже подсветил в разделе "5. Типы значений в Wire или ошибка multiple bindings for". Тут как раз наоборот, если нужно два логгера, то у каждого должен быть свой тип (через type aliasing, например), и для каждого типа свой провайдер. Тогда создадутся два независимых инстанса.
@Александр-б6с3ъ5 ай бұрын
@@VyacheArt Да , все так, в гайде об этом не хватило информации, хотя он выглядит достаточно основательным и полным. Если будет вторая часть, то этот гайд с дополнением можно смело давать новичкам, зная что он полный
@it18608 ай бұрын
1
@xoka31308 ай бұрын
жаль ток утиная типизация интерфейсов пропадает
@VyacheArt8 ай бұрын
Ну она фактически остаётся, просто явно нужно биндить интерфейс и имплементацию 🙂 Но неявно да, оно не славливается