一、本地和云
本地就是你拍了张照片存在手机里,云就是你把这个照片上传到百度网盘。
本地是使用你自己的设备包括手机、电脑等,云是在本地使用供应商提供的远程设备和服务。
二、什么是云计算?
云计算,就是在远程设备上给你提供计算服务 (包括服务器、存储、数据库、网络、软件等),并以简单的方式部署到本地就可以使用该服务。云计算可以理解为云计算应用服务的简称。
比如百度网盘就是典型的云存储服务。百度公司提供服务器,分给很多人存储空间,让你将自己本地的文件上传到上面,也可以通过分享让别人远程下载。部署到本地只需要一个安装包。用户端安全控制主要体现在账户和提取密码。
当然这里并没有推荐百度网盘,毕竟其龟速为人诟病。
云计算实例有很多,如天气预测、影视渲染、资源存储等。
三、公有云、私有云、混合云
公有云,即公有云计算,其余同理。此三种根据安全性和可定制性面向受众不同。
公有云是为广大用户、个人或企业提供的云基础设施。成本低,可扩展性较高,可定制性差、安全性较差、无需维护。
私有云为一个企业或组织提供专用的云环境。成本高,可扩展性高,可定制性高、安全性好、需要维护。
混合云将本地基础架构或私有云与公有云相结合,降低成本,且综合各自优缺点。
你把一些美食照片放到百度网盘,就是在使用公有云。你哪天心血来潮自己搭了个私有云盘,把猛男/女必看的小猫咪放上去,就是在使用私有云。两者混着用就是使用混合云。
四、云原生
云原生是一种技术。这种技术使组织能在新式动态环境 (如公有云、私有云和混合云) 中构建和运行可伸缩的应用程序。Cloud Native Computing Foundation (cncf.io)
云原生采用微服务架构,将应用程序容器化,并贯彻了CI/CD和DevOps文化。
1. 微服务
如果说单一程序是一幅大型图画,那么微服务程序是小型图画组成的一本图册。一幅大型图画你想修改非常困难,甚至需要全部推倒重来。但是图册允许每幅图风格不同,想修改你只需要修改其中一页,想增删也十分简便。虽说各有优劣,但微服务无疑更能满足当代软件的快速迭代。
微服务架构将若干小型独立服务组合形成一个应用程序。这些小型服务互不干扰、功能不同、自主开发、独立部署,封装各自的数据存储技术、依赖项和编程平台,都各自的进程中运行,并使用HTTP/HTTPS、gRPC、WebSocket 或 AMQP 等标准通信协议与其他微服务进行通信。
2. 容器化
容器是指对进程进行隔离,并在隔离内部虚拟运行环境。容器化是指将软件代码和所需的所有组件 (例如库、框架和其他依赖项) 打包在一起,并使其能在容器里运行。
容器内的软件或应用可以在任何环境和任何基础架构上一致地移动和运行,不受不同操作系统的影响。
房车其实有点容器的意思。房车是容器,里面的设施是虚拟的环境,人是在里面运行的程序。你旅游开到山顶上,和平时在停车场里放着吃灰也差不多,虚拟的环境都是一样的,人在里面运行也没受什么影响。
容器化为云原生技术提供了良好的可移植性。
3. CI/CD和DevOps
CI/CD的核心概念是持续集成、持续交付和持续部署。其中CI指持续集成 (Continuous Integration) ,意味着代码不断更新、测试并被合并到相应分支。CD指持续交付 (Continuous Delivery) 和/或持续部署 (Continuous Deployment) ,这些相关概念有时会交叉使用。
持续交付指将代码自动部署到开发和/或测试、预生产环境,持续部署指代码通过评审后自动部署到生产环境。
就像写长篇网络小说,要边写边改,边改边写,这和持续集成类似。持续交付就像存稿,持续部署就是发文。这是一个循环往复的过程。
DevOps (Development、Operations) 更倾向于是一种文化,它将人、流程和技术结合起来,将程序设计、开发、交付、运维环节强关联在一起,从而更好更快地实现业务目标。
DevOps会运用到CI/CD,使开发流程高度自动化。CI/CD工具 (如Jenkins、Gitlab等) 可以自动化构建、测试、验证新代码,经检查后交付、部署应用程序。这种协作和生产方式大大提高了团队协作能力、缩短发布周期,并提高了应用程序质量。
举个经典的例子,微信就运用了云原生技术。发现里面这些看一看,摇一摇它想删就删了,直接取消这些微服务的通信就行。它要增加个扭一扭、舔一舔、泡一泡也不复杂,可以交给不同团队做,做了没问题再加到微服务这个架构上面去就可以了。微信也肯定是容器化的,安卓能用吧,苹果能用吧,Windows、Linux也都能用。持续集成交付和DevOps更不用说了,腾讯团队那肯定奈斯,时不时就能在软件商店看到微信需要更新......
粗糙的说,云原生就是把微服务、容器化、CI/CD和DevOps等技术和概念融合在一起,并命名成为了一项新的技术。
参考:
什么是云计算? (qq.com)
什么是容器化? (redhat.com)
什么是云原生? | Microsoft Learn
Cloud Native Computing Foundation (cncf.io)
什么是 DevOps? DevOps 介绍 | Microsoft Azure
你有没有听过 DevOps ? - 黑米说 (mitkimi.com)
给 DevOps 初学者的入门指南 - 知乎 (zhihu.com)
云原生到底是什么?-阿里云开发者社区 (aliyun.com)
人们常说的公有云是个什么东西?—云基础介绍 - 知乎 (zhihu.com)
科普:什么是公有云、私有云和混合云? - 腾讯云开发者社区-腾讯云 (tencent.com)
Microservice vs Monolithic: The Ultimate Software Architecture Guide (mintymint.net)