Информация
- В рейтинге
- Не участвует
- Откуда
- Ульяновск, Ульяновская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Бэкенд разработчик, Архитектор программного обеспечения
Ведущий
От 5 000 $
PHP
MySQL
Symfony
Golang
REST
RabbitMQ
PostgreSQL
Apache Kafka
Высоконагруженные системы
MongoDB
тут ведь много факторов. например фактор нагрузки. то есть — решения типа егеря умеют в ловлю логов — но плохо. а скакать между егерем и логами… что куда пошло. не. это не работает. когад система одна (newrelic) — это работает. когда 2 и больше — нет.
далее — в целом newrelic уже был. и как раз для APM. поэтому когда понимали sentry — не было задачи чтотто делать с APM. как и когда понимали ELK (он тоже умеет в APM).
далее — Sentry положить нагрузкой — как нефиг делать :) поэтому Sentry у нас — только для явных ошибок. и все. и хорошо что живой :)
далее — фактор работы-из-коробки. когда ставишь newrelic agent for php — оно просто хоп и заработало. когда ставишь бандл для open telemetry — то надо все приложения перелопачивать, что бы все з0апросы обрабатывались, чтобы rabbitmq бандл правильный использовался и прочее. все тим лиды компании начинают про тебя очень плохзо думать :)
вооот
так что — Sentry для логов с ошибками, ELK — для всех логов. для жосткого APM / отладки — blackfire. для APM в проде — newrelic. и он же для services map, немного для логов, алертинга и для картины в целом. метрики — либо прометей (ибо есть экспортеры — поставил и работает) либо statsd (когда надо чтобы приложение чтото пихало) откуда все сводится в графану.
в результате — то что с приложением все хорошо — просто видно в графане.
если приложению плохо — то об этом проорет sentry / grafana / newrelic. и мы побежим в sentry / ELK / newrelic APM / newrelic services map.
все просто.
да, это не так важно.
просто как бы… есть таки еще newrelic, который умеет в и в телеметрию и в services maps, прчием умеет это комплексно и лучше егеря. поэтому всегда можно посмотреть еще и в newrelic. а там еще и APM хороший и вообще… но для логов newrelic не очень… потому получается, что левый глаз смотрит в sentry/ELK а правый еще и в newrelic. чуть неудобно, но в целом ок.
плюс там проблемы с интеграцией — newrelic встает и все начинает работать. а open telemetry надо пропихнуть во все запросы (HTTP / AMQP) и ловить везде (HTTP / AMQP). вменяемого бандла для того же symfony нет…
поэтому обзор бесплатных инструментов в open telemetry оставил двоякое ощущение. да — круто. но пользы по факту мало от этого… надо прям нормальтно все допиливать. и тут получается что для руководства проще платить за newrelic чем оплачивать работу своих кодеров, за поддержку этого всего и прочее…
Пример продвинутого метода репозитория:
public function fincAllActive()
{
return $this->getQueryBuilder('users')->onlyActive()->getResult();
}
Соответственно — в QueryBuilder'е есть такие методы:
public function getResult()
{
return $this->getQuery()->getResult();
}
public function onlyActive()
{
return $this
->andWhere($this->getAlias() . '.active = :activeStatus')
->setParameter('activeStatus', true);
}
Пример начала миграции к такому подходу в рабочем проекте:
репозитоий:
github.com/litecommerce/core/blob/1.0-master/src/classes/XLite/Model/Repo/ARepo.php#L1257
QueryBuilder:
github.com/litecommerce/core/blob/1.0-master/src/classes/XLite/Model/QueryBuilder/AQueryBuilder.php
Активного использования пользовательского QueryBuilder'а там нету — но будет :)
+ заложились на то, что пока пишут — PHP 5.3.х завоюет мир