Followme Devops实践之路

引言

天下武功,唯快不破

想要提高开发团队效率,势必要有一套完整而成熟的开发流程方案,除了sprint迭代开发模式之外,还有近几年流行的devops流程,都是可以大幅度提高开发效率的工具. 我们团队也不断探索、实践,最终形成了现有的一套体系,从最初的手动发布到现有的自动化,从起始的繁琐易乱到当下的简洁明了。我们希望将我们曾经踏过的脚印与大家一起分享,为各位展示一条 我们的devops 的实践之路,同时也希望能为各位避免走入同样的弯路提供些许帮助。

 

背景

我们是一个 .net(core) / go / nodejs 的多语言混合式开发团队,致力于微服务架构。项目初期基于 .net framework, 开始并没有准备做 devops,基于Windows的 gRPC 服务ASP.NET 做持续部署还是比较麻烦(不管是停止远程服务/更新二进制包/docker化流程都太重)。当我们全面拥抱.net core 2.0之后,其原生跨平台的特性促成了我们的 CI/CD (continue integration/continue deployment) 之路。

 

发展历程


从0,到devops我们也经历过好几个阶段,每个阶段所存在的问题, 大家也可以对号入座的看看


1 原始阶段/纯人工管控

  • 大家司空见惯的在开发机build,然后copy到服务器上,手工解压更新,启动服务!

  • 这种方式效率太低, 质量也不敢保证, 没有流程章法

2 Ansible + git

  • 采用git来管理二进制发布包 ,可以有效的进行发布的粗略diff/特别是配置文件

  • 采用ansible来管理服务器,大大减低了人肉成本

  • 运维大量的重复性操作

3. devops 

Devops

640?wx_fmt=jpeg

为了实现开发自运维, 我们采用Jenkins +docker + portainer 三剑客, 来解决开发/运维/服务器/各自的问题

  1. Docker

    1. 环境依赖, 例如 .net core runtime版本/ OS 版本, 再也不用让运维提前准备环境了

    2. 资源限制, 例如有些服务存在内存泄漏/CPU问题, docker可以限制他的最大使用率, 确保同台服务器上其他docker 服务可以正常使用

  2. Portainer

    1. Docker management UI

    2. 统一管理docker服务

  3. Jenkins

    1. Build source code

    2. Build docker image ,ship

    3. Auto deploy

架构如下 https://github.com/FollowmeTech/jenkins-cicd

640?wx_fmt=png

功能

  • base on Jenkins

  • base on docker register hub

  • base on portainer management

依赖

  • docker registry [harbor]

  • portainer (docker management)

  • git-server

  • docker /docker-compose

体验一下

为了方便大家快熟感受, 我搭建了一个play环境

大家可以向 https://github.com/FollowmeTech/jenkins-cicd-practise 提交代码

再登陆 https://ci.rileme.club ,选择相应的分支进行build发布 (play/123456)

项目发布完成, 快熟预览效果 http://demo.rileme.club


部署使用


广告时间

Hi, 是的,我们在招聘 , 详情如下

https://github.com/FollowmeTech/hire/blob/master/dotnet.md

你是想一辈子卖糖水, 还是再折腾折腾

Think about it

相关文章:

  • 朴素的DevOps价值观

  • DevOps 实践:千里之行

  • 容器化的 DevOps 工作流

  • 大规模开发团队如何实现DevOps转型? 来自微软全球开发平台工程团队的实践经验

  • DevOps文档中心的技术实践演进

原文地址:https://www.cnblogs.com/shanyou/p/9690528.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【每日一题】6月30日 Growth

来源: 时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 1048576K,其他语言2097152K 64bit IO Format: %lld文章目录题目描述题解:代码:题目描述 弱弱有两个属性a和b,这两个属性初始的时…

P5445-[APIO2019]路灯【set,树状数组套线段树】

正题 题目链接:https://www.luogu.com.cn/problem/P5445 题目大意 n1n1n1个点,iii和i1i1i1个点之间有一条边,qqq个操作 断开/连接第xxx和x1x1x1之间的边询问目前为止aaa和bbb点在多少个操作后是联通的(包括开始前) 解题思路 粗…

【dfs】【hash】有趣的英语角(2015特长生 T2/luogu 1019)

正题 luogu 1019 题目大意 给你若干个词语,让你把他们连起来(重复段叠在一起),每个词语最多用两次,问你该串最长是多少 解题思路 dfs枚举一个单词后面接哪个单词,然后枚举重叠长度,再用hash判…

基环树小记

概念 基环树就是有n个点n条边的图(比树多出现一个环)。 特殊形态的基环树 无向树(N点N边无向图) 外向树(每个点只有一条入边) 内向树(每个点只有一条出边) 以上三种树有十分优秀的性质,就是可以直接将环作为根。就可以对每个环的子树进行单…

【每日一题】7月1日题目精讲 借教室

来源:牛客网 时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 131072K,其他语言262144K 64bit IO Format: %lld文章目录题目描述题解:差分:二分:整合代码:题目描述 在大学期…

利用BenchmarkDotNet 测试 .Net Core API 同步和异步方法性能

