信息自动化

高可用/并发架构带来部署和运维挑战

更多的服务器,更复杂的软件架构,更多的工作节点….. 更多的发布,部署,测试和运维挑战。

问题:高可用和架构安全的关系

持续发布/部署需求

持续部署和持续发布[CI/CD]:

复杂软件架构,往往带来更多的地面分层,更多的软件节点。系统的节点发布就会变得很麻烦。特别微服务 系统得持续发布,持续部署就是为了解决这些问题

持续集成:

强调开发人员提交了新代码之后,立刻进行构建、(单元)测试,根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起

持续交付:

是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试

持续集成

持续集成(Continuous Integration, 持续集成)

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

常用的工具:Hudson和Jenkins

持续部署

持续部署(Continuous Delivery,持续交付)

在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。

Jenkins实现CD: https://blog.csdn.net/xiangnan10/article/details/80332866?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

自动化测试需求

自动化测试需求

复杂得软件架构,如:PAAS,SAAS,IAAS。过多得分层带来自动化部署,往往也带来自动化测试的需求。 对于自动化,用代码来代替手工,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。 Selenium 架构图

自动化运维需求

解决中小形的架构问题: 1.开发人员兼职完成,监控不及时 2.各式各样的脚本,重复性高 3. 人工参与度高,琐碎易犯错

  • ansible    自动化批量管理工具
  • jumpserver  堡垒机,用于开发人员使用服务器资源的权限
  • zabbix    监控工具,负责收集信息,实现监控,报警
  • notify      邮件、软件报警的方式
  • Jenkins +Git   系统的持续集成,项目的回滚操作
  • ELK        数据采集,统计分析

enkins 

基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能

1、持续的软件版本发布/测试项目。

2、监控外部调用执行的工作。

自动化发布架构图

https://www.jianshu.com/p/5f671aca2b5a

自动化发布—Msbuild配置

MSBuild 构建应用程序的平台。您可能不知道它,但是如果您在使用VS做开发,那么一定时时刻刻在使用它。因为是它在背后为你管理生成你的项目文件。当新建一个项目时,注意下项目文件夹中的*.*proj文件就是为MSBuild提供的,这是个文本文件,基于XML格式,里面包含有项目所包含的文件,生成配置,输出配置等信息。

学习网站:https://www.cnblogs.com/linianhui/archive/2012/08/30/2662648.html

Name:选择全局MSBuild配置的名称

MSBuild Build File:填写我们的要构建的项目.csproj文件,所相对工作的路径。如:/Test.csproj Command Line Arguments:MSBuild的参数如:/t:Rebuild /P:Configuration=Release /p:VisualStudioVersion=14.0 /p:DeployOnBuild=True;PublishProfile=Test.pubxml

持续部署

Jenkins攻略: https://www.cnblogs.com/heyuquan/p/jenkins-multi-env-cicd-architecture.html

CICD架构梳理

关键字:Jenkins,MSBuild,PowerShell

自动化部署—Azure Pipelines

实现方式:https://blog.csdn.net/playermaker57/article/details/87901531

自动化部署—Gitlab-Ci 

Gitlab-Ci Runner:https://www.jianshu.com/p/705428ca1410 

自动化测试实现 

压测:jmeter+Maven/Ant+Jenkins+MySQL+testlink/redmine     https://www.cnblogs.com/xixiuling/p/11197291.html

全链路自动化运维体系

扩展—DevOps平台

闭环:计划  --> 编码 --> 构建 --> 测试 --> 版本 --> 部署 --> 运维 --> 监控

四大模块

持续交付环

架构安全—监控预警

云监控:https://help.aliyun.com/document_detail/35171.html?spm=a2c4g.11186623.6.557.2ebe5966nVqiph

架构安全的坑—过度设计

小公司里的大公司病

小公司里的大公司病在互联网洪潮的冲刷下,巨头IT公司积累的经验是普通公司不可比拟的,随之而来的是,互联网公司都喜欢遍地招这些巨头的员工,因为他们希望借助这些科技人才帮助公司茁壮成长,并且也能更好的进行融资和招揽人才。这些人才中,很大一部分是经过层层筛选出来的精英人才,他们掌握了良好的基础,拥有丰富的架构设计理论和实践。但是有一小部分是进去为了镀了一层金出来谋求更好的发展,或者靠实力进去后吃老本几年混不下去出来的人,他们精通各种话术(专业术语),信手拈来的成熟架构体系,大公司的资源丰富,于是养成了对服务器资源无节制使用,美其名曰背靠大山,不怕坐吃山空。常挂嘴边的口头禅:我们xx公司原来也是这么设计的…

反观上面的案例,都是不遵循架构的发展规律。架构是迭代设计出来的,没有通吃的标准架构,也没法一步到位,我们要因地制宜,层层递进,不断优化,最后才是适合自己的架构。尤其对于中小型公司来说,还没发展成型的项目始终存在着变动,我们应该设计应该是可扩展、易管理、易升级的架构,拥抱变化的同时不断优化,才不会因为笨重的包袱妨碍了奔跑的速度。

如有错误,欢迎您指出。
本文版权归作者和博客园共有,欢迎转载,但必须在文章页面给出原文链接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/qingyunye/p/13161587.html