Пятничное чтиво



Пару недель начал делать Inventarium, с помощью которого хочу решить проблему человеческого observability в сервисных/микросервисных системах. Если каждый раз приходится спрашивать где ссылка на роллбар или логи, нет визуализации связей между сервисами, нет процессов для выкатки нового сервиса в продакшен, информация в конфлюенсе устаревает и хочется видеть систему целиком, то inventarium поможет решить эти проблемы. MVP уже готов и хочется найти людей для закрытого бета теста. Если интересно - напишите пожалуйста в личку.



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



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



—————————————



Programming stuff: DI Паттерны. Service Locator



Если вы были на rubyrussia 2019 и смотрели мой доклад или доклад Никиты (об алгебраических эффектах), то возможно вспомните, что упоминался Service Locator в качестве антипаттерна и почему dry имплементация DI антипаттерн. По ссылке выше автор описывает Service Locator и дает примеры на C#, описывающие как паттерн работает. Также, поднимается тема Service Locator как антипаттерна. Если в двух словах:



# bad

def action(params)

service = Container['http://amp.gs/3HFd']

http://amp.gs/3HFO(params)

end



# also bad

def action(container = Container)

service = container['http://amp.gs/3HFd']

http://amp.gs/3HFO(params)

end





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



—————————————



Опыт внедрения Service Mesh на Nomad и Consul



Ребята из учи ру делятся опытом внедрения service mesh в системе. Описывается причины появления service mesh, а также конечная реализация. Из интересного - хочется выделить бонусы, которые появились (визуализация трафика и рейсинг).



—————————————



API versioning and evolution with proxies



История эволюции проекта с помощью использования API версий в разных сервисах. Основная идея которую взял из статьи - разные API версии не обязательно должны быть в одном сервисе. Так же, заинтересовало описание сервиса Sentinel, напомнило реализацию Backends For Frontends паттерна. Так же, затрагивается идея dynamic configuration updates to APIs.



В своей практике я уже выносил логику из монолита используя разные API версии, запись доклада, где делюсь опытом.



——— одной строкой ———



- Ruby core: Thread scheduler for lightweight concurrency