【问题标题】:How to design applications for cloud computing where multiple clouds may be involved如何为可能涉及多个云的云计算设计应用程序
【发布时间】:2009-10-25 01:03:09
【问题描述】:

我刚看完这个问题:https://stackoverflow.com/questions/753122/which-cloud-computing-platform-should-i-choose

但是,我不确定在为安全工程师设计应用程序时应该做什么,因此正常运行时间长很重要。

所以,如果我的应用程序是用 ASP.NET 编写的,使用 SQL Server,那么我最好的选择就是为 Azure 进行设计,但亚马逊的解决方案会是一个不错的选择吗?我将如何决定是应该将所有东西都放在同一个系统上,还是应该将数据放在亚马逊的云上和 Azure 上的 ASP.NET 上?

我正在开发另一个应用程序,它处理公用事业信息、水和电,因此有使用和计费信息,它是使用 SQL Server 用 PHP 编写的。这可能是云计算的一个很好的应用程序吗?亚马逊的解决方案似乎是 PHP 的最佳解决方案,所以我唯一的选择,但是,您如何决定使用他们产品的哪些部分?

基本上我的问题是关于应用程序架构的。托管设计很容易,但云计算增加了新的挑战。

我主要关心的是我的应用程序的设计。

如果我决定使用哪种语言,是否会将我锁定在云解决方案中?

我何时希望数据库与应用程序位于不同的云中?

如果我想使用 LIFT 框架(用 Scala 编写),它们中的任何一个都可以让我安装我需要的任何东西吗?

【问题讨论】:

  • 您问了几个问题,我有一个问题要问您——您是如何得出亚马逊的云产品最适合 PHP 的结论的?是因为 SQL Server 的要求吗?
  • 这方面我主要看 GAE、Azure 和 Amazon,前两个似乎无法与 PHP 一起使用,尽管我认为我看到 Azure 可能实际上与 PHP 一起使用。

标签: architecture cloud


【解决方案1】:

我们在 Amazon AWS 上运行一个相当大的金融服务 SaaS。

这里有两个普遍的问题:应用程序架构和云平台服务。

我发现我们的应用程序架构与我们部署到内部虚拟机或真实硬件时的架构基本相同。我们使用大部分开源工具(Java、Spring、Hibernate、MySQL、Terracotta 等)创建了一个相当标准的 n 层应用程序。当涉及到高可用性/容错数据库时,有一些注意事项(因为基于硬件的选项不可用),但除此之外,我们并没有真正“针对”特定的云实现。

云平台服务完全是另一回事。我的意思是:

  • 启动/停止/监控/管理/扩展实例
  • 可用性/冗余(例如,亚马逊有可用区)
  • 部署/初始化/配置实例
  • 文件备份/恢复
  • 安全性(例如防火墙控制)

该领域几乎没有标准化,尽管这是一个积极关注的领域。

从广义上讲,您可能希望以与云无关的方式构建您的应用程序,但会创建非常具体的操作程序。

关于在不同提供者之间拆分演示文稿和数据库,我不建议这样做,因为:

  • 如果任一供应商出现故障,您就处于故障状态
  • 与在一个云提供商内传输数据相比,通过 Internet 传输数据的速度更慢、成本更高且安全性更低。

更好地使用多个云提供商将应用程序的整个副本部署到两个或更多,在两个或多个之间平衡负载,或者可能让一个处于热备用状态,以防主服务器出现故障。但是,如果您捕获事务数据,则需要一种策略来协调备用环境中捕获的数据。这可能可行,也可能不可行,具体取决于您的应用程序的性质。

您通常可以在虚拟服务器中安装您喜欢的任何软件,尽管我对 Azure 没有特别的经验。如果您使用 AWS 或类似服务,安装 LIFT 不会有问题。

