> ## Content Index
> Fetch the complete content index at: https://www.rozhkov.me/llms.txt
> Use this file to discover other available public pages before exploring further.

# Архитектура современных веб-приложений на примере adopt.com.ua. CMS. Мониторинг. Аналитика
- URL: https://www.rozhkov.me/modern-web-applications-architecture-monitoring-and-analytics/
- Published: 2021-04-30T06:00:00.000Z
- Updated: 2021-07-02T10:01:27.000Z
- Author: Vova Rozhkov
- Tags: робота, інструменти, проєкти

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

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

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

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

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

Еще одной небольшой частью является CMS. У нас на сайте есть информационный раздел, где редакторы могут публиковать статьи. Вначале я сделал свою CMS на базе встроенного в Ruby on Rails ActionText, но у неё оказались ограниченные возможности. Поэтому я поставил сбоку [Ghost](https://ghost.org/) который дает полноценные возможности для написания материалов и написал интеграцию—в момент публикации статьи на 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$ за всё.

---

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