微服务 学习笔记 - DevOps
1、DevOps
/带无阿泼斯/
DevOps维基百科定义 DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
devops平台搭建工具
项目管理(PM):jira。运营可以上去提问题,可以看到各个问题的完整的工作流,待解决未解决等;
代码管理:gitlab。jenkins或者K8S都可以集成gitlab,进行代码管理,上线,回滚等;
持续集成CI(Continuous Integration):gitlab ci。开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
持续交付CD(Continuous Delivery):gitlab cd。完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。
镜像仓库:VMware Harbor,私服nexus。
容器:Docker。
编排:K8S。
服务治理:Consul。
脚本语言:Python。
日志管理:Cat+Sentry,还有种常用的是ELK。
系统监控:Prometheus。
负载均衡:Nginx。
网关:Kong,zuul。
链路追踪:Zipkin。
产品和UI图:蓝湖。
公司内部文档:Confluence。
报警:推送到工作群。
类型 | 名称 |
持续集成/持续交付 | Jenkins |
源代码管理 | Gitlab |
云平台 | 阿里云 |
软件包管理器 | 私有Nuget |
代码检查 | Reshaper |
容器化 | Docker |
分布式链路跟踪 | SkyWalking |
日志系统 | ES+Filebeat+kibana |
系统监控 | Prometheus |
对于一般的团队,建议优先从Gitlab+Jenkins搭建好完成CI/CD,其次把日志系统给完善起来,这两者完成得越早,给团队带来的收益就越高,后续才会有更多的时间来完善整套技术体系,这是一个良性的循环。
2、康威定律
用通俗的说法就是:组织形式等同系统设计,核心观点如下:
- 第一定律:Communication dictates design(组织沟通方式会通过系统设计表达出来)
- 第二定律:There is never enough time to do something right, but there is always enough time to do it over(时间再多一件事情也不可能做的完美,但总有时间做完一件事情)
- 第三定律:There is a homomorphism from the linear graph of a system to the linear graph of its design organization(线型系统和线型组织架构间有潜在的异质同态特性)
- 第四定律: The structures of large systems tend to disintegrate during development, qualitatively more so than with small systems(大的系统组织总是比小系统更倾向于分解)
Reference:
https://www.zhihu.com/question/58702398/answer/1755254160
https://blog.csdn.net/en_joker/article/details/88306553