本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1. 敏捷开发****
是一种能应对快速变化需求的软件开发能力。其实简单来说,就是把大项目变成小项目,把大时间点变成小时间点
虽然敏捷开发大幅提升了软件开发的效率和版本更新的速度,但是它的效果仅限于开发环节。但是运维那边,依旧是铁板一块,成为了新的瓶颈。
2. DevOps模式****
那么什么是DevOps呢?简称叫:开发运维一体化。
一个软件从零开始到最终交付,大概包括以下几个阶段:规划、编码、构建、测试、发布、部署和维护
有两个词经常会伴随着DevOps出现,那就是CI和CD。CI是Continuous Integration(持续集成),而CD对应多个英文,Continuous Delivery(持续交付)或Continuous Deployment(持续部署)。
从目标来看,DevOps就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠
在DevOps的流程下,运维人员会在项目开发期间就介入到开发过程中,了解开发人员使用的系统架构和技术路线,从而制定适当的运维方案。
而开发人员也会在运维的初期参与到系统部署中,并提供系统部署的优化建议。比如公共配置,自动化打包部署等
DevOps贯穿了软件全生命周期,而不仅限于开发阶段
(1) DevOps辅助工具****
Docker 容器
Kubernetes 管理Docker 容器
Jenkins 打包构建工具
3. IAAS、PAAS、SAAS****
(1) IaaS****
基础设施即服务。有了laaS,企业在开发APP时,只需在公有云平台上注册一个账号,花点钱,配置各种云服务器,各种大小的存储,各种带宽的网络,都配齐,不用操心诸如机房选址、设备采购、实体服务器、存储、网络等问题,只要一个账号,便解决了。
而作为程序员,只需在服务器上安装各类runtime,中间件,数据库等等以及开发这款APP的前端与后台,测试,上线,再迭代,再更新的操作,如果没有IaaS,前期我们的工作还有很多。
(2) PaaS****
平台即服务。PaaS是在IaaS的基础之上,解决了操作系统、数据库、运行时环境runtime、中间件、各种框架的搭建操作问题,有了PaaS,程序员只需要专心的开发自己的APP就行了。
(3) SaaS****
软件即服务。SaaS就是现成的了,根本用不着开发,商家只需要专注在自己的业务上就行了,别的写代码、维护等各种事情都交给SaaS厂商就行了。用户只需要一个续费账号,所有问题都解决了。
4. 云原生****
云原生(CloudNative)是一个组合词,Cloud+Native
Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势
Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、扛脆弱性;
到了2017年,Matt Stine在接受InfoQ采访时又改了口风,将云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质;
而Pivotal最新官网对云原生概括为4个要点:DevOps+持续交付+微服务+容器。