为多个Web服务实例提供服务

我们正在构build一个基于API的基于Python的networking解决scheme,并将交付给个人客户。 每个客户将有一个单独的数据集。

目前,为每个客户部署一个应用程序+数据库实例并不是一个问题,但是这对于更多的客户来说会变成一场噩梦:想象数以百计的这样的实例和pipe理费用。 显然,解决scheme应该更加“集中”。

但是,数据是相当敏感的,所以我们不能把所有的东西放在一个单独的数据库中:一个受损的服务器和数据库密码将导致所有数据的泄漏。 这样的风险是不可接受的。

开发分布式API服务器平台时需要考虑哪些正确的技术? 哪些聪明的做法将使解决scheme更“集中”,以便摆脱那么多的实例,但仍然保持数据的隔离?

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

借助云信息,您可以定义您的“坚果与螺栓”基础设施 – networking,服务器,RDS实例等,并以可靠,可重复的方式部署此基础架构。 这个相同的云信息清单将为每个客户部署一次。

一旦部署了基础架构,就可以使用一个configurationpipe理系统来configuration你的服务器,部署代码等等.Sasible就是我们正在使用的,我发现它比起竞争对手来说是头重脚轻(Puppet,Chef,Saltstach,等等),只要易于使用和灵活性。 Ansible是一个python项目,作为一个python商店,你可以很容易地加快速度。

此外,请考虑是否可以使用AWS的Elastic Beanstalk部署您的应用程序。 如果这是可能的,这将减轻你不得不处理部署,服务器升级和扩展。

如果您担心维护客户端与服务器实例的比例为1:1,请考虑在使用Docker的单个服务器上部署您的应用程序的多个实例。 这将允许在应用程序实例之间进行合理的隔离,同时仍然能够以受控的方式轻松部署。