事由:这两天mentor给我布置了个任务让我用BenchmarkDotNet工具去测试一下同一个API 用同步和异步方法写性能上有什么差别。顺带提一下:啊啊啊啊 等我仔细看文档的时候文档 发现它让我用Release的模式去运行benchmark。 emmm...其实我之前一直在用Debug模…

CF280C-Game on Tree【数学期望】

正题 题目链接:https://www.luogu.com.cn/problem/CF280C 题目大意 nnn个点的一棵树,每次选择一个没有染色的点把它和它的子树染黑,求期望全部染黑的步数。 解题思路 可以理解为我们按照一个顺序轮流染色,如果一个点有祖先节点在它前面就不…

糊涂的教授(2015特长生 T3)

题目大意 平面上有n个矩阵,和n个数字,对于每个矩阵选择矩阵内的一个数字作为编号,让你给出唯一方案,使每个数字只作为一个矩阵的编号(多种方案即为不可行的) 解题思路 因为多种方案是不可行的&#xff0c…

MATLAB线性规划相关函数用法

一.线性规划的Matlab标准形式及软件求解 1. MATLAB中规定线性规划的标准形式为 其中c和 x为n 维列向量, A、 Aeq 为适当维数的矩阵,b 、beq为适当维数的列向量。 (Aeq 对应约束条件中等式约束的系数矩阵,A为约不等式约束的系数矩…

势能线段树(均摊分析)

势能线段树 线段树能够通过打懒标记实现区间修改的条件有两个: 能够快速处理懒标记对区间询问结果的影响能够快速实现懒标记的合并 但有的区间修改不满足上面两个条件(如区间整除/开方/取模等)。 但某些修改存在一些奇妙的性质&#xff0c…

.NET Core 出得云端入得本地,微软让跨平台应用勇敢表达

地铁公交的上班路上、咖啡馆里等人的时候,这些碎片化时间都是现代人学习和充电的机会,根据第42次CNNIC中国互联网发展状况统计报告,截至2018年6月,网络文学用户规模已达4.06亿,占网民总体50.6%;手机网络文学…

【每日一题】7月3日精讲—毒瘤xor

【每日一题】7月3日精讲—毒瘤xor 时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 32768K,其他语言65536K Special Judge, 64bit IO Format: %lld文章目录题目描述题解:代码:题目描述 输入描述: 第一行一个整…

【DP】集合问题(2015特长生 T4/luogu 1466)

正题 luogu 1466 题目大意 给你1~n的一个集合,问你有多少种方案把该集合分成两个集合,且两集合的数字之和相等 解题思路 设fi,jf_{i,j}fi,j​为放好i个数且集合1的和比集合2的和大j的方案书 那么对于第i个放到两个集合中,分别从fi−1,j−…

P5212-SubString【LCT,SAM】

正题 题目链接:https://www.luogu.com.cn/problem/P5212 题目大意 开始一个字符串SSS,有nnn次操作 在SSS末尾加入一个字符串询问一个串在SSS中出现了多少次 强制在线 解题思路 强制在线的话,只有SAM\text{SAM}SAM能够支持动态插字符了,但…

了解改良圈算法

一.相关知识——Hamilton圈 什么是Hamilton圈? 哈密顿图(哈密尔顿图)(英语:Hamiltonian path,或Traceable path)是一个无向图,由天文学家哈密顿提出,由指定的起点前往指…

ASP.NET Core Middleware

中间件(Middleware)是ASP.NET Core中的一个重要特性。所谓中间件就是嵌入到应用管道中用于处理请求和响应的一段代码。ASP.NET Core Middleware可以分为两种类型:Conventional MiddlewareIMiddlewareConventional Middleware这种中间件没有实现特定的接口或者继承特…

NOIP复健计划——动态规划

树形DP [POI2011] DYN-Dynamite 二分KKK check(mid): 能否选出mmm个点,使得 ∀i为关键点,Minjisselected{dis(i,j)}≤mid\forall i为关键点,Min_{j\ is\ selected}\{dis(i,j)\}\leq mid∀i为关键点,Minj is selecte…

【每日一题】7月6日精讲—平衡二叉树

来源:牛客网: 文章目录题目描述题解:代码:时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 1048576K,其他语言2097152K 64bit IO Format: %lld题目描述 平衡二叉树,顾名思义就…

【DP】晨练计划(ybtoj)

正题 ybtoj 题目大意 给你n个时间点 在第i个时间点跑步有aia_iai​点贡献,但会加一点疲惫值,疲惫值不能超过m 当前疲惫值为x,那么你可以花x点时间来清空疲惫值,当然也可以啥都不干 问你第n个时间后疲惫值为0的最大贡献 解题思…

MATLAB灰色预测

一.灰色预测 1.灰色系统下的灰色预测 <1>什么是灰色系统&#xff1f; 所谓的灰色系统其实就是夹杂在白色系统和黑色系统之中的一种系统&#xff0c;而白色系统就是全部信息已知的系统&#xff0c;黑色系统就是全部信息未知的系统。所以&#xff0c;夹在这两种系统中间…