自己几乎经历了部署演进的所有阶段,手动部署、自动部署,部署到服务器、部署到容器。我们也在不断演进并追赶行业前沿的技术/理念。保守估计今年可以基本追赶到行业前沿的最低水平。

工作中经历了部署语言的多样化,部署目标的演化/进化,有最最原始的手动复制,也有还算前沿的 Docker,总结起来,大致经历了以下的阶段, - 单一开发语言部署单一操作系统 - 多开发语言部署单一操作系统 - 多开发部署多操作系统 - 服务器部署 - 容器化部署

单一开发语言部署单一操作系统
当时所使用的开发语言为 http://asp.net的 mvc 单体应用, 这就决定了使用的服务器必须是 Windows 操作系统的服务器(基于 mono 也可以用于 linux)。项目也属于刚刚起步,应用也比较少,需要的服务器也很少。这个时候,几乎所有的发布就是手动编译、手动部署(CV 操作)。这个时候最大的问题就是部署效率很低,但是因为应用很少,所以效率的高低并无明显感知。 多开发语言部署单一操作系统
公司在发展,业务在推进,为了能够让更多的人协同工作,发挥不同语言的的优势,采用了前后端分离的开发方式。后端采用 http://asp.netweb api + 前端 nodejs。nodejs 可以直接部署到 IIS,所以服务器还是采用 windows 操作系统(其实性能也没有网上喷的那么差,性能也挺好的)。发布的任务也越来越重,采用 Jenkins 解决手动发布的问题。在 windows 操作系统上安装了 Jenkins,毕竟 windows 操作系统,操作相对容易一些。 多开发部署多操作系统
服务器部署

随着微软推出了跨平台的 .net core 并且推出正式版本,任何一个做技术的同学都有一种对追求新技术的癖好,我们也开始跃跃欲试,对他虎视眈眈。既然是一门跨平台的语言,如果不用跨平台部署那就失去他的意义了。当然,并不是为了跨平台而跨平台,主要是希望通过跨平台的过渡能更加靠近前沿/流行的技术。容器化部署
Docker 是现在最主流的容器引擎。但是对现有的项目来说,存在一个无法忽视的问题, Windows 操作系统无法对 linux 镜像做操作(pull、build、run 等等),Linux 操作系统也无法对 Windows 镜像做操作。这就导致,开始在 windows 操作系统上安装的 Jenkins 不能满足现在的需求。需要安装多个 Jenkins 才能可以解决,但也势必带来一定运维和沟通成本。最后通过更深入的了解 Jenkins,发现他提供了 Jenkins Master + Node 的方式,Node 可使用不同的操作系统,几乎完美解决了不同操作系统编译和沟通成本的问题。
.net core 确实发展很快,不断的迭代,每个一个新的稳定版本都有很多新功能同时也修复一些 Bug。出了新的版本就代表旧的版本会在将来的某个时间点停止维护,我们只能选择在合适的时机升级版本。升级代码版本,只要不到一秒钟就说完了,开发团队就至少要花几天的时间开发和测试,DevOps 的团队就需要花更长的时间准备环境,以及保证服务器环境不出现兼容性问题。 兼容性问题? 不是已经使用 Docker 了么,每一个 image 都是单独的环境,哪里来的兼容性问题?兼容性问题来自于 Jenkins 的编译上,怎么做到一个语言多个版本编译的问题?我们已经采用了 node 编译的方式,使用更多不同的 node 啊!也可以用环境变量指定使用哪一个版本啊!
如果我现在不是 DevOps 职位是个开发职位的话,也觉着这样完全没问题。对于 DevOps 来说,这个方式的维护成本和沟通成本太高了。这只能最为保底的、最坏的解决方案。Docker 给出了解决方案 multi-stage builds,他几乎完美的解决了这个问题,中间 stage 产生的 image 不会被提交到 repository。不用再担心任何语言有任何版本的变化,也不担心有多少个版本。

最后还有一个问题没解决,由于使用 Docker 编译,中间的 stage 并不会保留,导致每次都要拉取(mvn、nuget、npm)引用的包/代码编译不够快(敏捷)。

希望你留下你对这个问题的思路/方案。

