button-top-arrow
agora-logo
Заполните форму либо позвоните по
телефонам 8 (800) 200-53-20,
8 (495) 128-99-39 или отправьте письмо на
наш e-mail: info@agora.ru
8 495 128 99 39
email help@agora.ru
создание высоконагруженного веб продукта

12 декабря 2023 г.

12 мин 625

12 декабря 2023 г.

Разработка Enterprise web-продукта: особенности использования баз данных, языков программирования, логирования и аналитики. Часть №2

Создание и развитие сложных Highload проектов для сферы e-commerce и sourcing подразумевает не только построение правильной архитектуры приложений, но также и использование соответствующих технологий, экспертизу разработчиков, способность обеспечить работоспособность таких систем. Нельзя разработать проект и далее не заниматься его развитием, поддержанием, необходимо регулярно увеличивать мощности системы.

Кроме этого, Enterprise web-продукты состоят из огромного количества различных составных частей, каждая из которых отвечает за определенную часть всех экосистем приложения. В статье подробно разберем особенности использования баз данных, подходящие для таких систем языки программирования и фреймворки, а также другие нюансы, связанные с архитектурой сложного Enterprise web-решения.

Архитектура приложения

Архитектура приложения может быть монолитной, микросервисной или комбинированной:

  • Монолитная архитектура приложения представляет собой единую, неделимую структуру, в которой все компоненты приложения крепко связаны между собой.
  • Сущность микросервисной архитектуры направлена на взаимодействие небольших, слабо связанных и легко изменяемых модулей – микросервисов.
  • Комбинированная архитектура приложения сочетает в себе элементы и монолитной, и микросервисной модели. Здесь механизмы взаимодействия системы выстраиваются индивидуально под потребности системы.

Подробнее рассказываем об особенностях микросервисной, монолитной и комбинированной архитектур приложений, которые используются в решениях на базе платформы, в статье блога.

К архитектуре Enperprise приложений также относится размещение и развертывание отдельных частей приложения в различных контурах сети.

AGORA – это клиент-серверное приложение, в котором клиентом выступает браузер, а сервером – веб-сервер, на котором хранится само приложение. И для большинства компаний важна информационная безопасность, чтобы наиболее важная часть web-приложения была размещена во внутреннем контуре сети компании – на полностью закрытом от интернета сервере. К этой части данных нет доступа через браузер, следовательно, пользователи без доступа не смогут проникнуть в ядро всей корпоративной системы. Во внутреннем контуре весь трафик под контролем, присутствует управление правами пользователей. Все приложения или части приложений, которые должны взаимодействовать с внешними пользователями, устанавливаются в DMZ. Demilitarized Zone – часть локальной сети, где устанавливаются общедоступные сервисы из интернета, но при этом изолирована от других ресурсов компании-заказчика. Поддержание подобной архитектуры особенно важно для крупных Enterprise холдингов, что как раз является конкурентным преимуществом AGORA.

Фреймворки и языки программирования

Любая онлайн-страница, сайт, а также сложный web-продукт состоят из кода, а сочетание правил в коде формируют различные языки программирования. Код – это сочетание алгоритмов, по которым работает программное обеспечение, сайт или приложение. У кода в проектах на базе платформы AGORA модульная архитектура. Например, есть некий модуль в системе, и его код отделен от всей программы, он может дописываться, изменяться отдельно, а также можно переиспользовать его библиотеки. Каждый модуль изолирован, тем самым с ним удобнее работать разработчикам и тестировщикам. SQL (Structured Query Language, или язык структурированных запросов) — язык запросов и программирования, который служит для создания, обработки и хранения данных в реляционных базах данных.

В связи с разнообразием корпоративных Enterprise систем необходим и соответствующий язык программирования, а также подходящий под него framework. Framework – это каркас или структура, на базе которой будет разрабатываться конечный продукт. Для лучшего понимания: язык программирования – это кирпич, а фреймворк – это проект здания. Использование фреймворка в процессе разработки проще, чем писать код с нуля.

Компания AGORA использует язык программирования Python и фреймворки Django для разработки Enterprise проектов. Python – это универсальный язык программирования, который за счет своей простоты и большого спектра возможностей создает комфортную среду для работы.

К преимуществам Python можно отнести:

  • простое восприятие и синтаксис кода;
  • широкий выбор библиотек и фреймворков;
  • кроссплатформенность – возможность запускать web-приложение во всех операционных системах;
  • большое сообщество разработчиков на рынке – не будет проблем с поиском кадров для поддержки работоспособности системы;
  • масштабируемость из коробки.

