1 Salesforce的简介
在云计算方面,Salesforce 可以称为业界的领袖,它不仅在产品方面比较成熟,而且在思维方面也是引领潮流的,特别是在SaaSSoftware as a Service,软件即服务)和PaaSPlatform as a Service,平台即服务)这个两个领域内。
1. Salesforce 商标(图源自Salesforce
首先,简要地介绍一下Salesforce的历史:Salesforce1999年由前甲骨文高管 Marc Benioff 创立,他创办Salesforce的核心理念就是"No Software(消灭软件)",但是其意义并不是排斥所有的软件,而是主要排斥运行在企业数据中心的软件(On-Premise Software),也就是希望让用户能直接通过互联网来诸如CRM等软件服务,并同时让用户无需自己搭建和维护软件所需的硬件和系统等资源。Salesforce的主要产品包括Sales CloudCRM)、Servic
e CloudChatterForce等。下面是它的主要发展史:
1999年,Salesforce在美国旧金山成立。
2001年,推出了第一款SaaS应用CRM,同时也受到众多厂商和客户的热议。
2004年,Sunguard成为Salesforce1000位用户。
2005年,推出了名为"AppExchange"的程序商店,以丰富用户选择。
2006年,推出了首个运行在云计算平台的语言Apex,并在语法上类似Java
2007年,推出了它的PaaS平台Force,来让用户更方便地在Saleforce平台上开发在线应用,同时Salesforce凭借Force得到了华尔街日报的科技创新奖(Technology Innovation Award)。
2009年,Salesforce成为首家年收入达到10亿美元的云计算公司,并在年初推出了名为"Service Cloud"在线客户服务应用。
2010年,Salesforce将推出名为"Chatter"的企业级在线SNSsaas建站系统服务,类似于企业内部的"LinkedIn",同时其CRM应用已更名为"Sales Cloud"
1.1 Salesforce的整体架构
虽然Salesforce这些产品从表面而言有所不同,但是从全局而言,它们却是一个整体,具体可看下图:
2. Salesforce的整体架构 (图部分源自Salesforce
从这张Salesforce的整体架构图可以看成,Force Salesforce 整体架构的核心,因为
它首先整合和控制了底层的物理的基础设施,接着给上层的Sales CloudService CloudChatter和基于Force的定制应用提供PaaS服务,最后,那些Force上层的应用以SaaS形式供用户使用。这样做的好处主要有两方面:其一是关于成本的,因为通过这个统一的架构能极大地整合多种应用,从而降低了在基础设施方面的投入。其二是在软件架构方面,因为使用这个统一的架构,使得所有上层的SaaS服务都依赖ForceAPI,这样将有效地确保API的稳定性并避免了重复,从而方便了用户和Saelsforce在这个平台上开发应用。
虽然Salesforce"Sales Cloud"SaaS应用也比较经典,但由于Force堪称整个架构的核心,同时也是最值得的学习和借鉴的部分,所以本系列接下来将会把重点对准Force
1.2 Force
ForceSalesforce2007推出的PaaS平台,并且已经有超过47000位企业已经使用了这个平台。Force基于多租户的架构,其主要通过提供完善的开发环境等功能来帮助企业和第三方供应商交付健壮的,可靠的和可伸缩的在线应用。
1. Force 商标(图源自参[3]
总体而言,Force主要有五方面功能:
强大的定制功能:在Force,不仅UI能够定制,而且诸如Workflow和表格等也能被定制。
提供完善的开发环境:首先,通过Visualforce能方便地使用"Drag & Drop"的方式来设计页面。其次,Salesforce提供基于EclipseIDE来快速地开发应用。最后,Salesforce还提供Sandbox来方便用户测试。
支持复杂的事务和流程:通过Force专属的APEX语言,能方便地设计和开发复杂的事务和流程。
优秀的整合功能:用户除了可以在AppExchange购买其所需的功能和应用,而且还可以通过ForceWeb Service接口来和其他应用整合,比如SAP等。
久经考验的基础设施:由于Salesforce除了通过在多个大洲建有数据中心来应对灾难的发生,而且在可用性和安全性等方面也有一定积累,所以在Salesforce能长时间地支持众多服务的正常运行。
2 多租户的介绍
2.1 概念
虽然对我们而言,多租户(Multitenancy)可以算是一个非常新颖的概念,但是其实这个概念已经由来已久了。简单而言,多租户指得就是一个单独的软件实例可以为多个组织服务。一个支持多租户的软件需要在设计上能对它的数据和配置信息进行虚拟分区,从而使得每个使用这个软件的组织能使用到一个单独的虚拟实例,并且可以对这个虚拟实例进行定制化。但是要让一个软件支持多租户并非易事,因为不仅对它的软件架构进行相应的修改,而且需要对它的数据库结构进行特殊的设计,同时在安全和隔离性方面也要有所保障。
还有,为了帮助大家进一步理解多租户这个概念,特别选取两个和多租户比较接近的概念来进行进一步的辨析。
多租户和多用户的区别
多用户的关键点在于不同的用户拥有不同的访问权限,但是多个用户共享同一个的实例。而在多租户中,多个组织使用的实例各不相同。
多租户和虚拟化的区别
多租户和虚拟化在概念是比较类似,都是给每个用户一个虚拟的实例,并且都支持定制化,但是它们作用的层次不同:虚拟化主要是虚拟出一个操作系统的实例,而多租户则是主要虚拟出一个应用的实例。