AWS 15年(2):云原生兴起

AWS创立云计算15年来,没有一个行业不跟云计算相关,没有任何一个颠覆性创新缺少云计算的参与,云已经是不可逆的滚滚洪流。
AWS这15年,是云原生服务从无到有再到基本成熟的15年,是云原生应用兴起的15年,是云原生业务和云原生企业新生的15年。
一、什么是云原生?
目前业界对什么是云原生尚未形成统一的认识。各种机构从自身立场出发给出了其定义,但视角各不相同,有些是从架构视角,有些是从运维视角,有的是从搞钱视角。笔者认为,云原生是一个包括五层的整体体系,如下图所示。

该体系具有以下内容和特征:
1、包括公有云平台、云原生服务、云原生应用、云原生业务和云原生企业等五层。
2、公有云是云原生体系的基座,云原生体系根植和生长于公有云平台之上。
3、云原生服务是公有云上提供的服务,来源包括云厂商和第三方。各大公有云已形成了较为整体的云服务体系。从作用上,可把云原生服务分为两大类,一类包括计算、网络、存储、大数据与数据分析、安全、人工智能等可以直接被云原生应用通过api使用的服务;另一类是云原生工具链,比如DevOps、监控服务和可观测性服务等。
4、云原生应用,是指尽可能利用云原生工具链进行设计、开发和运维,充分利用云原生服务,根植和生长于公有云上,具有敏捷、弹性、可靠、简单等特性的现代应用。
5、云原生业务,是指运行在公有云之上的、7*24在线的、数据驱动的新型业务。
6、云原生企业,是指大部分业务为云原生业务的企业。
二、AWS:全球最大的公有云平台,提供最全面的云原生服务

AWS于2006年正式推出,最开始提供对象存储服务S3和虚拟机服务EC2。经过15年的发展,已成为全球最全面、应用最广泛的云平台,提供超过200项功能齐全的服务,包括计算、存储、网络、数据库、分析、应用服务、部署、管理、机器学习、移动、开发工具、RobOps和物联网工具等。大多数服务并不直接向终端用户公开,而是通过 api 提供功能,供开发人员在其应用程序中使用。

(2018年部分AWS产品)
在AWS Marketplace中,还有超过17000个服务。

AWS 拥有最广泛的全球云基础设施。其区域具有多个通过低延迟、高吞吐量和高冗余联网连接的可用区,并且其数量也远超所有其他云服务提供商。AWS云现已在全球25个地理区域内运营着80个可用区,并宣布计划新增5个AWS区域和15个可用区。

