Вы можете в значительной степени выполнить локальное перенос приложения в облако без изменений кода приложения.
Но если вы сделаете это, вы в значительной степени упустите смыслв облаке, потому что вы по-прежнему будете отвечать за исправления серверов, настройку балансировщиков нагрузки, оптимизацию баз данных и т. д.
Если ваша единственная цель - сократить расходы на физическую инфраструктуру и вас не беспокоит эксплуатационные расходы(например, люди, которые будут управлять вашей облачной инфраструктурой), и облако определенно дешевле, тогда вы можете сделать это.
Однако, если вы хотите воспользоваться реальными преимуществами облака - эластичность и более полная -управляемые сервисы - тогда вы, возможно, захотите взглянуть на собственные возможности облака.
Например (на примере AWS):
- Вместо того, чтобы самостоятельно управлять базой данных MongoDB, рассмотритеDynamoDB (полностью управляемая база данных без SQL)
- Вместо традиционной базы данных SQL, такой как PostgreSQL,Рассмотрим RDS (полностью управляемая база данных как услуга, поддерживающая несколько БД, таких как PostgreSQL, MariaDB, MySQL и т. д.)
- Вместо самостоятельной настройки балансировщиков нагрузки рассмотрим ELB (управляемые балансировщики нагрузки сети и приложений)
- Вместо запуска брокера сообщений, такого как RabbitMQ, рассмотрим SQS и SNS (облегченный обмен сообщениями на основе HTTP)
- Вместо целого множества виртуальных серверов EC2, работающих под вашей операционной системой, сервером приложений и кодом микросервисаподумайте, можете ли вы реализовать ее как лямбда без сохранения состояния (функция-как-услуга, т. е. ничего, кроме вашего кода, никакого O / S, сервера приложений или управления контейнерами).
МногоеЭти услуги могут автоматически и беспрепятственно масштабироваться для удовлетворения спроса, и вы платите только за то, что используете, а не за чрезмерное обеспечение.
Это всего лишь несколько идей о том, как можно переосмыслить дизайн своего приложения, чтобывоспользоваться облаком.Просто имейте в виду, что вы подключаетесь к поставщику по этому пути.
Редактировать: ОК, так что, если вы планируете строить в помещении, а затем мигрировать позже, облачные собственные опции, приведенные выше, явно не собираютсяработать, хотя некоторые все еще применимы.
Таким образом, самый простой подход состоит в том, чтобы построить ваше приложение как обычно и затем перейти к инфраструктуре как услуге (IaaS) с вашей ОС, сервером приложений и приложением, работающим поверх этого.жизнь это делает сегодня.Переместите вашу БД в эквивалент управляемой службы.Попробуйте просто отказаться от своих локальных балансировщиков нагрузки и использовать облачные собственные балансировщики нагрузки в точке миграции.
Другой подход заключается в использовании контейнеров, в частности Docker, для упаковки и развертывания в помещении.Вам нужно будет управлять своим собственным кластером Docker, но при переносе приложения в облако вы можете разместить его в управляемой службе, такой как ECS (сервис AWS Elastic Container Service) или EKS (сервис AWS Elastic Kubernetes).