有任何可用的资源可以指导某人如何“思考”托管 /云解决方案的各个组件并开始制作托管应用程序?如果这没有任何意义,我的意思是说,在制作云应用程序时需要考虑哪些事情?
我正在尝试制作托管的CRM风格软件应用程序,该应用程序将为数百个客户提供服务。该应用程序由带有许多表和ColdFusion的SQL Server数据库供电,HTML5,CSS,JavaScript前端。如果我要在每个客户端站点安装此应用程序及其组件,则每个安装都是该客户所独有的。但是某种程度上,我必须在云中复制这种独特性,这使我感到困惑。 到目前为止,只有两件事已经想到:
在SQL Server中,每个客户需要一个唯一数据库的需求
需要在Web应用程序中更改每个客户的DB连接字符串如果有人可以建议一些想法,或者是否有这样的书或网站上有人可以指向我,我真的很感激。
Edit:我正在看一篇有关Salesforce.com的文章,并说
"In order to ensure privacy of data for each user and give an effect of each having their own database, the data from different users are securely isolated from one another."
任何人都知道这是如何实现的或如何完成的?
在这里发现了一些很好的信息。它称为多租户数据库设计,似乎是一个常见的主题。一旦设计了数据库,该应用程序就可以很好地坐在顶部。 https://dba.stackexchange.com/questions/1043/what-problems-will-i-get-creating-a-database-per-customer在设计数据库和应用程序的最佳实践
云中的数据库和应用程序设计必须可扩展,安全且容忍故障。牢记以下要点:1。选择正确的数据库模型 关系(基于SQL)→使用Amazon RD,Google Cloud SQL或Azure SQL进行结构化数据。
NOSQL(基于文档,键值等)→使用MongoDB Atlas,DynamoDB或Firebase Firestore进行非结构化架构。
微服务体系结构 - 隔离服务以扩展和使灵活性。
EVENT驱动设计 - 使用消息队列(Kafka,SQS,Pub/sub)处理异步工作负载。
ServerlessCompute - 使用AWS lambda,Azure功能或Google Cloud功能进行自动尺度。
3。数据库可伸缩性和性能
-Horizontal缩放 - 使用碎片或分区进行分布式工作负载。
阅读副本和缓存 - 使用redis,memcached或cloudfront来减少数据库负载。
身份验证和授权 - 使用IAM角色,Oauth或FirebaseAuth.
加密 - 启用SSL/TLS进行连接和零件加密数据。
后卫和灾难恢复 - 使用自动备份,多区域复制。5。多云和高可用性
冗余 - 部署在多个可用性区域(AZS)。
拖延策略 - 为优先工作负载设置自动限制。
6。优化成本和资源使用使用Autoscaling - 使用Kubernetes(GKE,AK,EKS)或自动缩放组自动缩放资源。
Monitor&Optimize - 使用Prometheus,Grafana,CloudWatch或New Relic来优化性能和成本。最终思想
在构建
有关云解决方案的更多信息单击或访问:
Https://rb.gy/gsb7rc