导语
2017年“云 未来”峰会即将在深圳盛大举行,本次峰会 Cloud Native 技术专场将在7月6日下午举行。Cloud Native 专场给各家提供了针对 OpenStack 应用以及背后填坑之路作深度探讨的机会。现在让我们一起回顾下去年各位嘉宾在在现场分享了哪些云上的心得体会以及Cloud Native云原生架构上的亲身实践。
本文是加州理工学院博士,魔泊云创始人&CEO鲁为民在2016年腾讯“云 未来”峰会 Cloud Native 专场有关《开放融合的云平台构建企业云原生应用》分享的回顾。
鲁为民:《开放融合的云平台构建企业云原生应用》
云服务商也在做相应的调整,以适应这一新变化,魔泊云创始人&CEO鲁为民认为,未来云平台不仅仅提供IT基础设施,而应该关注应用的交付,未来IaaS、PaaS和SaaS之间的界限会越来越模糊,未来云平台融合是趋势,这一融合将会更好的支持Cloud Native的云原生应用。
融合的云平台趋势和云原生需求
鲁为民首先介绍了融合云平台技术的需求。
- 企业 IT 的演进趋势
- 需要支持用户业务需求多元化
- 从基础设施转变为应用投放
- 支持用户交互,更有效地驱动业务的增长
- 云服务的支持
- 不再仅仅是从工作负载的整合,而且更多的是应用的交付
- IaaS 提供基础设施及其自动化交付
- PaaS 管理工作负载并快捷投放市场,进而直接影响业务
- PaaS 是颠覆性的云服务模式,是本质上不同的应用开发,部署,运行方式
- 作为“最后一英里”的云技术,PaaS 极大限度地实现云服务的红利
- IaaS - PaaS 相互渗透和融合的需求
- 灵活动态提供多元计算资源:VMs 和容器化资源;基础资源和应用资源
- 简化应用生命周期管理,提供高效的应用和服务开发、部署和运维
接下来,重点介绍了 PaaS 是一种横向扩展型应用交付平台,便于开发、测试和部署应用程序。它可供公有云和私有云使用,为多种编程语言提供了可扩展性、敏捷性和支持。总的来说Paas能够让应用交付标准化、规范化和简单化。
那么,融合云平台与云原生应用又有什么样的关系?鲁为民针对这个问题发表了自己的看法。简单的说,云原生应用是在云环境下规模化运行,可以在云平台上进行开发;可以部署到不同的云环境以及提供各种软件堆栈,由此来实现这种快捷、安全以及可靠,费用成本的降低,这些方面实际上就是融合云平台的目标,所以融合云平台实现的目标与云原生架构实现的目标是一致的。
云原生应用的设计
首先,从云原生应用平台的设计来看,怎么满足云原生应用的需求。
云原生应用的需求
- 云原生应用在云计算环境下规模化运行
- 在云平台上进行开发
- 可以部署到不同的云环境
- 提供支撑性软件堆栈
- 云原生架构实现业务的用户驱动的创新
- 支持和用户更容易更紧密的交互,更有效地驱动业务的增长
- 云原生架构催生平台技术的融合满足多元需求
- 云原生造就一种不断变化的软件架构,让其支撑的业务能够维持市场竞争力
- 云原生应用程序遵循标准化的部署和运维
- 构建微服务(离散的应用程序服务)
- 基于容器,每个微服务在自己的容器中运行
- 容器间的服务协作
另外,云原生应用可以通过微服务架构来设计和实现。微服务的架构实际上原则是按照业务领域来定义,具有业务领域、高可观测、隐藏细节等等的优势;其次,云原生实际上是由云平台支撑的,可以快捷动态提供资源、快速应用交付,提供监测和开发运维。其中还提到了微服务架构策略。
云原生应用的设计要求
最基本的要求是云原生应用“基础设施”和“数据”之间的分离,云应用可能有状态、必须持续地保存,很大程度上能够高可用。对于基础设施,因为软件提供相关的保护,你必须容忍节点的不可靠,必须支持状态不能维持等等。我们在云平台设计当中是怎么考虑这些,或者说我们要设计云原生应用当中要考虑哪些方面?
原生应用(应用的云化)设计原则
我们在云平台服务架构的设计中,以下四点是比较重要的。
- 数据持久化
- 需持久化的数据存放在 DB、NFS、或其它共享存储
- 日志保存至远程
- 实例发生迁移时,里面的文件不保留
- 实例定位
- Container 与 IaaS 解耦,依赖域名或配置管理
- 状态管理
- 平台不提供状态保存管理,不依赖 会话保持功能
- 状态保存至第三方服务,以支持水平扩展性、负载动态均衡和故障转移
- 优化 MTTR
- 使实例的重启、重建,变得更快捷
接下来,鲁为民从以下几个简单的方面介绍云原生平台的底层的架构,从而说明前面所提到的为什么要满足云原生应用设计的要求以及原则。
资源管理:容器化管理和动态调配
必须考虑容器和基础设施的解耦,所以在应用云化设计当中,应用的实例必须和IaaS解耦,也就是说,你不能依靠IP或者端口来定位这个应用,定位这个容器。而是通过域名、应用层面的一些ID来对它们定位。当然更不能依靠物理环境。
资源管理:资源访问和负载均衡
我们实现资源访问的负载均衡时,为什么要实现应用的无状态或者用一种可靠的方式来维持这种状态?因为在负载均衡的情况下,同一个应用不同实例分布在不同容器中运行,但这些实例都是支持同一个用户访问的会话,其状态不能保存在单个的本地容器中,如果状态没有很好的管理,就不太可能实现稳定通畅的会话。
资源管理:多集群和高可用
另外我们如果要支持高可用,比如在部署区域(Zone)层面的高可用,那么我们要在设计应用时确保应用不在当地自己管理状态,因为数据不保证在当地进行持久保存。
故障恢复:实例迁移和重启
此外,在故障恢复的时候,也必须考虑数据和状态的持久化,同时整个平台提供一个好的健康检测机制,这种健康检测是主动的,一旦应用出现问题故障,不是试图修复应用实例的这个故障,而是将它重启,因此,应用重启时间(MTTR)的设计优化变得非常重要,这使得整个重启的过程就变得非常主动,从而有效的实现故障恢复。
融合的云平台设计实例
接下来,鲁为民给我们介绍怎样设计融合的云平台来实现前面提到的云原生的架构。首先云平台是行业或是企业的需求,所以我们需要解决一系列的问题,来保证云平台高质量、高效率、低成本的运行。
其次,云平台具有融合的需求,所以融合企业云平台需要满足两点需求,一个是具备融合企业云平台架构特点,另一个是需要融合多元开放技术。
对于应用交付,满足用户的不同需求提供多种应用部署的方式。第一种方式是敏捷交付、第二种是灵活交付。
鲁为民还介绍了与腾讯云一起打造开放的云平台,使用腾讯云IaaS服务、网络、计算和存储与MopaaS对接,并整合了腾讯云服务产品,如移动、数据、通讯、视频、安全等服务接入MopaaS引擎。通过云平台,实现一个生态建设。
总结
最后,鲁为民对本次的分享做了总结,他强调IT重点更多地从基础设施转变为应用体现上,云平台需要提供不仅仅工作负载的整合,更多的是应用的交付,云平台的融合趋势包括IaaS、PaaS和SaaS的界限越来越模糊。云平台的融合将为应用的交付提供更好的快速敏捷、规模弹性和安全可靠,平台的融合可以更好的支持云原生应用。另外,云原生应用可以通过微服务架构来设计和实现。