E
Erick's Streams
@erickskrauch_streams1.4K подп.
9.8Kпросмотров
5 декабря 2025 г.
Score: 10.7K
🖥 Библиотека для сбора метрик Prometheus для PHP. В пояснительной записке к дипломной работе в колледже, а после и в университете, всегда первыми шли «Анализ существующих аналогов» и «Обоснование выбора языка и сред разработки». В учебное время это были смешные пункты, мол, конечно, есть аналоги лучше моего куска, да и обоснование простое — это надо для учёбы. Но видит бог, на работе я до последнего сопротивлялся тому, чтобы браться писать свой велосипед. Самая популярная 🖥 библиотека имела ряд фатальных недостатков™, форки не спасали, а альтернативы находились ещё дальше от того, что было нужно для нашей инфраструктуры. Таким образом вывод был однозначен: нужно писать своё 💀 За основу я взял 🖥 форк вышеупомянутой библиотеки, т.к. её интерфейс и архитектура были наиболее удачными, а в форке уже была проделана часть необходимой работы. Чем больше я рефакторил, тем больше я начинал понимать, почему в крупных компаниях есть практика аудита зависимостей 🙃 Вот вам несколько примеров (24 миллиона установок, кстати): ❓KEYS для сбора метрик. ❓base64() поверх json_encode(). ❓EVAL для записи метрик. ❓SISMEMBER перед SADD. ❓SCAN для очистки хранилища. ❓"Тесты" 😂 // Такс, какие они плохие я написал, теперь нужно рассказать о том, какой я молодец В моём велосипеде: ⭐️ Реализация на двух хешах Redis. ⭐️ Абстрагированная реализация клиента Redis. ⭐️ Сборка метрик в 2 запроса к Redis. ⭐️ Строгая типизация для PHPStan и Psalm. ⭐️ Реальные тесты (пусть их пока и мало). ⭐️ Гораздо более читаемый код (субъективно). Библиотека успешно внедрена на моём рабочем проекте и в перспективе заменит statsd на Аккаунтах Ely.by. Так что прошу любить и жаловать: 🖥 GitHub 🖥 Packagist
9.8K
просмотров
1686
символов
Да
эмодзи
Нет
медиа

Другие посты @erickskrauch_streams

Все посты канала →
🖥 Библиотека для сбора метрик Prometheus для PHP. В пояснит — @erickskrauch_streams | PostSniper