Создание и развитие сложных Highload проектов для сферы e-commerce и sourcing подразумевает не только построение правильной архитектуры приложений, но также и использование соответствующих технологий, экспертизу разработчиков, способность обеспечить работоспособность таких систем. Нельзя разработать проект и далее не заниматься его развитием, поддержанием, необходимо регулярно увеличивать мощности системы.
Кроме этого, Enterprise web-продукты состоят из огромного количества различных составных частей, каждая из которых отвечает за определенную часть всех экосистем приложения. В статье подробно разберем особенности использования баз данных, подходящие для таких систем языки программирования и фреймворки, а также другие нюансы, связанные с архитектурой сложного 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 систем управления баз данных: Redis (использует AGORA), Tarantool.
К плюсам In-memory баз можно отнести:
- высокая пропускная способность, быстрое выполнение операций;
- традиционная схема хранения данных в виде строк;
- с помощью резидентных баз удобно хранить кэш результатов запросов, пользовательских сессий и других часто используемых объектов.
Интерфейсы
Многие 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 проект – с одной стороны, это качественная ИТ-среда продуктов. С другой стороны, ИТ-продукт служит для того, чтобы приносить прибыль компании, потому что любой бизнес в первую очередь направлен на получение прибыли. В связи с этим нужно анализировать параллельно и качество работы системы, и эффективность экономических показателей бизнеса с помощью всевозможных метрик.
Измеряя различные метрики, можно определить не только качество оказываемого сервиса, но удобство системы, выяснить потребности пользователей и другое. Для любой экосистемы диджитализации B2B, B2C или B2G компаний необходим сервис, позволяющий оценивать посещаемость web-платформы и анализировать поведение пользователей.
При этом бесплатные системы не обладают достаточным уровнем функциональности, которого требуют ИТ-проекты уровня Enterprise. Напротив, в тот момент, когда программы с высоким уровнем функционала, например, Adobe Analytics, стоят значительно дороже. Поэтому, как правило, используют Google Analytics и Яндекс.Метрику, но здесь тоже есть свои особенности. Например, для маркетплейса Ozon аналитику Google не будут использовать, потому что у Google Analytics есть ограничения по количеству бесплатных пользователей. Допустим, если более 60 тысяч пользователей, то функционал аналитики становится платным, а это уже очень большие затраты.
В случае с Enterprise проектами для цифровизации деятельности конкретной компании-заказчика количество пользователей не будет превышать максимума. Однако, как показывает опыт, для качественной аналитики компания-заказчик должна запланировать дальнейшие инвестиции в такую систему.
Чтобы узнать подробнее о разработке высоконагруженных Enterprise проектов, а также об особенностях и возможностях, которые может предложить вендор и интегратор AGORA, переходите в wiki.agora.ru или свяжитесь с менеджером.