我对Cloud Native的学习与理解
一直有听到Cloud Native(云原生)这个词,但是一直对它不甚了解,对于Cloud,我可以联系起来的关键词有container/database/PaaS/SaaS/serverless/aws S3,从这些词上面,大概也能模糊认识到,Cloud Native,大概就是这些个cloud based的应用吧。
了解了一番,其实Cloud Native是由CNCF(Cloud Native Computing Foundation)来推动标准化发展的,其成员如下:
下面几句话能很好的讲清楚Cloud Native的缘来和特性:
In DevOps, everyone needs to trust that everyone else is doing their best for the business.
that for systems to behave well on the cloud, they need to be written for the cloud.
Cloud-native technologies generally embrace loosely coupled architectures, resiliency, immutable infrastructure, and observability.1
我的理解如下:
Cloud Native是云时代的必要的标准产物,它由Linux基金会发起,其发展由全球顶级的互联网基础设施厂商推进,其目的就是打造一个尽可能授权中立的、包含云服务各领域所需构件的且有良好的通用性的云应用生态,并且以基于专门为云场景来构建应用的前提出发来设计应用,从而形成一个高效率、互通性好、性能优异、将云特性发挥好并且解决方案丰富的生态,为上层应用开发者提供更高效的解决方案。
云基础设施就像房屋的地基,在以前,当你需要构建一个网站,你需要自己购置一个物理服务器、办理带有独立IP的网络接入服务、自行搭建Web服务器、自行解决数据库的问题、自己用基础的HTML和CSS编写前端网页,以及自己维护服务器所运转所需要的电力供应,处理各种运转过程中会发生的错误,在这样的情况下,网站也难以保证稳定。
IaaS则解决了物理服务器难以稳定运行的问题,IaaS服务商提供全球顶尖的物理服务器解决方案保证服务器正常运行,同时集中化的物理服务器机房也降低了绝大部分的能源损耗,开发者只需要关注在软件层面的应用优化。
PaaS则在基础服务器和操作系统之上进行包装,只为开发者暴露应用的接口,开发者不需要再为了一个数据库而去部署一个服务器,应用之下的服务器和操作系统都由云服务提供商负责维护。诸如Heroku这样的Web应用托管网站就在PaaS的范畴内,开发者只需关注应用,而无需关注网络安全、物理设施安全等等。
SaaS则是更进一步的上层建筑,诸如Dropbox、Zoom、GSuite这样的解决特定需求的应用,开发者能定制化的空间就很小了。
网络设施的发展、网络节点的增加、民用宽带的成本降低、移动互联网的普及、基于互联网的内容载体和应用的变化以及云服务的丰富化都是这个生态中的紧密相连的环节,只有移动互联网普及了并且云服务内容分发成本降低了,才有可能让Netflix和抖音成为人们地铁的消遣,只有网络设施成本降低了、宽带价格降低了以及互联网用户变多了,云服务厂商才得以降低成本并技术升级,开发者才得以获得更多的可能来开发更不一样的应用。
Cloud Native需要应用针对分发性、微服务和可扩展性进行设计,也就是契合云的原生特性进行设计,这就要求应用具有良好的沟通性、稳定性、分布式特性以及安全性。
我发现自己关于云服务、微服务的特性以及部署、扩展、保障大量用户使用的流程比较感兴趣,待我做更多research再来分享。