怎么使用starwind部署iscsi_2019 年总结 - 多环境多版本的部署相关推荐

  1. RuoYi-Cloud 部署篇_03(windows环境 mysql版本)

    文章目录 一.软件启动 1. redis 2. nacos 3. myqsl 二.微服务启动 2.1. 认证授权中心启动 2.2. 若依网关启动 2.3. 系统模块启动 2.4. 定时任务模块启动 2 ...

  2. RuoYi-Cloud 部署篇_02(windows环境 mysql版本)

    文章目录 一.模块配置修改 1. ruoyi-gateway-dev.yml 2. ruoyi-auth-dev.yml 3. ruoyi-system-dev.yml 4. ruoyi-gen-de ...

  3. RuoYi-Cloud 部署篇_02(windows环境 Oracle +nginx版本)

    请参考以下博文: RuoYi-Cloud 部署篇_02(windows环境 mysql版本) RuoYi-Cloud 部署篇_02(linux环境 mysql+nginx版本)

  4. RuoYi-Cloud 部署篇_01(windows环境 Oracle+nginx版本)

    请参考以下二篇博文: RuoYi-Cloud 部署篇_01(windows环境 mysql版本) RuoYi-Cloud 部署篇_01(linux环境 oracle+nginx版本

  5. Skype For Business 2015 综合部署系列一:Skype 环境需求及部署规划

    Skype for Business 2015 环境需求 Skype for Business 通信与协作平台整合了源自 Skype 的客户端体验以及 Lync 的企业级安全性.合规性和控制力.与Ly ...

  6. 持续交付流水线的敏捷利器:环境配置管理与应用部署自动化

    作者介绍 陈能技,DBAplus社群原创专家,新炬网络首席DevOps专家.14年开发测试与质量架构经验,擅长DevOps及APM.Docker.持续集成.持续交付在企业中的落地实施.著有<软件 ...

  7. [转] domeOS 环境搭建 自动化构建部署

    [From]http://dockone.io:82/article/4150 系统:CentOS Linux 7 A机子(domeos服务器): 1. gitlab安装(私有仓库): yum -y ...

  8. CentOS+Nginx+Tomcat+Mysql+PHP 环境搭建及系统部署

    ==============安装centos 7.0======================= 选择最小安装,将相关的"调试工具"."兼容性程序库".&qu ...

  9. 最新EOS合约教程,从系统到环境,从创建到部署,从前端到后台,Dapp开发

    最新EOS合约教程,从系统到环境,从创建到部署,从前端到后台,Dapp开发 前言 环境 重点声明: 1,安装虚拟机也好, 双系统也好, 把Linux装了 2, 安装EOSIO开发环境, 使用js4eo ...

最新文章

  1. linux内核开机显示企鹅logo,批改linux内核kernel开机logo(小企鹅)
  2. R和Python谁更好?这次让你「鱼与熊掌」兼得
  3. 修改以服务方式启动tomcat7的堆内存设置
  4. gdb InnoDB Redundant Row Format
  5. gridview 实现自增加列
  6. c语言一位共阳数码管编程,求一个共阳四位数码管滚动显示1234的程序
  7. 解决win10cpu使用率100_如何正确理解 CPU 使用率和平均负载的关系?看完你就知道了...
  8. Android之用java的socket写服务器提示java.net.BindException: Address already in use
  9. php在window磁盘管理,Windows Server 2008R2设置磁盘阵列
  10. superset docker方式安装
  11. import package怎么用
  12. java中程序名称可以用拼音嘛_用Java将文件名从中文转为拼音
  13. markdown这么好用的东西我才知道。。。多么不折腾的我。。。
  14. Symbian手记【二】 —— Symbian对象构造
  15. native内存泄漏分析
  16. 文件另存为GBK编码格式
  17. mysql时间戳转为日期格式_mysql时间戳与日期格式的相互转换
  18. 好奇心是怎么驱动成功的
  19. 调用百度API实现人脸识别
  20. [Android] 该文件包与具有同一名称的现有文件包存在冲突

热门文章

  1. java开发者工具开源版_JArchitect对Java开源贡献者免费
  2. hazelcast_带弹簧的Hazelcast分布式执行
  3. hibernate jpa_JPA / Hibernate:基于版本的乐观并发控制
  4. apache mahout_Apache Mahout:入门
  5. io调度maple调度程序_调度Java应用程序中的主体
  6. 用可编写脚本的终结点遍历REST应用程序
  7. JavaFX自定义控件– Nest Thermostat第3部分
  8. Java中的生成器设计模式
  9. Apache Shiro第3部分–密码学
  10. 通过示例休眠–第2部分(DetachedCriteria)