三、云原生应用
(一)云原生应用的主要特征
- 敏捷:能快速适应新型业务快速变化的需求,能做到快速交付和快速迭代 
- 弹性:能满足数字化业务快速增加的性能要求,能做到自动扩容,如能支持数百万量级的用户,具有毫秒级响应能力,能处理PB甚至EB级别的数据 
- 可靠:能应用各种故障,能安全地持续地稳定地提供服务 
- 简单:能让普通工程师就能快速地、高质量地开发出来和维护好 
(二)为什么云原生应用需具有这些特征?
主要有两方面原因。
一是数字化业务对应用的要求。
新型云原生业务(或者说数字业务)要能快速满足用户要求,要应用能够快速上线、快速扩容、快速变更、稳定运行。
下面引用一段亚马逊云科技大中华区产品部总经理顾凡的观点:
“事实上,即使在去年因为新冠疫情而导致商业活动最举步维艰的那段时间,我们仍能看到许多身姿灵活的企业,快速适应了新的环境,甚至发掘出新的增长机遇。相信很多人很好奇,这些企业的数字化基础设施如何能在极短的时间去适应可能与过去迥异的业务需求。
越来越多的企业意识到,现代化应用的敏捷性、通用性及扩容能力等优势,已成为企业立足长期发展的“必选项”。当你不知道变化从何而来,也无法制定如同说明书一样按部就班的发展计划,此时构建与业务相匹配,且更为敏捷的现代化应用架构,就成了面对不确定性的最优解。
虽然有时候我们会用微服务、容器化、Serverless这类技术名词去描述现代化应用,但必须强调的是,现代化应用以及实现过程并不是技术和产品的机械化堆砌。企业对现代化应用的向往并非是因为技术先进,而是为了适应业务需求、助力业务拓展,以便能够不断发现新的机会,或是创造更好的产品和服务。”
二是现代应用的开发维护对IT工程师的要求越来越多、越来越高。
软件正在吞噬一切,各大公司虽然无法都变成软件公司,但至少都养了一个IT团队,这必然推动对工程师的数量和质量的要求越来越高。而且,传统应用开发运维模式下,业务对应用要求越高越多,那么高级开发和运维人员的要求也越来越多,IDC的容量也越来越大,要管理的软硬件越来越多,IT团队人员数量、成本和招聘要求自然就水涨船高。这种状态显然不具有持续性。
这种背景下,云原生应用开发的简单化要求应运而生,要使得绝大部分的分布式云原生业务应用可由普通IT人员开发和运维。
(三)如何构建云原生应用?
从应用架构上,对于大型应用,可利用容器和微服务来实现并行开发、共享复用、快速修改、弹性伸缩以及标准化;对于中小型应用,可直接采用Serverless服务快速上线。可利用DevOps来实现开发上线一体化和自动化。可尽量利用云原生服务来降低对开发和运维人员的技能要求,因为这些服务天生就是云原生的,天生是高可用和弹性,而且因为是托管的,所以降低了运维要求。
BTW,个人认为CNCF所提供的云原生概念,即“云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API”,其角度正是应用架构视角。
从社会分工上,应用开发人员只负责业务逻辑,其它的都交给第三方,包括云服务厂商(如AWS、阿里云)和云上软件服务商(如Datadog、SnowFlake)。
BTW,有不少企业搞云原生的第一步是自己搭建云原生底座,基于开源项目自研了一堆服务,买了一堆自己实在做不来的服务。笔者认为,这是本末倒置。与其这样,不如好好用公有云,实在担心安全就做好安全管控,把主要精力放到应用的业务逻辑上吧,把主要精力放到研究如何面向公有云做设计开发和维护吧。
从团队组织上,要建立面向公有云、面向云原生应用的架构设计、开发和运维的新IT体系,建立由少量高级IT人员加大量中初级IT人员相结合的成本较低但能保证产出效率和质量的IT团队,包括一定数量的云架构师、数据分析师、数据科学家、算法工程师等人员。
从IT理念上,要革新传统应用设计、开发和运维理念。传统上,从IDC往上,计算网络存储中间件等都是要么外采,要么基于开源自己搞,要么自研,统统都自己做,把IT搞得很重,把团队搞得很累(当然了,也把IT团队搞得很大,可以设置一堆领导岗)。如果理念不改,即使上了公有云,还是只会用虚机,还是会自己搭建和运维一切基础性服务,还是会搞一个庞大的基础设施运维团队。只有真正理解和领会了云原生理念和价值,才能有真正的云原生实践。
这里引申出四个问题:
- 为什么要强调是公有云?因为私有云一是无法提供足够的弹性,二是无法提供够多够好够新够全的云原生服务。 
- 云原生一定需要K8S吗?不一定。举个例子,基于AWS的Serverless架构开发的应用。K8S只是一个容器编排平台。如果确实要用,也要尽量用云上托管的K8S服务。 
- 用了K8S就是云原生吗?也不一定。多少K8S案例中把容器当做虚拟机用,多少K8S机器上跑着老旧的应用。 
- 用公有云原生服务,会导致供应商锁定吗?是的,会。这还是一个取舍和权衡问题,而且支持多云的第三方服务越来越多了。 
如果你还是纠结怎么开始,可先从以下四条做起:
- 尽量多用公有云 
- 尽量多用托管服务 
- 数据尽量不要存在服务器上;用对象存储静态文件 
- 用IAM role而不要用访问密钥(AKSK) 
(四)AWS等云厂商在云原生应用兴起过程中的作用
一是提供大量云原生服务,这些服务也是云原生应用的标杆范例。
二是宣传云原生理念,身体力行,并提供最佳实践。AWS发布了面向云计算进行架构设计和开发的N多白皮书,N多视频,N多在线文档,而且还在持续更新,比如https://docs.aws.amazon.com/wellarchitected/latest/framework/wellarchitected-framework.pdf。
三是培育出一批非常成功的云原生企业,比如Netflix和Capital One,成为令人印象深刻的样板。
四、云原生业务和云原生企业
AWS等公有云上诞生了第一批云原生企业。每年的AWS re:invent等云厂商峰会大会,都是展示这些企业的舞台。下面是几个典型。

