Архитектура современных веб-приложений на примере adopt.com.ua. CMS. Мониторинг. Аналитика

Так как у меня нет тестов кроме линтеров, то нужно быть готовым быстро фиксить ошибки на проде. Для этого используются логгеры и трекеры ошибок. Логгер я не использую, так как у меня пока что нечего логировать особо. А вот для трекинга ошибок я пользуюсь отличным сервисом Sentry. Как он работает? Вы подключаете SDK в своё приложение, и при возникновении любой ошибки она будет отправлена на сервера Sentry. Дальше, в зависимости от того, что это за ошибка, она или будет съедена, или отправлена вам в виде нотификашки.

Это очень крутая штука, которая экономит прорву времени. О том, что у пользователя что-то сломалось, я узнаю через пару секунд. В ошибке фиксируется не только стектрейс, но и необходимые подробности—например браузер, идентификатор пользователя, параметры HTTP запроса и другое. Раньше для того чтобы понять что что-то упало нужно было копать логи. Сейчас с помощью Sentry и других подобных продуктов это становится очень простым.

Если вы по какой-то невообразимой причине еще не пользуетесь Sentry или аналогом—я строго рекомендую. Сейчас туда подключили еще и APM—Application Performance Monitoring. Эта штука показывает сколько времени занимали запросы к вашему серверу. Тоже очень важная аналитика, которая позволяет найти и тормозящие куски кода.

Для мониторинга доступности я использую UptimeRobot. Это сервис который через определённые промежутки времени ходит по HTTP куда вы скажете и рапортует об ошибках, если таковые возникнут. В бесплатной версии у него есть ограничение—сайте пингуется раз в 5 минут. Но мне этого достаточно. Подобного рода сервисов вагон и маленькая тележка.

Для аналитики пока что подключен google analytics и google search console. Второй я хочу поменять на что-то более вменяемое, но пока руки не дошли. Кроме того хочется прикрутить продуктовую аналитику, чтобы понимать поведение пользователя на сайте и тестировать продуктовые гипотезы. Но это пока только в планах.

Еще одной небольшой частью является CMS. У нас на сайте есть информационный раздел, где редакторы могут публиковать статьи. Вначале я сделал свою CMS на базе встроенного в Ruby on Rails ActionText, но у неё оказались ограниченные возможности. Поэтому я поставил сбоку Ghost который дает полноценные возможности для написания материалов и написал интеграцию—в момент публикации статьи на Ghost она пушится к нам на сайт и я сохраняю HTML, который дальше отрисовывается.

Эта интеграция стала началом моего знакомства с Ghost. Дальше я перевел на него свой блог, написал интеграцию с телеграмом и сейчас делаю маленький продукт для блогеров и инфобизнесменов на базе этой связки.


Стоимость всей инфраструктуры: GitLab+Pipelines бесплатно, Heroku Dyno Web + Worker 14$, Heroku Postgres 9$, Heroku Redis бесплатно, AWS S3 0.25$, AWS CloudFront 2.60$, Sentry бесплатно, Uptimerobot бесплатно, ImageKit.io бесплатно, Mailjet бесплатно, Cloudflare бесплатно. Итого 25.85$ за всё.


Как видите, даже для такого простого сайта используется прорва сложных технологий. И это не оверинжиниринг, я делал всё по минимуму.


Понравился материал? Подписывайся на мой телеграм канал: https://t.me/full_of_hatred