【讨论】:

  • 您在这里指的是 IaaS:基础设施即服务。这只是通常被视为“云计算”这一总体类别的一部分的细分市场。
  • 我们是一家 SaaS 提供商。我正在讨论部署在虚拟环境中的 SaaS 应用程序的架构以及运行它们的支持服务。 IaaS 通常被理解为“服务器、网络设备、内存、CPU、磁盘空间、数据中心设施”。 EC2 还在该基础设施之上提供服务,这些服务提供了运行应用程序的平台基础。我想在这一点上,虽然在云计算的(早期)发展中,对于术语的定义会有很多意见。
  • 当然,您是 SaaS 提供商,但您使用的是 IaaS 供应商提供的服务。是的,会有关于术语定义的意见,但总的来说,我尽量坚持分析公司“推销”的那些(无论好坏)。
  • 由于这个问题是非常“开放式”的,我认为有必要对一些事情进行透视:在价值链 (IaaS) 的底部,几乎可以安装所有东西 因为这就是服务 IaaS 提供商所提供的。在频谱的中间(PaaS),提供商为您提供了一个平台,其中一些问题被抽象出来以换取一些钱(当然还有更少的控制权)。以此类推。
【解决方案2】:

选择一种语言不会将您锁定在提供者中;但是,设计为在 Windows 上运行确实如此。 Windows 虚拟化是一个比 Linux 虚拟化窄得多的市场; Xen、Linode、Slicehost 等使用的技术不会多次虚拟化 Windows。

如果您的应用程序面向 Windows,那么您的选择就会明显减少。在我的市场中,我知道亚马逊迎合了 Windows(显然 Azure 也是如此)。但是,像我们和 Slicehost 这样的更具成本效益的解决方案不会——Windows 将花费您额外的费用。

至于云隔离:将您的应用程序分割成多个“云”的主要原因是为了提供应用程序的可靠性。云确实会下降 - 诚然,很少 - 将所有鸡蛋放在一个篮子里会让您为需要高可用性的应用程序付出代价。但是,如果您的数据库位于与应用程序不同的云中,您将在 Internet 上执行 SQL 时遇到延迟(另外需要一些体系结构来保护该流量,例如 SSH 隧道或 SQL Server 可能提供的协议级加密[不太确定,我是 PostgreSQL 人])。

不要陷入认为云托管与托管完全不同的陷阱。事实上,它们几乎是一样的。在我的公司,我们认为云托管只是考虑相同“ole 托管”的一种新方式。这没什么神奇的。

要针对云托管进行设计,您的应用程序只需要具有分片功能并注意可能随时添加或删除节点。根据您的架构方式,这并不难解释。通常,只有负载平衡应用程序甚至知道特定于云的语义。

【讨论】:

    【解决方案3】:

    这是“云计算”的曙光,与任何此类事件一样,参赛者正在铺设他们的“捕鼠器”,希望尽可能多地捕捉。玩家需要一段时间才能确定共同点(即某种形式的标准),在此之前,他们的“差异化”武器将迫使我们选择立场。

    我想这太“以业务为导向”,它会被否决。但是,嘿,我考虑的是技术/语言之前的业务方面。归根结底,就是赚钱。

    如果有人在游戏的早期考虑不被锁定给云计算供应商(SaaS/PaaS 类型,而 IaaS 类型供应商则更进一步),那么,你就在其中大惊喜。开火!

    免责声明:我不代表任何类型的云计算供应商(SaaS、PaaS、IaaS)。投我反对票的人会关心确定他们的效忠吗?

    【讨论】:

    • 这如何远程回答问题?
    • 他也投了我的票,因为我问了。我实际上在 云计算中工作,我知道它已经存在了一段时间,尽管形式多种多样。这种关于云的 FUD 很荒谬,我真的希望他能明白并删除答案。
    • 伙计们-我想这取决于您对云计算的定义:目前定义不明确。对于 Saas/PaaS 细分市场,我很抱歉尚未奠定基础,这些公司将不可避免地相互区分并使客户陷入困境。我知道此类平台的供应商会对此投反对票,但我当然希望另一方的客户会看到这个消息。
    • 我已经使用 Windows azure 和 Live Mesh 应用程序工作了一年。并且仍然计划继续我们在 azure 上的下一个模块,只是为了功能......但是你知道 wat,我仍然不明白这一点,甚至不知道 wat 云计算是什么。
    • 云计算是一个营销术语:它归结为市场细分:请在您喜欢的网站上阅读更多关于 SaaS、PaaS、IaaS 的信息。
    猜你喜欢
    • 2015-09-02
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多