преимущества использования реляционных бд

Базы данных

Когда начинается работа над новым Enterprise проектом, важно сразу проанализировать, по каким критериям и какой формат базы данных лучше выбрать. Существует большое количество различных баз данных и инструментов, которые позволяют с этими базами работать. Под разные задачи подходят различные типы БД, все зависит от сценариев пользователей, объемов данных и еще очень многих критериев. Важно продумать этот вопрос на старте разработке проекта.

База данных — это хранилище информации, в которой код или другая информация создается, упорядоченно хранится, обрабатывается.

Одна из наиболее популярных программ PostgreSQL, которую в том числе использует AGORA, — объектно-реляционная система управления базами данных, помогает управлять большими объемами четко структурированных данных. PostgreSQL декларирует себя как базу данных уровня Enterprise, у которой много различных инструментов управления. Например триггеры, которые используются, чтобы оповестить систему PostgreSQL выполнить часть кода при наступлении определенных событий, и много другого функционала.

Базы данных бывают различного типа. Наиболее популярные реляционные и in-memory базы данных. Реляционная база данных – набор данных, которые используются для хранения и предоставления доступа к взаимосвязанным элементам информации на жестком диске. Реляционные базы данных представлены в табличном формате, при этом информация вносится в таблицу согласно регламентированному шаблону. Особенность такой базы заключается в ее целостности, а именно в упорядоченной последовательности действий, работающих над решением одной задачи. В связи с этим такая база должна быть автономной, чтобы обеспечить полное выполнение операции или полную ее отмену, если хоть какая-то часть в цепочке не может быть реализована.

Преимущества использования реляционных баз данных:

  • более простой табличный формат для работы с данными;
  • легко классифицировать и хранить данные, которые в дальнейшем могут быть отфильтрованы и запрошены для извлечения конкретной информации;
  • после сохранения текущей базы данных, можно добавить новую категорию;
  • исключается дублирование данных;
  • несколько пользователей могут получить доступ к одной базе данных.

In-memory или резидентная бд

In-memory или резидентная база данных, размещаемая в оперативной памяти. Размещение данных в оперативной памяти обеспечивает большие преимущества в скорости, так как операций с данными в памяти происходит с меньшим числом инструкций действий. В вопросе скорости работы с данными определенно выигрывает оперативная память у жесткого диска. Однако здесь есть минус, что оперативная память начинает со временем расти, поэтому здесь предусмотрена горизонтальная масштабируемость системы. А именно, несколько кластеров, которые применяются для дробления информации и добавления дополнительного количества серверов. Есть несколько популярных in-memory систем управления баз данных: Redis (использует AGORA), Tarantool.

К плюсам In-memory баз можно отнести:

  • высокая пропускная способность, быстрое выполнение операций;
  • традиционная схема хранения данных в виде строк;
  • с помощью резидентных баз удобно хранить кэш результатов запросов, пользовательских сессий и других часто используемых объектов.

языки программирования для enterprise проектов

Интерфейсы

Многие Enterprise проекты используют модель интерфейса Single Page Application. SPA – одностраничное приложение, для работы которого не нужно обновление страницы, потому что все данные подгружаются с помощью скриптов. Чтобы понять принцип работы SPA, приведем пример: пользователь нажимает на ссылку, и скрипт перехватывает событие. При классической передаче данных между сервером и браузером отправляется полноценная сформированная страница, в таком случае у сервера тратится большой объем ресурсов на генерацию этой страницы. В случае использования модели SPA между сервером и браузером передается только чистый трафик текстовой информации, это значительно снижает нагрузку на работу сервера и увеличивает скорость передачи данных.

Главные преимущества такого решения в том, что, во-первых, такой сайт загружается быстрее, а во-вторых, можно отдельно разрабатывать frontend и backend. Однако с точки зрения себестоимости headless application технологии дороже, потому что сильно зависимы от кода JavaScript, который по-разному работает в различных браузерах, и для корректной работы страницы потребуется больше ресурсов. JavaScript – язык программирования для разработки интерактивных веб-страниц. Очень популярный язык программирования для разработки frontend – «лицевой» стороны сайта, с которой взаимодействуют пользователи.

Журналирование событий в системе

Как разобрали ранее, web-проекты уровня Enterprise сочетают в себе большое количество систем внутри, поэтому есть потребность в постоянном мониторинге и отслеживании процессов, которые в них происходят.

