Digital Ocean vs AWS EC2 for Laravel based application

47次阅读
没有评论

问题描述

正在开发一个基于Laravel的微服务架构项目,需要部署多个小型应用和数据库。他对于选择AWS EC2还是Digital Ocean的托管服务感到困惑。他关心的是价格问题,数字上来说,Digital Ocean的价格只有AWS的一半,并且提供更多的功能。请给出更好的选择建议。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在选择AWS EC2和Digital Ocean之间,没有一个通用的正确答案,因为这取决于你的具体情况。特别是成本问题。你需要考虑的是,你只是考虑将服务上线的成本,还是考虑运行一个弹性可扩展的服务的成本,或者考虑运行一个高可用性的弹性服务,跨越数据中心可用区,以便在单个数据中心可用区发生故障时不会被关闭。
Digital Ocean在Laravel社区中非常受推崇,所以当我加入一个创业公司,距离上线只有两个月的时候,Digital Ocean成为开发团队的“默认选择”。当我问到“数据中心可用区”的问题时,Digital Ocean当时的答案是他们不支持,我们必须在两个不同的Digital Ocean数据中心进行设置,并且需要自己设置机制(如DNS)在它们之间切换,如果Digital Ocean在某个地方发生重大故障。然而,在AWS上,他们有可用区和弹性负载均衡器,因此如果您打算在上线一年后运行一个非常成功的大规模服务,那么更容易设置一个“未来准备”的环境。
最终,我们选择了在openshift.com上运行,这是一个在AWS上运行的共享Kubernetes服务。因此,我们的生产DNS指向了一个共享Kubernetes集群的弹性负载均衡器,我们在其中租用容器的空间。我们所在的集群有其他公司的容器,并在许多AWS EC2虚拟机上运行。然而,它们不是专门为我们服务的,所以我们只支付了一小部分成本。但是,如果任何一个虚拟机崩溃,我们的容器所在的地方,openshift kubernetes会自动在另一个虚拟机上启动一个替代容器。因此,我们拥有自动化的高可用性和崩溃恢复,但只为我们当前使用的内存和CPU付费。我们可以随时通过更改副本数来增加更多的容器。Openshift具有内部负载均衡,因此单个内部服务IP和内部DNS名称自动指向我们想要运行的特定类型的容器。这解决了我们服务之间的发现问题。如果您从内置目录部署redis实例,则可以在项目中仅可见的私有IP上立即使用它。当您在大规模运行微服务时,这种“发现”功能非常重要。
通过我们的设置,我们以非常专业、弹性、高度可扩展、完全自动化的基础设施即代码设置获得了极低成本的价格,具有AWS ELB的所有优势,以及kubernetes用于微服务的所有高级功能。

我写了一篇关于在openshift.com上运行laravel后端和reactjs前端的教程,可以在这里找到:https://gist.github.com/simbo1905/d27ba7218a2fd71fcb4f0fcede82fd6d

方案2

Lambda的价格是预留实例的两倍,根据您使用的运行时,它的99th百分位数会有很多延迟,这可能会给您的应用程序带来问题。您的答案可以通过删除最后一段来改进。是的,我现在处于早期阶段,而且我可以享受12个月的免费试用期。谢谢。
如果您的主要关注点是价格,可以尝试Linode – AWS的替代方案。Linode是最近被Akamai收购的云服务提供商。
它具有出色的支持、文档,并且您可以在那里非常快速地创建Kubernetes集群,与其他云提供商相比,您可以在那里部署您的Laravel应用。
免责声明,我写了链接的文章。

正文完