Amazon web services 如何将在VPS上运行的WAMP堆叠应用程序转换为可扩展的AWS应用程序?

Amazon web services 如何将在VPS上运行的WAMP堆叠应用程序转换为可扩展的AWS应用程序?,amazon-web-services,Amazon Web Services,我有一个在虚拟windows服务器上运行php、mysql和apache的web应用程序。我想重新设计它,使其在AWS上具有可扩展性(为了好玩,我可以学习新东西) 我可以看到如何设置EC2并将其全部转储到那里,但我想使其具有可扩展性,并利用AWS上的所有酷功能 我尝试过谷歌搜索,但就是找不到简单的指南(注意——我没有Linux的命令行经验) 有人能告诉我详细的资源,可以引导我通过这些步骤并教我吗?或者,在回答中总结步骤,以便我可以根据您所说的内容进行研究 谢谢这取决于你如何看待它,这更多的是一个

我有一个在虚拟windows服务器上运行php、mysql和apache的web应用程序。我想重新设计它,使其在AWS上具有可扩展性(为了好玩,我可以学习新东西)

我可以看到如何设置EC2并将其全部转储到那里,但我想使其具有可扩展性,并利用AWS上的所有酷功能

我尝试过谷歌搜索,但就是找不到简单的指南(注意——我没有Linux的命令行经验)

有人能告诉我详细的资源,可以引导我通过这些步骤并教我吗?或者,在回答中总结步骤,以便我可以根据您所说的内容进行研究


谢谢

这取决于你如何看待它,这更多的是一个评论,而不是一个答案,但是它太长了,不能作为评论来写

你的要求真的无法回答,所以这是一个巨大而复杂的问题。您基本上是在问“如何设计一个可部署在基于云的平台上的高度可扩展、持久的应用程序?”答案主要取决于:

  • 应用程序的细节——它是做什么的,它是如何工作的
  • 您对停机时间的容忍度与您的预算相平衡
  • 您当前的开发和部署工作流
  • 您在员工中拥有的支持应用程序的资源/技能集
  • 您的发布时间框架是什么样子的
我经营着一家软件咨询公司,专门为亚马逊网络服务体系结构提供咨询。我们大约80%的业务都在为客户调查和回答这些问题。每次都是一个长达数周的项目


然而,为了给你指出正确的方向,我建议你看看。这是一个类似PaaS的服务,它抽象了底层AWS资源,使AWS更容易为没有太多系统管理经验的开发人员使用。可以将其视为在AWS上设计自动缩放应用程序的“训练轮”。

根据您的看法,这更多的是一个注释,而不是一个答案,但它太长,无法作为注释编写

你的要求真的无法回答,所以这是一个巨大而复杂的问题。您基本上是在问“如何设计一个可部署在基于云的平台上的高度可扩展、持久的应用程序?”答案主要取决于:

  • 应用程序的细节——它是做什么的,它是如何工作的
  • 您对停机时间的容忍度与您的预算相平衡
  • 您当前的开发和部署工作流
  • 您在员工中拥有的支持应用程序的资源/技能集
  • 您的发布时间框架是什么样子的
我经营着一家软件咨询公司,专门为亚马逊网络服务体系结构提供咨询。我们大约80%的业务都在为客户调查和回答这些问题。每次都是一个长达数周的项目


然而,为了给你指出正确的方向,我建议你看看。这是一个类似PaaS的服务,它抽象了底层AWS资源,使AWS更容易为没有太多系统管理经验的开发人员使用。可以将其视为在AWS上设计自动缩放应用程序的“培训车轮”。

AWS一直在增长和变化,因此没有很多书可以提供帮助。亚马逊提供的服务非常好。我上了他们三天的课,这似乎正是你想要的

当然,不是每个人都能负担得起花在旅行上的时间和金钱去上课。2012年11月的会议有很多与你想要的内容相关的会议,大多数(可能全部)会议都有免费在线视频。使用AWS构建Web级应用程序可能是相关的(并且是可用的),剖析Internet级应用程序(并且是可用的)也是相关的

更好地理解这些选项的一个好方法是修改AWS上现有的应用程序。只需将其移动到AWS中的EC2实例,然后就可以更充分地利用现有资源。我要做的第一件事是在你自己的机器上去掉MySql服务器,使用RDS提供的服务器。稳定后,在RDS中创建一个或多个读取副本,并在大多数操作中将应用程序更改为从中读取,仅在需要完全当前结果时才从主(可写)数据库读取

您的应用程序是否在web服务器上保留数据库以外的任何数据?如果是这样的话,通过将数据从EC2实例中移出来摆脱所有本地存储。其中一些可能会进入数据库,一些(如大文件)可能适合S3。DynamoDB是处理会话数据之类的东西的好地方

所有这些都将web服务器上的负载减少到只包含应用程序代码,这有助于提高可伸缩性。现在您在web服务器上没有任何状态,您可以使用ELB和自动缩放来自动运行多个web服务器(甚至根据需要自动启动更多服务器),以处理更大的负载

应用程序是否有任何长时间运行的密集型操作,您现在可以根据web请求执行这些操作?考虑在请求时不执行操作,而是使用SQL来排队请求,并且只告诉用户您将到达它。现在,让长时间运行的进程(或cron作业或计划任务)定期检查队列,运行请求的操作,并通过电子邮件(使用SES)将结果返回给用户。要真正扩大规模,您可以将这些作业从web服务器移动到专用机器上,并在需要时再次使用自动扩展

你需要更大的机器吗,或者可以和更小的机器一起生活?CloudWatch指标可以显示一段时间内使用了多少IO、内存和CPU。您可以根据需要将配置的IOPS与EC2或RDS实例一起使用,以提高性能(成本),并使用不同大小的实例来获得更多内存或CPU

所有这些都是AWS设置和配置