АСУ для кофеен. Часть 2


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

Часть 1. Предыстория.
Часть 2. Почему выбран MODX Revolution. Серверная часть.
Часть 3. Работа с оборудованием. Примерная хронология проекта.
Часть 4. Синхронизация данных и обновление компонентов АСУ
Часть 5. Пути решения проблем при «непонятном» поведении движка/компонентов. Реализация складского учета
Часть 6. Текущие функциональные возможности АСУ — 1
Часть 7. Текущие функциональные возможности АСУ — 2.
Часть 8. Текущие показатели АСУ. Желаемые планы. Заключение

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



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


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

Остальные причины менее значимы, но тоже сыграли свою роль в пользу 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 статей.
Пишите в комментариях, на какие аспекты следует обратить особое внимание.
25 ноября 2017, 22:45    Воеводский Михаил   G+  
2    404 +12

Комментарии (8)

  1. Николай Савин 26 ноября 2017, 01:10 # 0
    Я не силен в серверной части, поэтому не до конца понял момент, если предусматривается случай с отсутствующим интернетом, как будет работать синхронизация с главным сервером?
    1. Воеводский Михаил 26 ноября 2017, 01:59 # +3
      Остановится и возобновится, когда соединение восстановится.
      Идея не в постоянной синхронизации, а в способности работы заведения без интернета, так как вся необходимая база с интерфейсом/логикой находится локально.
      1. Константин Ильин 26 ноября 2017, 09:52 # +1
        Михаил, спасибо за такие статьи!!!
        Тоже всегда интересовала серверная часть (пора бы уже почитать книжки), как именно там все закручено. Само «программирование на модх» более мение понятно, работаешь с объектами, расширяешь модели, классы, компоненты в конце концов, но вот интересные аспекты:
        — штрихкодирование(если есть конечно)
        — ПО которое формирует заказ и как оно все отправляется в модх
        — что синхронизируется с главным сервером, цены и заказы?
        — интересно как сторонние аппараты связны с локальными серверами и как они работают

        Получается Ваш продукт с лихвой заменил этот адский-монополистский продукт — 1С, причем с индивидуальной настройкой, без лишних функций! и самое главное — большой скоростью!
        Например, я однажды приходил покупать видеокарту для компьютера, стою на кассе, кассир говорит «Подождите пожалуйста», я глянул в его монитор и увидел как там долго долго грузилась 1С… минуты через 3-4 только начал оформлять заказ.

        Не так давно приходилось сталкиваться с 1С, я ругался матом… это какое-то извращение. Я посоветовал им, что под их задачи проще было написать веб интерфейс и все индивидуально заточено. И на вашем примере АСУ, я в конце концов убедился, что спокойно можно заменить 1С, да и еще с десятками плюсов.
        1. Воеводский Михаил 26 ноября 2017, 10:07 # +3
          — штрихкодирование(если есть конечно)
          В следующей статье
          — ПО которое формирует заказ и как оно все отправляется в модх
          minishop2. Интерфейс для сотрудника, фактически, является обычным интернет-магазином, пусть и немного измененным для работы на одном экране без переходов.
          — что синхронизируется с главным сервером, цены и заказы?
          — интересно как сторонние аппараты связны с локальными серверами и как они работают
          В одной из следующих статей.

          Получается Ваш продукт с лихвой заменил этот адский-монополистский продукт — 1С, причем с индивидуальной настройкой, без лишних функций! и самое главное — большой скоростью!
          1С не единственный продукт. Хотя да, его, зачастую, хочется заменить в первую очередь. Только надо понимать, что его замена в полной мере обойдется в очень немаленькую сумму.

          Например, я однажды приходил покупать видеокарту для компьютера, стою на кассе, кассир говорит «Подождите пожалуйста», я глянул в его монитор и увидел как там долго долго грузилась 1С… минуты через 3-4 только начал оформлять заказ.
          Выходом является всегда открытый интерфейс. Но и здесь веб выигрывает — время холодного запуска равно времени загрузки браузера и простой страницы.

          Не так давно приходилось сталкиваться с 1С, я ругался матом… это какое-то извращение. Я посоветовал им, что под их задачи проще было написать веб интерфейс и все индивидуально заточено. И на вашем примере АСУ, я в конце концов убедился, что спокойно можно заменить 1С, да и еще с десятками плюсов.
          Можно, дерзайте. Сначала детально изучите процессы клиента, составьте подробное ТЗ, после чего все окажется разложенным по полочкам.
    2. g0dzilla 27 ноября 2017, 00:05 # 0
      процесс синхронизации очень интересен) ждем =)
      1. Воеводский Михаил 27 ноября 2017, 00:35 # 0
        Добавил план в начало. О синхронизации читайте в 4 части.
      2. Владимир Бабусенко 27 ноября 2017, 13:01 # 0
        Приветствую Михаил! Т.к. в какой то момент я «наследил» в данном проекте, с двойным удовольствием слежу за публикациями. Если бы сейчас встала бы эта задача, с учетом сегодняшних знаний, что бы ты выбрал в качестве движка/фреймворка, наверняка не моdx? Или ошибаюсь?
        1. Воеводский Михаил 27 ноября 2017, 14:05 # +1
          Я бы сейчас добавил некоторое количество обвязок в виде ноды, редиса и прочего, но MODX в качестве ядра — реальный вариант.
        Вы должны авторизоваться, чтобы оставлять комментарии.