我们正在Python上构建一个基于API的web解决方案,它将被交付给各个客户。每个客户都将有一个单独的数据集。
目前,为每个客户部署一个应用程序+数据库实例并不是一个问题,但这将成为更多客户的噩梦:想象数百个这样的实例和管理费用。显然,解决方案应更加“集中”。
但是,数据是相当敏感的,所以我们不能把所有的东西都保存在一个数据库中:服务器和DB密码的组合会导致所有数据的泄漏。这种风险是不可接受的。
在开发分布式API服务器平台时,需要考虑哪些正确的技术?哪种智能实践将使解决方案更加“集中”,这样我们就可以摆脱那么多实例,但仍然保持数据隔离?
发布于 2014-03-12 15:59:05
简而言之,AWS + Cloudformation + Ansible (或其他CM软件)。
使用cloudformation,您可以定义“具体的”基础设施--网络、服务器、RDS实例等,并以可靠、可重复的方式部署该基础结构。这个相同的cloudformation清单将为每个客户部署一次。
一旦基础设施部署完毕,就使用配置管理系统来配置服务器、部署代码等等。我们正在使用的是Ansible,我发现它比它的竞争对手(木偶、厨师、Saltstach等)要高得多。只要使用方便和灵活。Ansible是一个python项目,作为一家python商店,您很容易跟上它的步伐。
此外,请考虑查看是否可以使用AWS的弹性Bean秸秆部署应用程序。如果这是可能的话,它将使您不必处理部署、服务器升级和扩展。
如果您关心维护1:1的客户与服务器实例的比例,请考虑使用Docker在单个服务器上部署应用程序的多个实例。这将允许在应用程序实例之间进行合理的隔离,同时仍然可以相当容易地以受控的方式部署。
https://serverfault.com/questions/581674
复制相似问题