提供多个 Web 服务实例

提供多个 Web 服务实例

我们正在用 Python 构建一个基于 API 的 Web 解决方案,并将交付给个人客户。每个客户都将拥有一个单独的数据集。

目前,为每个客户部署一个应用程序 + 数据库实例不是问题,但随着客户数量的增加,这将成为噩梦:想象一下数百个这样的实例以及由此产生的管理费用。显然,解决方案应该更加“集中化”。

但是数据非常敏感,所以我们不能把所有数据都放在一个数据库中:服务器和数据库密码被盗将导致所有数据泄露。这种风险是不可接受的。

开发分布式 API 服务器平台时应考虑哪些正确的技术?哪些智能做法将使解决方案更加“集中化”,以便我们摆脱那么多实例,但仍保持数据隔离?

答案1

简而言之,AWS + Cloudformation + Ansible(或其他一些 CM 软件)。

使用 cloudformation,您可以定义“基本”基础设施 - 网络、服务器、RDS 实例等,并以可靠、可重复的方式部署此基础设施。相同的 cloudformation 清单将为每个客户部署一次。

部署基础设施后,使用配置管理系统来配置服务器、部署代码等。我们使用 Ansible,我发现它在易用性和灵活性方面远远胜过竞争对手(Puppet、Chef、Saltstach 等)。Ansible 是一个 Python 项目,作为 Python 商店,您可以轻松掌握它。

此外,考虑看看你是否可以使用 AWS 的 Elastic Beanstalk 部署你的应用程序。如果可以的话,你将不再需要处理部署、服务器升级和扩展。

如果您担心保持客户与服务器实例的 1:1 比例,请考虑使用 Docker 在单个服务器上部署应用程序的多个实例。这将允许在应用程序实例之间进行合理的隔离,同时仍可以相当容易地以受控的方式进行部署。

相关内容