云原生的理解
在云原生这个概念还没流行起来的时候,公司开发了一款应用,这是「原生应用」,一般来说传统部署应用的方式都是通过购买物理的服务器,然后将需要上线的项目部署到物理服务器中跑起来。而购买物理机器,还要向网络运行商购买公网IP服务,以及在公司找个专门的地方放这些物理机器,作为服务器机房;
有了IP地址,「互联网」上的人都可以使用公司开发的应用;随着使用公司应用的功能越来越完善,代码量也越来越大;导致这个项目的代码越来越难以阅读维护,新加功能也很麻烦;于是公司决定重构代码,并按照功能分成了一个个的「微服务」,以后应用需要新加「功能」的时候,直接添加一个新的微服务就可以了。
慢慢地使用公司应用的用户越来越多,遍布全国各地乃至全世界,然而由于距离太远,网络延迟很大,公司就想在各地都放一个服务器来部署应用平台,但因为不同服务器的「系统环境」存在差异,在原来的环境运行的好好的,但放到另外一台服务器的环境就问题百出。再加上距离远、点数多,不可能一个一个的调试,于是公司使用虚拟技术如Docker把配置好的环境放到一个「容器」里面,并且将容器与服务器本身的操作系统隔离开。各地服务器部署了装好环境的容器后,再安装应用平台,果然问题就少了很多。
然而,由于某处机房管理不善,一场突如其来的大火,将公司的某处机房服务器烧了个粉碎,运行着公司应用的服务器平台也宕机掉线了。
为了避免类似的情况公司决定斥巨资买「大量的服务器」,这样一来,只需要有一个超大的物理机房,组成一个虚拟的云,叫做「云平台」;其他各个地方的不再需要自己的物理机房,那些不想自己买物理服务器配置环境的老板,都来买公司组件的云服务器就可以了;生意小的老板就先买小一点,等生意做大了,再扩大容量,由于是部署在云上,「随开随用」,所以扩容很快,几分钟而已。
一开始全国各地的公司老板都买来咱公司的云服务器,但是好景不长,由于公司的云服务器卖的很贵,隔壁的尼古拉斯赵四不买账,于是自己也斥巨资买了大量服务器搭建了一个云,并对外声明,他这是「私有云」,只能他们公司「自己用」,跟咱公司的公有云划清了界限。
所以理解云原生很简单,可以将云原生拆分为云与原生两部分;云,指的就是云服务器。公司不再需要购买物理设备了,我们想要上线部署自己的项目,只需要向云服务器提供商购买,就能拥有自己的服务器了,而云服务器和传统服务器相比,有很多传统服务器无法比拟的优点。比如弹性、分布式等等。
什么是原生呢?原生就是指土生土长。我们程序在开发设计的时候,在本地自建服务器运行和在云服务器运行,项目的架构设计等方面,都是完全不一样的。而原生,就是指,应用程序从设计之初即考虑到上以后云的环境以及上云可能遇到的问题,原生为云而设计,在云上以最佳姿势运行,要充分利用云上资源的优点,从而使我们的的应用更强大,更迅速、更稳定。
所以,云原生指的并不是某个技术,它更像是一个技术体系。