我可以使用DigitalOcean来托管社交应用吗?

时间:2013-03-25 10:53:18

标签: ruby-on-rails hosting cloud

我正在使用Ruby on Rails创建一个用于照片共享的社交应用程序(非常简单)。我使用一些Rails依赖项和MySQL作为数据库。我还需要使用已经购买的自定义域名。

我有些疑惑:

  • 如果我的应用需要快速扩展,DigitalOcean是否足够?

  • 我是否可以访问允许我安装和更改Rails方面的shell?

  • 我是否可以完全访问MySQL,包括备份和其他内容?

  • 启动器应用程序是否有更好的解决方案?

2 个答案:

答案 0 :(得分:10)

有两种方法可以选择像Heroku这样的PaaS提供商,或者像DigitalOcean这样的IaaS提供商。

的PaaS

对运行应用程序的实际体系结构的可见性较低,更容易扩展,但更昂贵。此外,当您的可见性较低时,您不会专注于微调代码并使用简单的架构选择来提高性能,而不会增加复杂性。

的IaaS

你对一切负责,这意味着你需要花更多的时间进行初始设置并找出一些新的东西;但是你会更好地了解你的应用程序如何与硬件交互,以及你需要调整哪些元素来扩展。

规模的基本IaaS设置

您可以提前猜测您网站的哪个部分最难扩展;但最终,无论你有多少计划,你最终都会遇到瓶颈。因此,您可以采取以下几个简单的步骤:当您点击性能墙时会延迟,并且当您执行此操作时也会更容易扩展:

  1. 专用数据库实例 - 从一开始就将数据库服务器移动到自己的虚拟机。数据库服务器,缓存服务器和应用服务器的工作负载不同,在处理单个特定任务时,它们会得到最佳优化。您还可以将数据库的所有资源用于数据库。

  2. Nginx负载均衡器 - 现在您的数据库位于单独的服务器上,您可以创建传统的应用/网络服务器。我建议您创建两个Web服务器并创建一个可以在这些计算机上分散负载的Nginx负载均衡器。它是更多的配置,但是当你添加服务器#3,#4,#N时,这是一个简单的配置更改。

  3. 缓存! - 缓存一切!它可能很简单,比如使用在数据库之前查询的memcache,或者它可以为您网站上最常见的URL或部分创建缓存页面,但缓存可以显着提高您的加载时间,还可以让您提供更多的点击量减少服务器节省现金。

  4. 对象存储/内容 - 如果您有大量内容组件,则应该从一开始就使用像亚马逊S3这样的对象存储。通过从一开始就将它集成到您​​的应用程序中,您不需要在以后重新构建它。它会花费你更多的钱,但你还需要考虑自己节省的麻烦,因为不需要管理多个卷并处理出现的一些扩展问题。

  5. 配置管理:Puppet / Chef - 现在您有几种不同类型的服务器:数据库,Web / App,负载均衡器,缓存 - 使用Puppet是个好主意或者厨师来设置它们。您将再次获得学习曲线,但这意味着当您需要将N + 1服务器添加到特定实例类型时,它将花费您2分钟而不是2小时。

  6. 当然还有很多其他注意事项,但是你采取的步骤越多,从头开始看,你的扩展路径就越容易。无论您采取多少步骤,您仍会遇到扩展问题,因此在MVP精益启动方法中平衡这一点非常重要,这样您就不必花费数月时间来完成完美的基础架构设置,因为没有牵引力,它不会重要的是,如果你有所有的服务器,因为他们没有受到大量流量的打击。

    这篇文章背后的基本理念是,您的主要问题是PaaS与IaaS,如果您选择IaaS路线,DigitalOcean(因为我是联合创始人)是一个很好的选择,但最终您与IaaS提供商的最大胜利将是在设置应用程序时做出一些明智的决定。

答案 1 :(得分:1)

听起来您的应用程序可以在Digitalocean VPS上运行。

  • 您可以在需要更多资源时扩展Digitalocean VPS。 (https://www.digitalocean.com/features
  • 您将拥有对VPS的root权限。因此,您可以自己安装Rails并更改所需的一切。
  • 使用Ruby支持的共享托管环境可能会满足您的需求。