Илья @ilyachase
Staff software engineer
Information
- Rating
- Does not participate
- Location
- Екатеринбург, Свердловская обл., Россия
- Date of birth
- Registered
- Activity
Specialization
Backend Developer, Software Architect
Lead
Git
PHP
MySQL
Nginx
Symfony
Elasticsearch
MongoDB
REST
Docker
CI/CD
Добрый день. Спасибо за мнение. Рад, что вы нашли полезные мысли и вещи.
Добрый день. Реализация таких event-driven-specific техник интересна, но выходит за рамки миграции архитектуры, а статья именно об этом. Возможно, вы пропустили следующую ремарку:
Спасибо за статью!
Честно скажу, разбор всего кода не осилил. Но тезисно проблематика в первой части статьи интересна, и действительно, часто встречается в новых командах.
По моему опыту, полезно держать фокус на балансе скорость\качество, т.к. почти нигде не стоит задачи писать идеальный код. Исходя из этого можно использовать полезный подход от Джефа Безоса "I disagree but commit". Другими словами, когда возникает обсуждение, которое перетекает в академические споры, хороший техлид может поставить их на паузу и сказать что-то вроде: "ребята, это очень интересная дискуссия, но у нас нет цели писать идеальный код, так что давайте пока выберем вариант Х и будем двигаться дальше, а если увидим, что он приносит проблемы, то позже пересмотрим". Если правильно это подать, то люди, даже не согласные с выбранным подходом, согласятся ему следовать, просто потому что спорить можно бесконечно.
По поводу Unit tests и TDD - наверное, озвучу непопулярное мнение, но я стараюсь вообще отходить от юнит-тестов. По опыту они долги в написании, у них высокий maintenance cost, а ловят реально nasty проблемы они редко. Так что тут пришел к фразе одного умного человека:
Тесты писать нужно, но лучше на уровне абстракции повыше unit :-)
Спасибо за статью!
Правильно понимаю, что если этого места не было, и вместо него был бы, например, запрос в базу за конкретным токеном, то lazy-load по связи всё же срабатывал бы при сериализации юзера? Спрашиваю, потому что при code review у меня бы зацепило взгляд именно это место.
Добрый день. Спасибо за комментарий.
По опыту двух проектов, HTTP оверхед интуитивно пугает больше, чем он есть на самом деле. В обоих случаях сервисы находились в рамках одного дата-центра, и данный оверхед почти не имел импакта на latency. Если не изменяет память, то RPS в нашем случае колебался от 10 до 100.
Что же касается async, то здесь картина другая, и нужно хорошо продумывать архитектуру. В большинстве случаев как минимум необходим autoscaling консумеров и хороший мониторинг с алертами, чтобы сообщения в очередях не копились. Зато потенциально такая архитектура масштабируется даже лучше.
Во сне мозг что-то вычисляет?
…
}
:-)