Вторая статья из цикла.

Часть 1. Предыстория.
Часть 2. Почему выбран MODX Revolution. Серверная часть.

Почему выбран MODX Revolution




Ключевые технические требования к АСУ, которые были выявлены до начала технических работ:
  • Язык программирования — PHP;
  • WEB-сервис для упрощения процесса замены клиентского терминала;
  • Локальный сервер в каждой кофейне для минимизации влияния отсутствующего интернета;
  • Возможность передачи проекта для развития сторонним разработчикам;



Главная причина выбора MODX Revolution банальна: на момент начала работ я знал данный инструмент лучше всех остальных. Из-за ограниченных сроков сравнение с другими инструментами не рассматривалось, так как любой из других движков/фреймворков, помимо чтения теории о них, потребовал бы значительного времени на вникание в его подходы. <cut/>

Остальные причины менее значимы, но тоже сыграли свою роль в пользу MODX.



В случае с MODX известные преимущества следующие:
  1. Понятны базовые приемы работы с системой и основными публичными компонентами;
  2. Изначально ориентирован на WEB;
  3. Доступны «из коробки»:
    1. Обновление компонентов системы посредством установки транспортных пакетов из репозитория;
    2. Пользователи и сессии;

    3. Расширяемость практически в любую сторону;
    4. Ресурсы и маршрутизация;
    5. Человеческая админка;
  4. Возможность разворачивания собственного репозитория;
  5. Расширяемый miniShop2 в качестве основы для управления заказами и товарами;
  6. Возможность модульной разработки через компоненты.

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

Да и сейчас, если возникнет вопрос о создании аналога с учетом всего накопленного опыта, с большой вероятностью выберу MODX.

Серверная часть




В качестве основной ОС выбрана Ubuntu 14.04 LTS — на момент запуска проекта наиболее свежая Ubuntu с долговременной поддержкой.

Так как отсутствие интернета не является исключительным случаем, для нивелирования таких ситуаций в каждую кофейню устанавливается локальный сервер, который обеспечивает работоспособность АСУ всегда, если в кофейне есть электричество, и работает сеть. По аппаратной части к локальным серверам были выставлены 2 простых требования: Intel Core i3 и 4 Гб памяти. Остальные компоненты не имели принципиального значения.



Разумеется, для снижения стоимости запуска и владения в качестве серверов используются обыкновенные бытовые системные блоки. За три года работы в режиме 24/7 нареканий на них практически никаких нет, из 20+ кофеен даже без бесперебойников всего 3-4 случая вылета жестких дисков.



С программной стороны картина стандартная — nginx + php5-fpm + MySQL 5.5. ОС и прикладное ПО всех серверов настроены по инструкции Василия Наумкина «Правильный хостинг своими руками ч. 2». После примерно 15 настроенных серверов появилось полное понимание того, как и что должно настраиваться, следствием чего стали инструкция и скрипты, позволяющие вручную сделать самый минимум действий, а перечень из 20+ различных команд и добавлений в конфиги выполняется в полностью автоматическом режиме.

Что касается стоимости владения серверами — она крайне низкая. Сколько стоит системный блок указанной конфигурации, сами представляете. Центральный сервер работает на виртуалке всего за 600-700 руб./мес. Помимо стоимости оборудования требуется только единоразовая оплата стоимости первичной настройки сервера.

Как итог, рассматриваемая схема серверной части значительно сокращает стоимость владения и обслуживания по сравнению со многими альтернативными вариантами.
После выхода следующей весной Ubuntu 18.04 LTS будет рассматриваться вариант глобального обновления всех серверов для актуализации версий всего установленного ПО.

Продолжение следует...
Спасибо всем, кто дочитал до конца. После написания всего задуманного стал понятен итоговый объем — 8 статей. Впереди еще 6 статей.
Пишите в комментариях, на какие аспекты следует обратить особое внимание.