• 信息自动化


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

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

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

    持续发布/部署需求

    持续部署和持续发布[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公司原来也是这么设计的…

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

    如有错误,欢迎您指出。
    本文版权归作者和博客园共有,欢迎转载,但必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    Spark Streaming 中管理 Kafka Offsets 的几种方式
    Kafka 在华泰证券的探索与实践
    Kafka 客户端是如何找到 leader 分区的
    关于Java中如何判断字符串是否为json格式
    关于JAVA递归遍历树级菜单结构
    关于JDK8 三种时间获取方法以及日期加减
    关于在Java里面,时间的一些业务
    关于Java的IO通信
    关于git同时提交到2个仓库gitee github
    关于JVM——工具(二)
  • 原文地址:https://www.cnblogs.com/qingyunye/p/13161587.html
Copyright © 2020-2023  润新知