Развертывание node.js в производстве
Каковы лучшие практики для развертывания приложения nodejs в рабочей среде?
Я хотел бы знать, как выполняется развертывание для узлов nodejs Api сегодня, сегодня мое приложение находится в докере и работает локально.
Интересно, должен ли я использовать Nginx внутри контейнера и развернуть на нем свой сервер или просто загрузить свой узел изображения, который уже работает сегодня.
* Мне нужен баланс нагрузки
2 ответа
Есть несколько основных типов развертывания, которые популярны сегодня.
- Использование платформы в качестве сервиса, такого как Heroku
- Использование VPS, таких как AWS, Digital Ocean и т. Д.
- Использование выделенного сервера
Этот список находится в порядке растущей сложности и контроля. Так что с PaaS проще всего, но вы получаете больший контроль с выделенным сервером - хотя это становится значительно сложнее, особенно когда вам нужно масштабировать и создавать кластеры.
Посмотрите этот ответ для более подробной информации о том, как установить Node на VPS или выделенный сервер:
Я могу только добавить из опыта работы в AWS использование шлюза NAT, который является выделенным сервером Node с сервером MongoDB за шлюзом. (Очевидно, это масштабируемая система и проект.)
С Docker или без него вам необходимо контролировать производственную среду. Это означает четкое определение того, какие библиотеки NPM вам понадобятся для работы, как вы будете обрабатывать переменные среды и кластеры для ядер.
Я бы настоятельно рекомендовал использовать такой инструмент, как PM2, для обработки кластеров, выключений серверов, перезапусков и журналов. (Рабочие и рабы также, если они вам нужны, и код для них).
Этот список можно продолжать и продолжать, но имейте в виду, что это только с точки зрения AWS. Правильная настройка шлюза в AWS также не простой процесс. Будьте готовы к тому, что попадаются по пути.