Лог – это текстовый файл, в котором записываются данные о действиях системы или пользователей, и который хранится на сервере. Если более простым языком, то это хронология действий, событий и ошибок, а также причин, по которым эти ошибки могли произойти. Следовательно, логирование — это сам процесс записи логов, например, который позволяет выяснить причину возникновения ошибки.

что такое логирование

Логи есть системные и есть логи действий пользователей. Если говорить про логирование системы, то мониторинг устроен таким образом, что он может показывать количество ошибок на проекте, а также содержание этих ошибок. Система настраивается так, чтобы своевременно уведомлять техническую поддержку об ошибках. Если на проекте возникает большое количество ошибок, то стоит задуматься о повышении качества разработки проекта.

Решения на базе платформы AGORA предлагают выгрузку системных логов в отдельную систему GrayLog, которая позволяет хранить, обрабатывать, управлять записями логов. GrayLog работает на базе Elasticsearch (система умного поиска), а также является платформой с открытым исходным кодом. В данном случае AGORA использует OpenSearch — это форк (ответвление) ElasticSearch. GrayLog формирует таблицу с количеством ошибок по проекту. Узнать подробную информацию, на каких страницах появилась ошибка, зафиксированная в GrayLog, можно в системе Sentry. Она позволяет разработчикам оперативно реагировать на возникающие ошибки и исправлять сбои в режиме реального времени.

Важный пункт в теме — это «перехват ошибок». Если система мониторинга обнаружила ошибку, то ей удается перехватить и изолировать только поврежденную часть приложения, оставляя дееспособной остальную часть системы.

Ещё одним элементом в Enterprise проектах является проверка на живучесть Health Check. Данный плагин используется для проверки работоспособности системы, который сообщает, что приложение доступно для обработки запросов.

Health Check бывают двух типов:

  • Metric-based health check - тестирование по зафиксированным логам. Когда GrayLog и Sentry анализируют логи и видят повторяющуюся проблему, происходит тестирование какой-то определенной зависимости или подсистемы.
  • Базовая проверка работоспособности. Тестирование проводится для получения ответа о работоспособности системы в конечной точке URL-адреса. Например, плагин по различным частям системы отправляет запрос, и эти части реагируют своевременно. Но в какой-то момент плагин отправляет запрос и не получает ответ, отправляет запрос повторно и если также не дожидается ответа, то сигнализирует о возникшей проблеме.

Метрики и системы для аналитики

Enterprise проект – с одной стороны, это качественная ИТ-среда продуктов. С другой стороны, ИТ-продукт служит для того, чтобы приносить прибыль компании, потому что любой бизнес в первую очередь направлен на получение прибыли. В связи с этим нужно анализировать параллельно и качество работы системы, и эффективность экономических показателей бизнеса с помощью всевозможных метрик.

планирование инвестиций для качественного анализа работы enterprise проекта

Измеряя различные метрики, можно определить не только качество оказываемого сервиса, но удобство системы, выяснить потребности пользователей и другое. Для любой экосистемы диджитализации B2B, B2C или B2G компаний необходим сервис, позволяющий оценивать посещаемость web-платформы и анализировать поведение пользователей.

При этом бесплатные системы не обладают достаточным уровнем функциональности, которого требуют ИТ-проекты уровня Enterprise. Напротив, в тот момент, когда программы с высоким уровнем функционала, например, Adobe Analytics, стоят значительно дороже. Поэтому, как правило, используют Google Analytics и Яндекс.Метрику, но здесь тоже есть свои особенности. Например, для маркетплейса Ozon аналитику Google не будут использовать, потому что у Google Analytics есть ограничения по количеству бесплатных пользователей. Допустим, если более 60 тысяч пользователей, то функционал аналитики становится платным, а это уже очень большие затраты.

В случае с Enterprise проектами для цифровизации деятельности конкретной компании-заказчика количество пользователей не будет превышать максимума. Однако, как показывает опыт, для качественной аналитики компания-заказчик должна запланировать дальнейшие инвестиции в такую систему.

Чтобы узнать подробнее о разработке высоконагруженных Enterprise проектов, а также об особенностях и возможностях, которые может предложить вендор и интегратор AGORA, переходите в wiki.agora.ru или свяжитесь с менеджером.

Читайте также

agora-white-logo
Заполните форму либо позвоните по телефонам
8 (800) 200-53-20 , 8 (495) 128-99-39 или отправьте письмо на наш e-mail: info@agora.ru
Заполните форму либо позвоните по
телефонам 8 (800) 200-53-20,
8 (495) 128-99-39 или отправьте письмо на наш e-mail: info@agora.ru