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



В среду провел стрим, профилировали аллокацию памяти в руби.

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



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



От монолита к микросервисам



Из статьи узнаете об определении монолита и получите список пунктов когда стоит переходить на сервисы. А так же, автор описывает идею декомпозиции, которую можно применять в легаси проектах, показывая на примере выделения сервиса из связки FrontEnd, BackEnd и базы данных. Идея проста: выделить новый боундед контекст, взять гейтвей и вытащить контекст в отдельный сервис. Если совместить статью с идеями из прошлой статьи, то можно сделать подробный гайд об экстракции сервиса.





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



How to Break Apart a Rails Monolith



Статья продолжение, в которой автор описывает подход разделения монолита на изолированные части с примером на RoR. Мне понравилась диаграмма, благодаря которой можно понять каким путем можно разделить части приложения (separate gems, engines, separate applications). К этой диаграмме так же даются описания и примеры, которые позволят лучше понять идею автора.



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



How to make up-selling recommendations based on cart using Redis



Пример создания рекомендательной системы основанной на прошлых items в orders и популярности этих items. Автор статьи свел задачу к двум проблем:



- finding all previous orders matching the current cart’s product list

- getting other products from those carts aggregated, counted and ordered by frequency



Первая проблема решается с помощью set в редисе, добавлением айтема в ключи заказов (SADD) и последующим вызовом SINTER для определения похожих ордеров. Вторая проблема решается с помощью sorted set.



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



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



- Endless method definition · Pull Request #2996 · ruby/ruby