基于SaaS的应用架构——最佳实践

2016-04-06 12:38:00
admin
翻译
1524
摘要:了解SaaS的应用架构,可以让开发者以很低的成本构建起可扩展的、高容错的、每用户收费的应用。SaaS应用设计以及底层架构需要考虑一系列借助于云计算的关键因素。传统应用设计仅仅考虑了有限的资源。但是,在云端的应用可以使用无穷无尽的资源,因此架构师在设计基于云端的应用时,必须认识到这个变化。

了解SaaS的应用架构,可以让开发者以很低的成本构建起可扩展的、高容错的、每用户收费的应用。SaaS应用设计以及底层架构需要考虑一系列借助于云计算的关键因素。传统应用设计仅仅考虑了有限的资源。但是,在云端的应用可以使用无穷无尽的资源,因此架构师在设计基于云端的应用时,必须认识到这个变化。

1       设计要素
1.1自服务和个性化

在你的设计过程中,需要谨记的是SaaS服务必须是自服务的。这意味着所有对你产品感兴趣的人必须能够自己注册和使用你的服务,而不需要任何其他人(包括IT管理员)的帮忙。除此之外,SaaS自身的设置以及应用的使用,都应该开放给客户。

而且,用户必须能够体验到高级别的个性化服务,比如更改外观或根据个人喜好调整应用设置。即使是租户里面的最终用户,都应该能够感受和体验到个性化的外观和使用界面。

1.2   多租户

这是一种全新的架构,指的是一份软件能够服务于多个客户。由于是多租户的架构,开发者可以使用相同的基础架构,甚至是相同的代码来扩展他们的服务范围,使得对应用的维护变得更简单和更经济。

1.3   集成

一个SaaS应用必须能够支持对其他应用的集成。SaaS应用应该提供一系列标准的API,来实现和其他SaaS应用或者传统On Premise应用的集成。

1.4   可扩展性

一个高度扩展的应用应该具备很好的性能,来支持服务于任意数量的租户。由于客户是通过互联网来访问应用的,应用程序本身必须具备极佳的性能来实现优秀的功能,数据查询以及各种交易。

1.5   安全和合规性

SaaS应用和硬件的安全性的义务完全落在了应用开发者身上。开发者必须保证共享同一个基础架构的多个租户在数据上是分割开的。在企业采纳SaaS应用之前,安全性是一个最关键的顾虑。

2       为什么多租户对于SaaS的成功非常关键

允许用户通过互联网来订购服务,足以说明一个应用是SaaS。但是,仅有这一点不足以将其同ASP(Application Service Provider)区分开来。多租户是两种区分的重要标志。

当设计SaaS应用的时候,请记住,一个SaaS应用的成功取决于是否是多租户,而多租户有助于在支持共享的同时,提升底层基础架构的使用效率。通过对资源的共享,资源的利用率得到了极大的提高,降低了维护的成本,而这些节省下来的资源可以被其他地方随意使用。

2.1设计的考虑

在多租户环境中,有一个唯一的ID来区分不同的租户。为了实现这一点,设计者需要在应用和数据库级别都为每一个租户定义一个唯一的ID。除此之外,在租户ID下面还定义了不同的用户ID,来保证每一个用户都能够按照正确的访问权限访问属于他们的数据。

对于共享的租户,开发者可以为程序设计选择两种用户结构(Schema),分离的或者共享的。这个选择主要取决于选择的数据库。比如,在选择MS SQL Server和Oracle的时候,可以选择多用户结构(multiple Schemas);但是在MySQL中,并没有Schema的概念。无论如何,租户模型的选择取决于SaaS应用的本质、开发者的水平、推向市场的时间、复杂度等等。

2.2   安全的考虑

数据安全可能是许多用户向云端迁移的最主要顾虑。应用的安全,以及数据的存储方式,对于SaaS的开发者来说都是优先级最高的。SaaS应用开发者可以在数据库中使用租户ID来提供虚拟的数据隔离。开发者也必须有责任保证最终用户的访问被限制在特定的租户范围以内。

2.3   扩展性的考虑

虽然传统的应用限制了访问应用的用户数量,SaaS应用不能对具体的访问数量做出假设,并且应该假设访问的用户数量是无限制的。应用本身必须就应该设计成可扩展的,包括应用程序和数据库都必须支持独立的扩展性。

(a)   应用的扩展性

这个可以通过如下的方式获得:

  • 垂直扩展(Scale Up),即将应用迁移到一个更强大的运行环境中(服务器);
  • 水平扩展(Scale Out),即通过增加额外的服务器来满足更多的负载。对于云端托管的SaaS应用来说,水平扩展是最容易的方式。

(b)  数据库的扩展性

对于一个SaaS应用来说,数据库的大小会随着用户数量以及交易的增多而急剧膨胀。数据的激增毫无疑问会影响数据库性能,特别是高并发情况下的查询和交易时间,在没有优化的时候会导致用户体验非常差。

2.4   监控的考虑

软件的最终消费者已经习惯了传统的应用交付模式(On Premise),即部署在客户现场,并且是由客户的IT团队负责来监控和维护应用程序。但是SaaS应用则区别非常大:监控和运维的职责都义无反顾的由开发者来负责。

SaaS提供者必须监控应用的宕机时间、性能指标、用户体验等指标。开发者需要使用一些监控工具和流程来保证应用的高可用性。

3、总结

一个细心设计和良好构建的SaaS应用可以为开发者和客户实现双赢的局面。SaaS应用展示了一个全新的世界和无限的机会,但是为了保证SaaS应用架构的良好设计,用户必须关注在一系列在安全、扩展性、易用性上的设计技巧。

寄云翻译,转载请注明出处。

原文链接:http://saasaddict.walkme.com/saas-based-application-architecture-best-practices/

发表评论
评论通过审核后显示。
新增底部228