应用程序部署方式的演变

1. 引言

在进行开发的时候,第一步骤就是想将该应用程序跑起来,然后再进行功能开发;当完成功能开发后,再次将程序运行起来,使用PostMan进行接口调试。完成调试后,就会将代码部署的服务器上,提供给APP访问。

大家有没有想过程序是如何部署上去的呢?接下来介绍一下部署方式的演变。以Java程序为例。

2. 部署服务的方式

1. 纯手工方式

该部署是一种非常原始的方式,其步骤为:

  • 首先在本地使用IDEA-Maven框架打成jar包;
  • 然后,登陆堡垒机,使用rz命令将jar包上传;
  • 手动运行shell脚本运行jar包,一般包含如下脚本。
restart.sh  run.sh  shutdown.sh  startup.sh

由上可知,该方式每一步都需要人为去操作,因此非常繁琐、耗时和难以维护。自己有段时间深受其害。随着自动化部署工具发展,比如Jenkins等工具受到开发者的喜爱。

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。

由此出现了第二种部署方式。

2. 使用jenkins自动部署工具

应用程序部署方式的演变
Jenkins实现服务自动化部署

如上图是使用jenkins拉取仓库中的代码,并将其打包,然后运行部署的脚本将应用部署到阿里云的ECS服务器上。

采用这种方式极大节省了开发者的时间,提高了服务部署的效率,但是在实际的使用中,也存在很大的问题,用户是有感知的,当新的服务进行部署时,会首先干掉原来的服务来释放掉占用的端口,因此在部署的时候存在一段时间服务不可访问,很可能造成服务不可用,用户体验差。

随着容器技术的发展,一种轻量化、跨平台的虚拟化容器技术被广泛关注;由于轻量级、快速启动、易于移植和可移植性强等特点,能极大地提高开发效率和应用程序的可靠性。

接下来介绍最为主流的一种服务部署方式。

3. 使用k8s实现容器化部署

应用程序部署方式的演变
k8s实现服务部署

如图所示,使用Jenkins将代码打包放到镜像仓库中,并且和k8s的Master节点进行交互,创建Pod;Master会对集群里面的资源进行管理,根据镜像的需要进行资源调度,之后将镜像分配到合适工作节点上。

这种发布方式称为金丝雀发布,用户对此无感,它并不是先kill掉原来的服务,而是先创建新的副本,创建成功后,再将流量切到新的Pod上,最后才kill掉原来的Pod。k8s也支持自动重启功能,当服务宕机后,会进行重新部署,极大地解放了开发者的双手。

3. 小结

综上所述,简介了3种部署服务的方式,自己每一种都经历过,深知道到新技术带来安全感,提高了开发的效率。


原文始发于微信公众号(CodeJames):应用程序部署方式的演变

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/148142.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!