XIF-BUH
Страны:
Украина, Россия, Казахстан
Технологии:
- Backend - Laravel 5.x framework, Docker, Node js server & Nginx server, Postgresql
- Frontend - HTML, CSS, Angular 6.x, Redis
Архитектура и краткое описание проекта:
На сайте используется разделенная архитектура. API и административная панель разработаны с помощью фреймворка Laravel 5.x, а клиентская часть с помощью Angular 6.x. Как видно на схеме у нас есть 4 основных логических блока, рассмотрим их более детально.
Backend: Для единой среды окружения как на production серверах, так и для разработки используется Docker контейнеризация. Для бэкэнда в качестве web-сервера мы используем Nginx, а для обработки динамических данных php-fpm. Мы видим, что одним из контейнеров является Node js сервер. В данном случае не стоит на этом заострять внимание, так как он используется лишь для сборки статических файлов (css, js, fonts, img) с помощью npm пакетов. После того, как сборка заканчивается, контейнер останавливается. Для хранения данных в качестве реляционной СУБД используется Postgresql. Для хранения сессий, кэша и очередей используется нереляционная СУБД Redis. Обе базы в целях масштабируемости и отказоустойчивости системы расположены на внешних серверах.
Для быстрого поиска по многомиллионным спискам запчастей и моделей используется сервис Elastic Search or Amazon, что позволяет его легко масштабировать, управлять уровнем доступа, использовать удобным интерфейс Kibana и автоматически обновляться до новых версий сервиса.
Frontend: Для реализации клиентской части был выбран фреймворк Angular. В качестве web-сервера как и для бэкэнда мы используем Nginx. Все статические файлы отдаются непосредственного с его помощью. Все запросы от клиентов проксируются на API. Для кеширования также используется Redis. Помимо клиентского рендеринга страниц еще используется серверный, он реализованный на Node js сервере с помощью компонента Angular Universal. Существует много статей в интернете, в которых описано, что сайты на Angular невозможно продвигать. Но в нашем случае очень хорошо видно, что это не так. Поисковые роботы отлично краулят сайт.
Storage: Для хранения статических файлов, таких как изображения и документация для запчастей и моделей, используется хранилище S3 от Amazon. Как видно на схеме при обращении к S3 задействуются службы CloudFront и Lambda function. CloudFront - это CDN от Amazon обеспечивающий быструю передачу данных с различных уголков мира. Сервис Lambda используется лишь для одной цели - присвоение заголовка Cache-Control для всех объектов на S3, то есть другими словами мы указываем время жизни данных в кэше.
1C: Еще одним немаловажным блоком этой цепочки является обмен данными с 1С-Предприятием. Обмен имеет два направление, первое - это непосредствонно обмен через API для получения информации о заказах, обновлении цен запчастей и другие горящие моменты, и второе - это выгрузка новых вендоров через дополнительные базы без участия API. Во втором случае обработанные и подготовленные данные со стороны 1С выгружаются в дополнительные базы, также postgresql, которые в свою очередь с обработкой на phpпереносятся в основную базу. Такой подход синхронизации сложился исторически из-за специфики работы с 1С-разработчиками, для ограничения доступа к основным данным и для ускорения обмена.
Система устроена таким образом, что одновременно может быть несколько сайтов, с единым кодом как для бэкэнда, так и для фронтенда, но разными базами данных. Это позволяет упростить работу с ценами, с языками, позволяет избавиться от функционала по ограничениям доступа к различным разделам административной панели, также упрощает работу SEO отделу для продвижения сайтов на разные страны. На текущий момент успешно запущены:
- XIF-BUH (Украина) с поддержкой двух язывков (укр. и рус.)
- XIF-BUH (Россия) с одним языком, но с огромным количеством поддоменов, добавляемых в административной панели
- XIF-BUH (Казахстан) с одним языком (рус).
Система позволяет на основании внедряемых переменных формировать уникальные тексты, что в свою очередь дает возможность продвигать сайт как для регионов, так и для отдельно взятых городов. В ближайшее время планируется запустить еще несколько сайтов ориентированных на другие страны СНГ.