加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 服务器 > 安全 > 正文

阿里技术专家:持续交付与微服务背后的实践逻辑

发布时间:2021-01-10 18:27:50 所属栏目:安全 来源:网络整理
导读:《阿里技术专家:持续交付与微服务背后的实践逻辑》要点: 本文介绍了阿里技术专家:持续交付与微服务背后的实践逻辑,希望对您有用。如果有疑问,可以联系我们。 崔力强 阿里巴巴技术专家 《微服务设计》中文译者之一;曾在ThoughtWorks任职软件交付和敏捷

答案是自动化加可视化.自动化就是部署一个应用时,应该有脚本能够一键从构建物仓库拉取出正确版本的构建物,然后部署到相应的机器(或者多台机器)上.更重要的是这个自动化脚本不应该藏在一个秘密机器的角落,因为这样的话,就很难告诉团队成员如何去使用它们.所以应该把它可视化,而可视化的最好的平台就是上面提到的那个持续集成流水线,在流水线的后面再加上一个部署线上的环节.

这样,开发人员就能够在一个统一的入口去了解从验证、打包,再到生产环境部署的的全流程.当然我们的持续集成流水线也就顺理成章的变成了持续交付流水线.

在发布方面,还有一个重要的课题就是环境管理.

现在大多的线上部署模式是:申请几台虚拟机,标明每一台的用途,然后开始在各个虚拟机上安装各自需要的基础软件,比如nginx、tomcat等.然后写一个脚本进行各个应用程序的部署(这个脚本最终会集成到持续交付流水线中),注意这里的脚本仅仅负责应用程序的部署,而不包含前面提到的基础软件.如果基础软件需要升级,或者安装新的基础软件,或者需要调整系统参数,这些过程都需要手动进行.这种模式在大多数情况下是没有问题的,但一旦机器出了问题,或者需要扩容时,就需要花费大量时间来重新安装一台和之前那台一模一样的机器,再修改部署脚本把软件部署上去.这个过程不但耗时,而且非常不可靠,因为你没法保证你装出来的这台机器就和之前的那台一模一样,很有可能就给未来埋下了一颗定时炸弹.

解决这个问题的思路就是所谓的“基础设施即代码”.也就是把环境的创建过程使用代码的形式描述出来,并且提交到代码库中.任何的环境变更都必须通过修改代码、提交,然后总是使用代码库中的最新版本重新构建环境.禁止直接在机器上进行任何环境变更,比如装软件,升级软件,该软件配置等.这样所有机器的状态就是可预测的,并且是一致的.

基础设施及代码的相关工具有很多,比如最早流行的chef和puppet,到后来的Ansible.这里我们就拿Ansible为例子讲一讲环境管理和部署自动化.

Ansible是一个Agent Less的通用部署及环境管理工具.也就是说不需要在目标机器上预先安装任何客户端软件,这点与chef有所差别.它依赖的就是简单的ssh命令.你说这跟我直接写shell或者ruby脚本ssh到目标机器,然后执行一些脚本有什么差别呢?

差别当然是有的,它会在以下几个方面给你提供便利:

第一:Inventory管理.Inventory,即你要管理的那些机器.使用Ansible,你可以在一个集中的文件中,以结构化的形式列出所有你需要管理的机器,及如何登陆它们,也就是ssh的用户名和密码 等信息.不同机器的用途不同,比如这三台是web服务器,那两台是搜索引擎等.那么Ansible也提供了对机器进行分组的能力.有了这些分组后,就可以很容易的在命令行中指明我这次要对那些机器做变更.并且Ansible会自动地对所有这些机器做变更,省去了自己做循环的工作.

下面看几个Ansible官方的Inventory例子:

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读