系统的三个变革对应用开发的深远影响

操作系统是硬件之上最基础、最重要的一层,可以说,它长啥样,应用开发就长啥样。而操作系统每一次的变革,也就是下一波应用开发的热潮。因此,了解操作系统的发展,就能掌握应用开发的原理和技术发展规律。根据操作系统部署运行的基础,操作系统的发展经历了传统物理机、虚拟机和集装箱(也叫容器)三个时代,而现在人人皆知的云及其云应用就是集装箱的功劳。

操作系统发展的三个时代

一、传统物理主机时代:

1、应用部署:独占物理服务器

在传统时代,操作系统只能运行在物理服务器上。而且,每个应用都运行在物理主机上,当多个应用运行在同一台物理服务器上时,如果某一个应用程序某个时刻消耗资源较大时,则其他应用程序会受到影响导致无法运行或者运行很慢。在企业生产环境下,为了解决这个问题,人们只能用物理机将应用隔离,用不同的物理服务器安装部署不同的应用程序。这导致了服务器资源无法充分使用,提高了企业的运维成本。

2、硬件资源:按级分配

你的是你的,我的是我的。IT设备部门实打实的给每人发放电脑,电脑配置如何往往与你的级别有关。问题是你领导的电脑配置比你高好几个档位,他可能只不过用用PPT和浏览器,他的CPU一直处于闲置状态。而你打开数据库、开发环境、各种业务应用等等,CPU一直处于满格状态,时不时卡个机。为了提高你的工作效率,企业只能花钱提升你的电脑配置。

3、应用开发:不会修电脑的网管不是好程序员。

没有两台软件环境完全一样的电脑,在这个时代,开发人员最苦恼的莫过于在自己电脑上运行正常的程序,到A电脑不行,好不容易解决了A的问题,到B电脑还不行,当A、B都解决了到C还是不行。为了解决问题,开发人员把大量的尽力耗费在安装系统、打补丁,排查环境问题上。

二、虚拟机时代

1、应用部署:用虚拟机共享物理服务器

为了解决传统主机时代的问题,人们引入了虚拟机。

虚拟机,顾名思义是一台虚拟的机器,但是每台虚拟机都是一个可以运行的完整机器,它有自己的操作系统和虚拟化的硬件。多个虚拟机可以运行在同一台物理主机上,每个虚拟机运行自己的应用程序,虚拟机之间相互隔离互不干扰。因此,虚拟机解决了传统时代应用程序直接运行物理服务器上相互干扰的问题,同时也能充分利用物理服务器上的资源,避免闲置资源浪费。

2、硬件资源:按需分配

你用就是你的,我用就是我的。IT部门给你分配的是虚拟机,换句话说,IT部门给你分配的是资源而不是实打实的电脑,实打实的电脑都由IT部统一调度。在虚拟化环境下,刚开始你的领导名义上拿到了一台高配电脑,而你是低配,但是过不了多久,你经常把你名下的资源用到满格状态,这时候你申请提升配置,IT部一看服务器上有很多空闲资源就立即将你升一档,而这些资源其实是你的领导空闲下来的。在虚拟机下,每个人都没有固定的实体电脑,但你可以从任意一台物理电脑上访问你的虚拟电脑,进入你的虚拟电脑后跟传统实体电脑一样安装运行各种程序,而且其他人无法访问你虚拟电脑上的信息。这是怎么做到的呢?就是利用这项新的虚拟机技术,多台虚拟机可以运行在同一台物理主机上。

3、应用开发:无污染虚拟机部署排查

虚拟机的出现帮了开发人员的大忙,开人员可以将程序部署到一台虚拟机上进行测试和运行,避免了与其他应用程序相互干扰,一定程度上降低了排查程序问题的难度。当测试或生产环境出现和开发环境不一致的问题时,快速部署一个无污染的虚拟机环境进行对比是一个不错的选择。

三、集装箱时代

1、应用部署:微服务跨多服务器

集装箱是一个轻量级的虚拟机,类似虚拟机,但是为了更好的共享操作系统,它有更为宽松的隔离属性。像虚拟机一样,他有自己的文件系统、CPU、内存等,由于它与底层框架解耦,因此可以跨云和操作系统移植部署。而且集装箱可以更好地支持微服务,把应用程序切分成更小的、独立的部分动态部署和管理,而不是将这个应用部署运行在一台大型机器上,从而让应用程序性能更可控,让计算机资源利用更充分。

2、硬件资源按需分配

集装箱在硬件资源分配上与虚拟机时代一样,但是它通过对应用程序的集装箱化管理提升了人们对虚拟机的使用体验。

3、应用开发:服务微化、集装箱部署

集装箱在当今如此流行,与它对开发效率的提升密不可分。集装箱可以将开发的应用程序连同开发运行环境,包括依赖库和组建等,打包成一个集装箱发布并在测试和生产环境上直接部署,从而彻底解决了运行环境的差异问题。这意味着将一直困扰开发人员几十年的开发、测试和生产环境一致性问题从此埋入土中。相比庞大而沉重的虚拟机部署,集装箱的创建和部署都更加敏捷、轻松。在持续开发、集成和部署上,由于集装箱镜像的一致性,可以快速、高频的构建和部署并轻松的回滚。

总结

传统时代:应用运行高度依赖物理机。

虚拟机时代:操作系统与物理机松绑成虚拟机。

集装箱:虚拟机轻量化,进一步隔离底层框架。

技术发展:“解耦”是软件开发永恒不变的主题,无论是大应用还是小开发,解耦都是软件问题的良药。

发布了34 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/CatherineJChen/article/details/104214053