Как мы облачный PHP-сервис завернули в коробку — с защитой, лицензией, и при этом ускорились

Мы привыкли к облакам и сервисам по подписке (что называется сложным словом SaaS) . Заливаешь данные, строишь календарики — и не задумываешься, на чьих там они серверах хранятся. Удобно? Да. Безопасно? Ну, так… Обычно мы на это забиваем. Или не задумываемся. Или задумываемся, но всё равно забиваем.

1313

Спасибо за то, что поделились крутым опытом. Тоже присматриваемся к KPHP для создания коробочных версий из SaaS и думаем над технической защитой кода.

Что касается защиты кода, то видим смысл защищать только код PHP. Всякие картинки, стили, скрипты - не видим смысла, потому что веб-ресурсы открытые.

Чтобы сократить возможные трудности по переходу с PHP на KPHP, мы тупо сокращаем объем PHP-кода по следующей стратегии:
1. Фронтенд пытаемся сделать максимально независимым от бекенда. Считайте, UI просто принимает на вход данные в формате JSON. Никакого SSR. Где можно, там SPA.
2. Обмен данными с сервером - RPC. Так нам проще контролировать.
3. На бекенде код PHP изначально пишется с указанием типов.

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

Кстати, вы упаковываете только сервер в коробку? Браузер в нее не добавляете?

1
Ответить

У нас была миграция на React/JSL с XSLT в 2020 году примерно. Это тоже было больно, но реальных шаблонов на PHP у нас никогда не было. Поэтому миграция была простой. После миграции на PHP/JSL всё приложение стало SPA и миграция в KPHP стала доступной (ввиду отсутствия LIBXML внтури).

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

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

Старый код у нас был еще под PHP4 написан, в технической статье (внизу ссылка) детали раскрыты. Поэтому на типизации мы огребли сильно. Но сейчас конечно сразу проверка идёт по типам потому что сборка выполняется.

1
Ответить