什么是云原生?以及应用落地

何谓云原生?

技术的变革,一定是思想先行,云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。

什么是云原生?以及应用落地_第1张图片

云元素的四要素

  • 微服务:几乎每个云原生的定义都包含微服务,跟微服务相对的是单体应用,微服务有理论基础,那就是康威定律,指导服务怎么切分,很玄乎,凡是能称为理论定律的都简单明白不了,不然就忒没b格,大概意思是组织架构决定产品形态,不知道跟马克思的生产关系影响生产力有无关系。

微服务架构的好处就是按function切了之后,服务解耦,内聚更强,变更更易;另一个划分服务的技巧据说是依据DDD来搞。

  • 容器化:Docker是应用最为广泛的容器引擎,在思科谷歌等公司的基础设施中大量使用,是基于LXC技术搞的,容器化为微服务提供实施保障,起到应用隔离作用,K8S是容器编排系统,用于容器管理,容器间的负载均衡,谷歌搞的,Docker和K8S都采用Go编写,都是好东西。

  • DevOps:这是个组合词,Dev+Ops,就是开发和运维合体,不像开发和产品,经常刀刃相见,实际上DevOps应该还包括测试,DevOps是一个敏捷思维,是一个沟通文化,也是组织形式,为云原生提供持续交付能力。

  • 持续交付:持续交付是不误时开发,不停机更新,小步快跑,反传统瀑布式开发模型,这要求开发版本和稳定版本并存,其实需要很多流程和工具支撑。

如何云原生?

首先,云原生借了云计算的东风,没有云计算,自然没有云原生,云计算是云原生的基础。

随着虚拟化技术的成熟和分布式框架的普及,在容器技术、可持续交付、编排系统等开源社区的推动下,以及微服务等开发理念的带动下,应用上云已经是不可逆转的趋势。

云计算的3层划分,即基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS)为云原生提供了技术基础和方向指引,真正的云化不仅仅是基础设施和平台的变化,应用也需要做出改变,摈弃传统的土方法,在架构设计、开发方式、部署维护等各个阶段和方面都基于云的特点,重新设计,从而建设全新的云化的应用,即云原生应用。

  • 本地部署的传统应用往往采用c/c++、企业级java编写,而云原生应用则需要用以网络为中心的go、node.js等新兴语言编写。

  • 本地部署的传统应用可能需要停机更新,而云原生应用应该始终是最新的,需要支持频繁变更,持续交付,蓝绿部署。

  • 本地部署的传统应用无法动态扩展,往往需要冗余资源以抵抗流量高峰,而云原生应用利用云的弹性自动伸缩,通过共享降本增效。

  • 本地部署的传统应用对网络资源,比如ip、端口等有依赖,甚至是硬编码,而云原生应用对网络和存储都没有这种限制。

  • 本地部署的传统应用通常人肉部署手工运维,而云原生应用这一切都是自动化的。

  • 本地部署的传统应用通常依赖系统环境,而云原生应用不会硬连接到任何系统环境,而是依赖抽象的基础架构,从而获得良好移植性。

  • 本地部署的传统应用有些是单体(巨石)应用,或者强依赖,而基于微服务架构的云原生应用,纵向划分服务,模块化更合理。

可见,要转向云原生应用需要以新的云原生方法开展工作,云原生包括很多方面:基础架构服务、虚拟化、容器化、容器编排、微服务。幸运的是,开源社区在云原生应用方面做出了大量卓有成效的工作,很多开源的框架和设施可以通过拿来主义直接用,2013年Docker推出并很快成为容器事实标准,随后围绕容器编排的混战中,2017年诞生的k8s很快脱颖而出,而这些技术极大的降低了开发云原生应用的技术门槛。

云原生平台作为微服务的发展方向,已经逐步成为新的开发范式标准。
关键点涵盖,容器、网关、APM、日志、metric、服务发现、CICD、安全、开发框架选型等多方面,对现有的spring cloud+dubbo的开发范式有比较多的变化,对前端参与业务领域开发演化出新的场景。
新范式对业务架构和系统架构,DevOPS等方面架构能力提出了新的要求,测试过程、持续交付等也有新的变化。

落地过程中,须考虑的几个方面:

  • 容器化部署和开发,改变了已有的本地化开发调试的方法,需要有新的开发范式满足;

  • 容器化的集成和交付,须有一套新的持续交付平台支撑;

  • 容器内服务调用,提供了新的服务注册治理、配置管理的机制,新的接入方法和范式,简化了运行时资源,需要有新的微服务治理方法,新的网络流量治理方法,新的服务调用观测方案;

  • 容器化及k8s集群,引入了新的组件,改变了运行时、服务授权、网络路由、文件挂载、环境配置等基础环境,需要有新的系统安全规范;

你可能感兴趣的:(网络,工具,云原生,devops,运维)