以服务于中国广大创业者为己任,立志于做最好的创业网站。

标签云创业博客联系我们

导航菜单

软件部署是什么意思 软件实施是做什么的部署

近日,【PConline 资讯】携程网站因程序员登录生产网站误操作,长期无法访问。这些现象反映出我国很多大型网站的应用部署和运营还处于2005年的阶段。本文展示了2015年生产现场运行的现状。

在过去的十年里,构建和发布应用程序的方式发生了巨大的变化。本文比较了2005年和2015年Java/JVM上应用程序部署的差异。

2005 = Multi-App Containers / App Servers / Monolithic Apps

2015 = Microservices / Docker Containers / Containerless Apps

2005年,我们基本上把WAR文件作为项目结果,里面包含了Java Web应用和相关的依赖库包。这个应用程序被部署到一个单独的应用服务器上,称为容器,因为它包含一个或多个应用程序,并且这个应用服务器提供许多基本服务,如HTTP服务器、服务目录或共享库包等。不幸的是,在可伸缩性、部署和资源利用率方面,在一个容器中部署多个应用程序有许多绊脚石。应用服务器将应用与底层系统依赖分离,从而避免了“它在我的机器上工作”(它只能在我的机器上运行)的问题,但是事情并不是很顺利,因为系统依赖和配置是与应用服务器,也就是容器分离的。

在2015年,应用程序可以作为一个独立的单元来部署,应用程序本身包含了一切,因此它可以直接在标准的系统依赖项上运行。在Java世界中,无容器应用程序是一个ZIP文件,包含了基于JVM运行需求的所有依赖库包,大多数开发框架都切换到了这种无容器模式,比如Play Framework、Dropwizard、Spring Boot等等。

系统级更完整和便携的独立单元是Docker和LXC。与过去不同的是,许多应用程序被部署到一个应用程序服务器容器中,一个应用程序被添加到Docker映像中,然后被部署到一个或多个服务器中。

微服务在这里起着重要的作用,因为微服务的部署是可以分离和独立的,而传统的应用服务器在部署其中一个应用时需要重启整个服务器,这也是企业部署速度慢的原因。部署应用程序是一项非常危险的工作,必须提前几个月与许多团队协调。热部署只是一个承诺,在生产环境中从未实现。

微服务激发了独立团队部署自己的应用程序的愿望。微服务可以快速为快速部署和扩展服务的能力做好准备。这些需求可以通过在底层Docker容器中运行无容器应用程序来实现。

2005 = 手工部署

2015 = 持续提交 /持续部署

2005年手动部署,几个单体应用捆绑在一起,通过手动配置上传到生产环境。

2015年是持续提交,持续部署,一天可以部署几百次。

2005 = Persistent Servers / “祈祷它不会当机”

2015 = 不变的基础设施/ Ephemeral Servers

今天,网飞的混沌猴子可以随机关闭服务器,确保我们各自的准备就绪,然后启动,可以瞬间增加和减少应用实例。由于基础设施的不变性,我们不再需要SSH登录主机来解决生产问题(banq注:最近的携程宕机事件是由于程序员误操作登录生产环境导致的,采用微服务Docker不变的基础设施环境可以避免),日志服务导出到外部服务,可以实时使用。

2005 = Ops Team运营团队

2015 = DevOps 开发运营合一

2005年,运营团队拿到WAR文件,负责部署、管理和监控。开发者的手机不需要24小时开机,因为在生产环境下,运营商可以在凌晨3点做一些事情来解决问题,但最大的风险是软件交接造成了很大的缓慢。

如今,开发人员将始终对投入生产的代码负责。像New Relic、VictorOps和Slack这样的服务可以帮助开发人员承担运营责任,DevOps文化正在逐渐传播。