В этом посте будут кратко рассмотрены некоторые проблемы, возникающие при развертывании как одностраничных приложений, так и новых гибридных серверных / интерфейсных фреймворков, таких как Next.js. Кроме того, я расскажу о возможном решении в виде Manifold, торговой площадки для независимых разработчиков, которая делает интеграцию с такими вещами, как Postgres, почти столь же простой, как и с Heroku.

Проблемы)

Если вы занимались веб-разработкой в ​​последние несколько лет, вы, вероятно, работали со статическими одностраничными приложениями (т. Е. Не отображаемыми на сервере). Благодаря обещанию молниеносной загрузки страниц и взаимодействий внедрение одностраничных приложений (или SPA) было быстрым. Используя такие инструменты, как create-response-app и GitHub Pages, можно очень быстро получить работающее приложение javascript с маршрутизацией в Интернете.

Если вам по-прежнему нужна добрая сторона сервера, предприимчивые умы разработали фреймворк с открытым исходным кодом под названием Next.js, который объединяет преимущества как SPA, так и традиционных серверных приложений. Next описывает себя как минималистичный фреймворк для серверных приложений React, и, работая с Next.js в течение последних нескольких месяцев, я могу подтвердить это утверждение. Вскоре после создания базового репозитория можно получить приложение React, отрисовываемое на стороне сервера, которое легко развертывается в Интернете с помощью сейчас, службы, управляемой создателями Next Zeit.co.

Идеально, правда? В основном.

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

Хотя эта проблема характерна как для SPA, так и для приложений Next.js, она вызывает все больше проблем с Next.js из-за его часто используемой функции настраиваемого сервера / маршрутизации, которая обеспечивает более надежную внутреннюю часть Node.js. В этом случае критически важно иметь простой способ интеграции и управления серверными службами, такими как база данных SQL.

При создании приложений на базе SQL я исторически использовал Heroku и его управляемую надстройку Postgres, которая с приложением Rails просто требовала запуска git push heroku master. Добавление других сервисов, таких как ведение журнала или даже электронная почта, будет управляться из моей учетной записи Heroku в одном центральном месте.

Однако развертывание с помощью службы Zeit «сейчас» или Github Pages означает, что у меня нет приложения Heroku, которое можно было бы связать с моими развертываниями и легко предоставить мне базу данных. Хотя я мог получить учетные данные БД из приложения Heroku-наполнителя, такой подход кажется решительно не забавным. Так что же делать разработчику, если он хочет такой же простоты Heroku, когда не использует такой сервис?

Что ж, для меня ответ на этот вопрос теперь Манифольд.

Ответ

Manifold заявляет о том, что «предоставляет инструменты и сервисы приложениям единым, простым и элегантным способом», выступая в качестве «торговой площадки для независимых сервисов для разработчиков», и до сих пор это утверждение звучит правдоподобно.

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

Сначала я был немного скептически настроен, так как этот тип услуг сложно сохранить простыми и полезными. Однако после регистрации у меня была запущена действующая база данных Postgres в AWS менее чем за 5 минут. Это потрясающе!

Manifold - довольно новая услуга, поэтому пока еще не все идеально. Например, поскольку я использовал вход на Github для своей учетной записи, я пока не могу поручиться за их интерфейс командной строки, поскольку можно войти в свой интерфейс командной строки только через имя пользователя и пароль.

Учитывая все обстоятельства, я планирую использовать Manifold для некоторых сторонних проектов и надеюсь, что вскоре он станет стандартом де-факто для всех приложений без Heroku, которым нужна простота, подобная Heroku.