Netflix是美国一家在线视频公司,于2015年关闭了其最后一个数据中心,成为完全使用AWS等公有云的企业。关于Netflix,我有两篇文章可参考,云中奈飞(一):Netflix的上云之旅, 云上奈飞(二):Netflix全球视频流服务的微服务架构设计。

Capital One 是美国最大的金融机构之一,这家银行专门经营信用卡、汽车贷款、银行和储蓄账户,拥有近5万名员工,2020年的收入接近300亿美元。2021年初,它退出了所有的数据中心,通过AWS将所有应用程序和系统转移到公共云上。具体可参见 https://diginomica.com/capital-one-closes-its-data-centres-and-goes-all-aws。

Spotify可以说是世界上最大的音乐流媒体服务。2018年关闭了其数据中心,完全搬迁到GCP上,具体可参见https://www.computerworld.com/article/3427799/how-spotify-migrated-everything-from-on-premise-to-google-cloud-platform.html。

滴滴出行是全球卓越的移动出行平台,为超过4.5亿用户提供全面的出行服务,目前市值 684 亿美元。滴滴在2020财年平台总交易额达到3410亿人民币。滴滴近三年向阿里采购云服务约 14 亿元,向腾讯采购支付、托管及云服务约 32.6 亿元,约占其总成本的1%。

五、展望
关于云计算的一切不过刚刚开始,分析师预测目前云上支出只占IT整体支出的5%到15%,在中国市场,这个数字甚至只有2.7%。
云原生时代也才刚刚拉开帷幕。
就像文章开头的照片,如果把公有云厂商比作高速公路公司,那么高速公路就是公有云平台,在高速公路上尽情奔跑的汽车如同云原生应用。奔跑吧,云原生!
感谢您的阅读,欢迎关注我的微信公众号,给您更好的阅读体验!

AWS 15年(2):云原生兴起的更多相关文章
- AWS re:Invent 2019 召开 | 云原生生态周报 Vol. 30
		作者 | 何淋波.宋净超.徐迪 业界要闻 1. AWS re:Invent 2019 AWS 年度云计算盛会于 12.2-12.6 在拉斯维加斯举行. 技术分享超过 2500 场,技术方向涵盖数据分析 ... 
