在进行开发的时候,第一步骤就是想将该应用程序跑起来,然后再进行功能开发;当完成功能开发后,再次将程序运行起来,使用PostMan进行接口调试。完成调试后,就会将代码部署的服务器上,提供给APP访问。
大家有没有想过程序是如何部署上去的呢?接下来介绍一下部署方式的演变。以Java程序为例。
1. 纯手工方式
该部署是一种非常原始的方式,其步骤为:
-
首先在本地使用IDEA-Maven框架打成jar包; -
然后,登陆堡垒机,使用rz命令将jar包上传; -
手动运行shell脚本运行jar包,一般包含如下脚本。
restart.sh run.sh shutdown.sh startup.sh
由上可知,该方式每一步都需要人为去操作,因此非常繁琐、耗时和难以维护。自己有段时间深受其害。随着自动化部署工具发展,比如Jenkins等工具受到开发者的喜爱。
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
由此出现了第二种部署方式。
2. 使用jenkins自动部署工具
如上图是使用jenkins拉取仓库中的代码,并将其打包,然后运行部署的脚本将应用部署到阿里云的ECS服务器上。
采用这种方式极大节省了开发者的时间,提高了服务部署的效率,但是在实际的使用中,也存在很大的问题,用户是有感知的,当新的服务进行部署时,会首先干掉原来的服务来释放掉占用的端口,因此在部署的时候存在一段时间服务不可访问,很可能造成服务不可用,用户体验差。
随着容器技术的发展,一种轻量化、跨平台的虚拟化容器技术被广泛关注;由于轻量级、快速启动、易于移植和可移植性强等特点,能极大地提高开发效率和应用程序的可靠性。
接下来介绍最为主流的一种服务部署方式。
3. 使用k8s实现容器化部署
如图所示,使用Jenkins将代码打包放到镜像仓库中,并且和k8s的Master节点进行交互,创建Pod;Master会对集群里面的资源进行管理,根据镜像的需要进行资源调度,之后将镜像分配到合适工作节点上。
这种发布方式称为金丝雀发布,用户对此无感,它并不是先kill掉原来的服务,而是先创建新的副本,创建成功后,再将流量切到新的Pod上,最后才kill掉原来的Pod。k8s也支持自动重启功能,当服务宕机后,会进行重新部署,极大地解放了开发者的双手。
综上所述,简介了3种部署服务的方式,自己每一种都经历过,深知道到新技术带来安全感,提高了开发的效率。
原文始发于微信公众号(CodeJames):应用程序部署方式的演变
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/148142.html