《让云落地(云计算服务模式(SaaS/PaaS/IaaS)设计决策》读书笔记)

作者:Michael J. Kavis
译者:陈志伟,辛敏
电子工业出版社,2016-3
chap 1 为什么是云计算,为什么是现在
作者认为:企业能否在云中搭建出真正解决业务问题的可行的解决方案,取决于是否进行了合理的架构设计。
以前每家每户,每个农场、村庄、城镇都有自己的水井,但现在借助公用设施,我们只需要拧开水龙头就有净水可用; 云计算的工作方式与此类似。 我们可以随意开关厨房里的水龙头,也可以根据需要来运行或停止云计算服务。 当然,无论是自来水公司还是云计算公司,都会有专职的技术人员团队来确保所提供的服务安全、可靠且24小时不间断可用。很明显,关闭水龙头的意义不仅仅是节水,还在于我们可以按需按用付费,不再花冤枉钱。
一一美国前联邦首席信息官(CIO)维维克·昆德拉
云之于计算,正如iPhone之于电话。
2013年是美国企业开始大规模拥抱云计算的一年。
云环境很适合水平扩展架构。 我们不需要在几个月之前就预估自己的硬件、存储和网络需求可能会发展到何种地步。如果需要,我们可以通过编程的方式在极短的时间内从 AWS 的共享池中获得更多的资源。——Netflix云迁移


chap 2 云服务模式
云计算的5个特征是网络接入、弹性、资源池化、可计量的服务以及按需自服务。
云堆栈

《让云落地(云计算服务模式(SaaS/PaaS/IaaS)设计决策》读书笔记)
文章图片
图片发自App 基础设施即服务IaaS:
美国国家标准与技术研究院(NIST)对IaaS 的定义如下:消费者能够获得处理能力、存储、网络和其他基础计算资源,从而可以在其上部署和运行包括操作系统和应用在内的任意软件。 消费者不对云基础设施进行管理或控制,但可以控制操作系统、存储、所部署的应用,或者对网络组件(如防火墙)的选择有部分控制权。
在IaaS中,涉及管理和维护物理数据中心和物理基础设施(服务器磁盘存储、网络等)的许多工作,都被抽象成一系列可用服务,可以通过基于代码或/和网页的管理控制台进行访问和自动化部署。开发人员虽然仍需进行应用程序的设计和开发,管理员也仍然要安装、管理第三方解决方案,并为之安装补丁,但已经不需要再为物理基础设施的管理劳心费力。在IaaS服务中,人们可以根据需要访问虚拟的基础设施,在数分钟内通过调用API或者登录网页端管理控制台完成资源的部署和运行。就像水电这些公用事业服务一样,虚拟的基础设施也是一种可计量服务。
平台即服务PaaS:
美国国家标准与技术研究院(NIST)对PaaS 的定义如下:消费者能够使用提供商所支持的编程语言、库、服务和工具,将自己创建或获取的应用部署到云基础设施上。消费者不会对底层云基础设施进行管理或控制,这包括网络、服务器、操作系统或存储等,但是可控制所部署的应用,并有可能控制配置应用的托管环境。
早期的PaaS提供商:Google Apps Engine
公有多堆栈代表:Heroku
PaaS的一个巨大优势是可以与大量第三方软件解决方案整合,如常见PaaS解决方案中往往包括:数据库、日志、监控、安全、缓存、搜索、分析、电邮、支付等。
软件即服务SaaS:
美国国家标准与技术研究院(NIST)对SaaS 的定义如下:消费者能够使用提供商运行在云基础设施上的应用,并可通过类似Web浏览器(如基于Web的电子邮件)等瘦客户端界面,在各种客户端设备上访问这些应用。 除了一些有限的特定于用户的应用配置的设置之外, 消费者不会直接对底层云基础设施进行管理或控制,这包括网络、 服务器、操作系统、存储,甚至单个应用的功能。
部署模式

