Статьи

Первый взгляд на Platform.sh — SaaS для разработки и развертывания

Не так давно многие из нас были удовлетворены тем, как справились с развертыванием наших проектов, загрузив файлы через FTP на веб-сервер. Я делал это до относительно недавнего времени и до сих пор делаю (не говорите никому!). В какой-то момент в последние несколько лет спрос на услуги и функции, предлагаемые веб-приложениями, рос, размеры команды росли, а быстрая итерация стала нормой. Старые методы развертывания стали нестабильными, ненадежными и (как правило) ненадежными.

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

Platform.sh — это новый игрок на рынке, созданный командой Commerce Guys , которая более известна своими решениями Drupal для электронной коммерции. Изначально служба поддерживала только хостинг и развертывание на основе Drupal, но быстро добавила поддержку Symfony, WordPress, Zend и «чистого» PHP, в скором времени появятся node.js, Python и Ruby.

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

Я склонен находить, что эти услуги имеют больше смысла на простом примере. Я буду использовать платформу Drupal, поскольку это то, с чем я больше всего знаком.

Platform.sh имеет несколько требований, которые различаются для каждой платформы. В случае Друпала они:

  • Пара открытых и закрытых ключей id_rsa
  • Гит
  • Композитор
  • Платформа.sh CLI
  • Drush

Я не буду рассказывать об их установке здесь; Более подробную информацию можно найти в разделе документации Platform.sh .

У меня было несколько тестовых платформ, созданных для меня командой Platform.sh, и ради этого примера мы можем рассматривать их как мое рабочее место, добавляя меня к некоторым новым проектам, над которыми мне нужно работать. Я могу увидеть их в списке, выполнив команду platform project:list внутри моего предпочтительного рабочего каталога.

Platform list

Получить локальную копию платформы с помощью команды platform get ID (идентификаторы перечислены в таблице, которую мы видели выше).

Это загрузит соответствующую кодовую базу и выполнит некоторые задачи сборки, любая дополнительная информация, которую вам нужно знать, представлена ​​в окне терминала. После этого у вас будет следующая структура папок:

Folder structure from build

Папка repository является вашей кодовой базой, и здесь вы можете вносить и фиксировать изменения. В случае с Drupal, здесь вы добавите модули, темы и библиотеки.

Папка build содержит сборки вашего проекта, которые представляют собой комбинацию ядра drupal, а также любые изменения, которые вы вносите в папку repository .

shared папка содержит ваши локальные настройки и файлы / папки, относящиеся только к вашей копии для разработки.

Последний — это символическая ссылка www , которая всегда будет ссылаться на текущую сборку. Это будет DOCROOT вашего vhost или эквивалентного файла.

Подготовка вашего сайта к работе

Drupal по-прежнему зависит от наличия базы данных, чтобы начать, поэтому, если нам это нужно, мы можем получить базу данных с нужной платформы, выполнив:

 platform drush sql-dump > d7.sql 

Затем мы можем импортировать базу данных на наш локальный компьютер и соответствующим образом обновить учетные данные в shared/settings.local.php .

Вуаля! Мы находимся и работаем!

Давайте начнем развиваться

Давайте сделаем что-то простое: добавим модули представлений и функций . Platform.sh использует Drush make- файлы, поэтому он отличается от того, к чему вы привыкли. Откройте файл project.make и добавьте в него соответствующую запись. В нашем случае это:

 projects[ctools][version] = "1.6" projects[ctools][subdir] = "contrib" projects[views][version] = "3.7" projects[views][subdir] = "contrib" projects[features][version] = "2.3" projects[features][subdir] = "contrib" projects[devel][version] = "1.5" projects[devel][subdir] = "contrib" 

Здесь мы устанавливаем проекты, которые мы хотим включить, конкретные версии и в какую подпапку папки модулей мы хотим поместить их.

Перестройте платформу с помощью platform build . Вы должны заметить, что загружен модуль devel, ctools, functions и views, и мы можем убедиться в этом, быстро перейдя на страницу модулей:

Modules list page in Drupal

Вы заметите, что каждый раз, когда мы запускаем команду build, в папке builds создается новая версия нашего сайта. Это идеально подходит для быстрого возврата к более ранней версии нашего проекта в случае, если что-то пойдет не так.

Теперь давайте возьмем типичный путь разработки на Drupal, создадим представление и добавим его в функцию для обмена нашей командой. Включите все модули, которые мы только что добавили, и сгенерируйте фиктивный контент с помощью функции Devel Generate, либо через Drush, либо через страницу модуля.

Теперь создайте просмотр страницы, который показывает весь контент на сайте:

Добавьте его к функции:

Распакуйте созданный архив и добавьте его в папку repository -> modules . Зафиксируйте и отправьте эту папку для контроля версий. Теперь любой другой член команды, выполняющий команду platform build , получит все обновления, которые ему нужны, чтобы сразу приступить к работе.

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

Что еще может сделать Platform.sh?

Это упрощает процесс разработки среди команд, но что еще предлагает Platform.sh, чтобы сделать его более привлекательным, чем другие подобные варианты?

Если вы являетесь агентством или фрилансером, работающим с несколькими типами проектов, широкая поддержка CMS / Framework / Language, размещенная в одном месте и с единым контролем версий и резервными копиями, является веской причиной.

Что касается контроля версий, platform.sh обеспечивает визуальное управление и запись ваших коммитов и веток git, которые я всегда нахожу полезными для просмотра кода и статуса проекта. Помимо этого, вы можете создавать моментальные снимки вашего проекта, включая код и базу данных, в любой момент.

Когда вы будете готовы запустить свой сайт, просто выделить DNS и домены со страниц конфигурации проекта.

Производительность, профилирование и другие вкусности

По умолчанию ваши проекты имеют доступ к интеграции с Redis , Solr и EntityCache / AuthCache . Это всего лишь случай установки соответствующих модулей Drupal и указания их на сведения о встроенном сервере.

Для профилирования Platform.sh только что добавил поддержку Sensiolabs Blackfire , все, что вам нужно сделать, это установить сопутствующий браузер , добавить свои учетные данные , создать учетную запись, и все готово к работе.

Резервные копии включены по умолчанию, а также возможность восстановления из резервных копий.

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

Platform.sh предлагает некоторые привлекательные возможности по сравнению с ближайшими конкурентами ( Pantheon и Acquia ), а цены конкурентоспособны. Основное решение, которое следует принять со всеми этими предложениями SaaS, заключается в том, если ограниченный доступ к серверу и «способ действий» являются помощью или помехой для вашей команды и ее рабочих процессов. Я хотел бы знать ваш опыт или мысли в комментариях ниже.