amazon-web-services - 我们项目的新基础设施(AWS、GCP)

标签 amazon-web-services docker amazon-ec2 kubernetes google-cloud-platform

我上个月开始在一家新公司工作。我将负责 SAAS 的基础设施和后端。

我们目前为每位客户提供一个液滴/实例。在公司现阶段,这是一个不错的选择。但是将来当实例数量增加时,将难以维护。目前有 150 个实例在线,每个实例有 1CPU 和 1GB 内存。

我们的客户只在一周、一个月或一年的时间内使用这些环境。所以大多数时候,他们什么都不做。所以我们想改变这一点。我正在考虑 Kubernetes、Docker Swarm 或其他工具。

你能给我们什么建议?我们应该向 Kubernetes 或 Docker Swarm 迈出一步,还是继续使用 DigitalOcean、AWS 或 GCP 的液滴/虚拟机?

如果我们迁移到 AWS 或 GCP,我们的平均价格将从 5 美元 p/m 上升到 10 美元 p/m 以上。

我们要采取下一步措施来降低资源浪费,同时还要考虑每月的账单。在我看来,最好让 2 个我们的 3 个更大的 VM 运行 Kubernetes 或 Docker Swarm,以降低每月的账单并减少我们的预留资源。

你怎么看?

最佳答案

如果您对扩展很认真,那么您应该 重新思考你的应用架构 .计算中最昂贵的部分是内存 (RAM),因此每个客户拥有专用内存将无法扩展。

您应该将这种逻辑分隔移至 ,而不是通过使用小滴来分隔客户。数据层 .因此,每个客户都可以使用相同的横向扩展计算服务器和数据库,但软件会根据数据库中的用户标识符分离他们的数据和访问。

想一想... 邮箱 为每个特定客户保留 RAM?不,每个人都使用相同的计算和数据库,但软件将他们的消息与其他用户分开。这使他们能够扩展到大量客户,而无需为每个客户分配资源。

这是另外几个例子......

阿特拉斯 曾经拥有你所拥有的。每个 JIRA Cloud 客户都将被分配有自己的虚拟机,包括 CPU、RAM 和数据库。他们不得不将他们的数据中心扩大到一个疯狂的规模,而且非常昂贵!

然后,他们开始了向 Multi-Tenancy 迁移的旅程,首先将数据库与每个客户分开(并使用公共(public)数据库池),然后迁移到共享微服务,最终他们删除了每个客户的所有资源。

看:

  • Atlassian’s two-year cloud journey | TechCrunch
  • How Atlassian moved Jira and Confluence users to Amazon Web Services, and what it learned along the way – GeekWire
  • Atlassian cloud architecture - Atlassian Documentation

  • 销售人员 从一开始就选择 Multi-Tenancy 。他们定义了 SaaS 的概念,并习惯称自己为“云”(在我们现在所知道的云计算之前)。虽然他们的系统被分片以允许扩展,但多个客户在一个分片中共享相同的资源。客户数据的分离是在数据库级别完成的。

    看:
  • The Magic of Multitenancy - Salesforce Engineering
  • Multi Tenant Architecture - developer.force.com

  • 底线:当然,您可以尝试使用容器围绕当前架构进行优化,但如果您想认真考虑规模(我说的是 10 倍或 100 倍),那么您需要 重新思考架构 .

    关于amazon-web-services - 我们项目的新基础设施(AWS、GCP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58783484/

    相关文章:

    apache - EC2 SSL 不工作

    django - 如何在 AWS Beanstalk 上安装 cffi 包

    bash - 将项目目录设置为Dockerfile中Entrypoint的Workdir

    amazon-web-services - 使用 CloudFormation 将 LoadBalancer 批量添加到 AutoScaling 组

    docker - Hyperledger锯齿安装问题。主机和Docker容器之间没有连接

    docker - 在Jenkinsfile中标记docker镜像

    amazon-web-services - AWS Web 服务在互联网上不可用

    amazon-web-services - 使用 AWS 的微服务 Web 应用程序

    mongodb - Amazon EFS 上的 MongoDb 数据有什么缺点吗?

    java - 如何在 Java 中使用 Mockito 模拟 AWS API