《让云落地(云计算服务模式(SaaS/PaaS/IaaS)设计决策》读书笔记)
文章图片
图片发自App 公有云是一种多租户环境,物理硬件通过API形式展现给用户,用户来创建并使用大型资源池里的虚拟计算资源。公有云的好处:按需付费,弹性,专注核心竞争力。
私有云:可以部署在本地或托管在云商数据中心,属于单一租户。牺牲了快速伸缩性、资源池化和按需使用的定价模式,但也能提供资源的扩展或缩减。
混合云:单独存在却通过标准或专利技术绑定在一起,以使得数据和应用具有可移植性的两种或多种不同的云基础设施的组合。它的最佳实践是在快速伸缩性和资源池方面尽可能多的使用公有云,在数据所有权和隐私等风险高的领域使用私有云。
云计算正在改变软件构建和交付的方式,是一种从购买和管控基础设施以及开发或购买软件的传统模式,向一切均可为服务进行消费的新世界的范式转换。
chap 3 云计算的错误实践
常见误解:将应用迁移到云端是能够降低成本的简单有效方案。事实往往完全相反。
云计算架构是一种松耦合的架构,主要解决真正的弹性,即软件按需扩展或缩减,也就是水平横向扩展。
常见的水平扩展方法有服务器农场类型、客户类型及应用领域类型等。
遗留应用程序面临的另一个挑战是系统的设计是“有状态”( stateful)还是“无状态”( stateless)。云服务是无状态的。一个“无状态的”服务是指服务不知道前一个请求或响应的任何信息,只知道服务处理给定请求这持续期间的信息。无状态的服务在客户端而非服务器端存储应用的状态,因此对基础设施没有依赖性。例如,如果某个贷款业务收到对申请贷款的客户的信用评级进行评估的请求,那么在收到输入的消息(通常是XML或JSON文档)之前,服务并没有有关该客户信息的任何记录。而一旦完成文档处理、信用分数判定的流程,并且对请求程序做出响应之后,服务也不会存储会话期内的任何信息,不知道有关客户的任何情况。
将底层架构从保持状态转变为无状态的工作通常都不太可行,对应用进行整体替换反而更为现实。
建议:首先确定架构师真正理解无状态和有状态设计模式的差异;其次,弄清楚应用程序是否适合迁移到云端,亦或者适合托管,或重新编写。
架构合理的云服务的秘密在于完全理解和拥抱RESTful的概念。
chap 4 先从架构开始
5W1H:
Why: 我们在试图解决什么问题?业务目标和驱动力是什么?
使用云计算服务的商业驱动力是什么?每个公司都会有不同的答案。
Who: 谁需要这些问题被解决?内部/外部参与者都有谁?
What: 业务和技术需求都是什么?有哪些法规约束?风险是什么?
功能性需求:
系统处理什么数据
界面如何操作
工作流如何运转
系统输出是什么
系统每部分的访问权限是什么
必须遵循什么法规
非功能性需求:

性能:响应用户和系统需求的能力
灵活性:最少代码变更匹配业务变化的能力
能力:在当前各位未来完成业务功能的能力
安全性:安全、隐私、合规方面需求
溯源性:有关日志、审计、通知和事件处理的需求
复用性
集成能力:与各种系统或技术整合的能力
标准化
可扩展性
可移植性
可靠性:必需的运行事件、SLA及恢复机制


Where: 在哪里提供服务?有没有当地特殊需求?
When: 什么时间提供服务?预算是多少?
How:如何交付这些服务?组织、体系架构和客户是否做好了准备?
从业务架构开始
chap 5 选择合适的云服务模式
如果能够满足需求并且在可负担范围内,企业应该通过使用SaaS来将所有非核心竞争力的应用、功能和服务外包出去。常见的SaaS包括CRM, 人力资源、erp,支付等企业业务应用;IT基础设施解决方案:安全、监控、日志等;数据类:BI,数据可视化,仪表盘等;效率类:协作工具、开发工具,调研等。
公有的PaaS提供基础设施的抽象服务,常常要求采用特定的编程语言和技术堆栈,而开发者专注云端应用。私有的PaaS 要求服务消费者自己管理应用堆栈和基础设施。
如果一个应用或服务有些性能或扩展性的需求,要求开发者管理内存配置数据库和应用服务器,以最大化吞吐量、明确数据在磁盘的分布和控制操作系统,你应该选择IaaS.
常见的云使用案例:
1. 云爆发bursting: 应对流量陡增
2. 存档:脚本化云存储服务比物理介质便宜
3.数据挖掘和分析:大规模数据分析的按需执行
4.测试环境
chap 6 云的关键:RESTful服务


why?
1.在云中搭建服务时,人们会在IaaS或PaaS之上搭建服务并与SaaS产品整合,这些服务都对外暴露了使用RESTful的API接口
2. 多终端支持:需要统一的API采用前后端分离的方式构建系统
3. 云资源弹性增减,云设计具有容错,软件也需要以容错方式设计,需要软件和基础设施之间是松耦合关系。实现松耦合的方法是将应用状态存放在客户端而不是服务器端。
REST是什么:
1. 区分资源和表述:资源可能在CDN上复制保证访问速度和可靠性
2. 通过表述来操作资源:客户端发送足够信息和具备权限时才能操作资源。
3. 自描述消息:消息必须包含对如何解析数据进行说明的信息。
4. 以超媒体作为应用状态引擎(HATEOAS):容错
将遗留系统迁移至云端面临的挑战:
遗留系统大都对ACID事务有依赖,设计时以运行在单一分区为目的、预期数据保持一致性。而云架构依赖的是BASE事务,要求分区容错性,意味着一个实例出错将会调用另一个实例。
如果遗留应用只能以单一租户的模式进行运行,更像是一种托管方案,那么就无法利用云所具有的弹性特征,不是可扩展的方案。在高可用但最终一致的世界,成功的秘密就是构建无状态的、松耦合的、REST服务。
chap 7 云中审计
安全合规的云服务
实施审计和合规路线图最好的例子是亚马逊。
AWS发布了一个满足政府监管要求的GovCloud政府云,将安装在此区域的政府应用与AWS其他客户进行隔离,它实际上是半私有的社区云。
【《让云落地(云计算服务模式(SaaS/PaaS/IaaS)设计决策》读书笔记)】chap 8 云的数据考虑

    推荐阅读