- 云原生生态周报 Vol.9| K8s v1.15 版本发布
		本周作者 | 衷源.心贵 业界要闻 1.Kubernetes Release v1.15 版本发布,新版本的两个主题是持续性改进和可扩展性.(https://github.com/kubernetes ... 
- 云原生生态周报 Vol. 15 | K8s 安全审计报告发布
		业界要闻 CNCF 公布 Kubernetes 的安全审计报告 报告收集了社区对 Kubernetes.CoreDNS.Envoy.Prometheus 等项目的安全问题反馈,包含从一般弱点到关键漏洞 ... 
- Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31
		作者 | 徐迪.李传云.黄珂.汪萌海.张晓宇.何淋波 .陈有坤.李鹏审核 | 陈俊 上游重要进展 1. Kubernetes v1.17 版本发布 功能稳定性是第一要务.v1.17 包含 22 个增强 ... 
- 未来已来:云原生 Cloud Native
		作者:天知,原文链接 前言 自 2013 年容器(虚拟)技术(Docker)成熟后,后端的架构方式进入快速迭代的阶段,出现了很多新兴概念: 微服务 k8s Serverless IaaS:基础设施服务 ... 
- [转帖]Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31
		Kubernetes v1.17 版本解读 | 云原生生态周报 Vol. 31 https://www.kubernetes.org.cn/6252.html 2019-12-13 11:59 ali ... 
- 干货 | 京东云原生容器—SpringCloud实践(一)
		"云原生"成为近年热词并不是一种偶然,它不是一个软件,也不是一种框架,而是一堆理念集合,以及围绕这些理念所产生的一些最佳实践的工具.云原生天然就是作用于服务架构的,可以视作一个服务 ... 
- 未来云原生世界的“领头羊”:容器批量计算项目Volcano 1.0版本发布
		在刚刚结束的CLOUD NATIVE+ OPEN SOURCE Virtual Summit China 2020上,由华为云云原生团队主导的容器批量计算项目Volcano正式发布1.0版本,标志着V ... 
- 快速上手 Rook,入门云原生存储编排
		Rook 是一个开源 cloud-native storage orchestrator(云原生存储编排器),为各种存储解决方案提供平台.框架和支持,以与云原生环境进行原生集成. Rook 将存储软件 ... 
随机推荐
- Xcode功能快捷键
			隐藏xcode command+h退出xcode command+q关闭窗口 command+w关闭所有窗口 command+option+w关闭当前项目 command+control+w关闭当前文 ... 
- activiti工作流引擎
			参考文章 Activiti-5.18.0与springMvc项目集成和activiti-explorer单独部署Web项目并与业务数据库关联方法(AutoEE_V2实现方式) https://blog ... 
- SpringBoot 整合 spring security oauth2 jwt完整示例 附源码
			废话不说直接进入主题(假设您已对spring security.oauth2.jwt技术的了解,不懂的自行搜索了解) 依赖版本 springboot 2.1.5.RELEASE spring-secu ... 
- JpaRepository 增删改查
			Jpa查询 JpaRepository简单查询 基本查询也分为两种,一种是spring data默认已经实现,一种是根据查询的方法来自动解析成SQL. 预先生成方法 spring data jpa 默 ... 
- 使用jquery完成抽奖图片滚动的效果
			<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>jq ... 
- drone 使用git tag触发构建
			配置ref为tag .drone.yml中配置trigger为ref trigger: ref: - refs/tags/FileService 或者配置when为ref when: ref: - r ... 
- 9、Redis五大数据类型---有序集合Zset(sorted set)
			一.简介 zset与set异同 相同之处: 都是没有重复元素的字符串集合 不同之处: 有序集合zset的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排 ... 
- C# .exe和.dll文件图标资源提取工具
			Windows 可执行文件(.exe)和动态库文件(.dll)图标资源提取工具 GitHub 功能 图标资源预览 图标资源导出(仅支持导出 PNG 格式) 代码 获取图标资源使用了 Win32 API ... 
- Nginx配置访问黑名单
			目录 一.简介 二.脚本 一.简介 有的时候需要将某些大访问量的ip加入到黑名单中 二.脚本 1.脚本内容为,检测本地并发访问超过15并且是ip地址,则加入nginx黑名单中.其中的53a是deny行 ... 
- Blazor中的无状态组件
			声明:本文将RenderFragment称之为组件DOM树或者是组件DOM节点,将*.razor称之为组件. 1. 什么是无状态组件 如果了解React,那就应该清楚,React中存在着一种组件,它只 ... 
