微信小程序制作
当前位置:网站首页 > 软件开发制作 > 西安软件开发面临大规模软件开发挑战与机遇 返回列表

西安软件开发面临大规模软件开发挑战与机遇

作者:admin 时间:2023-10-17 浏览量:96
软件开发和流程制造的类比性非常大,它们都是一个流水线。而软件开发,则与软件技术架构密切相关。比较成熟的软件开发,不管是哪个行业,大规模软件开发的过程都会面临许多许多的挑战。例如,很多客户提出自动化测试的需求,但这就意味着好多运维工具的使用。灰度发布,也是一个重要的概念,尤其在当今基于云技术软件开发的一个重要需求。一个应用开发的完整生命周期过程中,需要进行功能测试和性能测试。在企业开发环境里测试,通常都是功能性测试;进行压力测试包括用户体验测试,那就必须要有一些用户真实的体验。灰度发布则是使得测试工作以分群的、分区域的、分功能的阶梯式的开展,以便于迭代。 工业互联网应用开发,不能把所用功能一口气一下子全部发布出去,否则会对企业冲击会过大。通常在软件开发过程之中,它会分阶段,比如选特定一些客户群,或者特定一些功能,在一些特定的时间点做一些发布。另外一个重要的概念是多云管理。将来工业互联网有可能会在后台会有多个云,包括多个私有云、多个公有云,还有一些数据和应用是传统非云的环境里。在软件开发过程中,这些问题都需要兼顾。许多场合下,各种应用软件以及中间件软件有数百甚至上万个,每一个软件本身在编程过程之中都会有一个机制,这个机制会吐出一些信息来,这个信息就叫做日志(LOG)。如数据库,IBM DB2与Oracel各自有不同的日志信息;就PLM而言,SAP和西门子的日志也不可能一样。要对整个软件的运行状况进行分析,综合了解它的状态的时候,就必须对各个软件的日志要很清楚。当软件数量大到一定的程度时,就不可能做到人工处理了,必须要有西安软件开发公司,对这些日志信息自动进行分析,辅助运维人员的运维工作。
这些都是在西安软件开发生命周期中遇到的诸多挑战。如果将更多的包括人员、组织架构等问题考虑进去,则更为复杂。
软件技术架构的三次大演进
软件技术架构在不断进化。从单体应用到SOA架构,再到当下的微服务架构。早年的软件开发都是单体架构monothetic+UI。这个架构特点是后台有一个Database,前面有一个用户界面UI,把后台的Database的一些数据通过UI以某种形式展现。此时,软件架构层次比较简单,它只有两层。但单体架构的缺点很显然,它的复杂性逐步提高,部署的速度越来越慢,等等。一个单体应用系统,从操作系统,到上面的数据库、运行时环境,再有一些配套的库,再到应用软件,一般情况都得要两三个月才能部署。所以大型单体架构的应用软件的部署已经变得越来越复杂,而且无法按需伸缩。
关于伸缩性,举个例子,拿一个十万人企业为例,电子邮件系统通常都会要十几或几百甚至上千台的X86的机器作为服务器在后面跑,但是夜间这些服务器基本都属于空转状态。如何让这些设备更加有效的运行,能否晚上只留十几台二十台保证一些基本的服务在运行,然后大量的计算能力全部都是休眠状态。等到上班之后,再把资源唤醒,逐步伸展出去。云架构的优势显而易见了。这种需求,单体架构是无法做到的,它必须是用一个更先进的技术来做就是云架构。
大概十年前,新的架构SOA被提出来。SOA架构:数据+用户界面+公共服务,这是面向服务的架构。在数据库和用户界面之间加了一堆公共的服务,把这种公共的服务用企业数据总线串起来。在制造业中,OPC UA标准体系,可把所有工业产品、工业装备连接进来。在软件体系架构里面(即数字世界里)它就是一个服务,开放出来的接口有多少个就可以有多少个服务。所以在软件世界里,无论一个设备还是一个软件服务,对用户而言,没有区别。SOA架构主要特点就是松耦合了服务的提供者和服务的消费者之间的关联,应用架构的灵活性大大提升了。但是SOA架构没有考虑服务大小。小的只有几兆甚至几百K,大的有几个G的,甚至100G以上,也都叫做服务。前面单体架构里面谈到所谓“伸缩”问题,又出现了。
架构又需要改进,这就是今天提到的微服务架构。
微服务,是一种全新的服务架构。它是软件开发的一种方法,这里面会涉及到很多的概念。几年前互联网公司提出一个叫SQUAD概念,它是伴随着微服务架构的软件开发的一种人员组织形式。通俗地讲,Squad就是赋予一定职能的小分队,具有一定的独立性。这个小组其很像军队的一个班,可以作为基本单位去执行任务,而且squad里也有管理制度。这个概念其实到了软件里面也是一样,通常会建议10-12个人组成一个Squad,以一定的相对独立性来开发,然后相互之间再进行编排、组合。
瀑布式软件开发是传统的开发方式。举个例子,供应商管理系统SRM,应该长成什么样子,需要做大量的调研,形成规格书。然后封存起来不能再改了,开发团队按照这个规格书再进行软件工程。软件工程之后,再需要几个月时间进行测试,测试完了进行发布,发布完了之后,这个版本就要维持一年,甚至两年,甚至三年。一个版本通常它会有一个周期,有的是五年,有的六年,但一般不会超过8年。这就是一个典型的叫瀑布式的,它就像水似的从上往下倒,是不可逆的,只能顺序推进。
这种方式开发出来的软件推向市场,不太容易适应快速变化。后来出现了一个迭代式开发方式,也就是敏捷开发,整个研发周期发生变化,开发的组织形式也发生变化。微服务开发正是从敏捷开发的方式演化而来。这里,现在又出了一个新的词,叫CQRS(Command Query Responsibilities Segaration)。中心思想是,所有的功能,分成两类:一类是发号施令的Command型,这是一个大类;一类是Query查询型的,到后台的分布式数据里去把所需要的信息查找出来。
微服务开发要求软件架构设计时,要满足CQRS这样的设计原则。每个微服务都可以独立运行,可以独立编排。就像导演一样,每个演员演好自己的角色,导演把这些角色编排好,演绎出一个精彩的故事。一个系统就像是一个剧,有众多的微服务组成,提供更加完整的服务能力。这个系统可以就是我们原来讲到的一个应用软件,一个具有丰富功能应用软件。
一个功能点可能就是一个微服务,但也可能需要调用几个微服务来组合完成。这就是微服务的理念。
在微服务架构中,一个微服务的大小虽然没有一个固定的标准值,,但一般在几十兆到100M以内。分拆得太小了,微服务的治理的复杂度加大;太大了,违背微服务的对资源占用的灵活伸缩初衷,也不便于问题隔离。微服务的部署,往往就是一个可执行程序(image)部署在那里。启动时,该微服务会调入容器(一个运行环境)中,当然就会占用计算资源,如存储、网络和通讯、CPU资源。使用完毕后,这些资源会被释放回去。那么容器又是什么?技术上讲,是给容器里的程序运行时涉及到的指令的解释器。拿一个共享办公室来类比。共享办公室提供一个办公环境,所有的办公室既不能一概都是100平方米;或者一概都是1000平方米,需要有不同大小的房间以满足不同体量的公司进驻办公。但每间办公室必须有一些基础,如水、电、气或者WiFi,等等。一个公司进来,拎包入住,需要的服务一应俱全。用多长一段时间付多少钱,用完了可以随时走人,办公空间回收。这个环境,就可以类比成微服务所需要的容器。
首先是程序员编写程序。
其次是源代码的管理。在一些成熟的软件开发组织里,对源码的管理是非常的严格的。
下一步是build,对做OT的人可能对这个术语有点陌生,对IT人员,这个术语就耳熟能详了,就是把软件的源代码要把它编成一个可执行代码,如exe。
然后打包这个过程叫pagage。除了源代码编译之后的软件本身,还包括它的一些依赖程序。单体架构的应用是一定需要打一个很大的包;而在云里,打包就小很多。
打完包之后再去部署deploy,部署完了就开始测试.
测试会有功能测试和性能测试。通常功能测试的难度会相对小一点,在测试环境里面测试;但是要进行性能测试的时候,必须有大量实际数据,仿真的、模拟的数据都没有不能最终说明问题,必须要有实际数据,压力测试才更加令人信服。还有用户体验也需要目标用户的参与,体验好坏才更加现实。 测试完了之后开始进行灰度发布。灰度发布之后发现问题,再修改程序,进入迭代过程,迭代完了之后才会进行大规模、全面的部署。那就是上生产线了。
这是一个完整的生命周期。
那么,这个过程之中,人员怎么配备,比如说有架构师,有测试工程师,产品经理或者叫Offering Manager,等等。互联网公司OM的身价一般都非常高。因为OM的责任会比过去的项目经理责任要大。后续还有运维工作。软件系统投入使用以后,怎么进行管理?我们借用一个概念OSS,叫Operation & support services。
整个管道pipeline,形成一个完整的概念DevOps。
目前,很多企业听上去都有DevOps,但成熟度参差不齐。运维体系、工具、流程有些缺乏。很多大型企业,IT人员规模达到好几千人,但运维体系不够清晰,甚至干脆就缺乏体系。文化和组织配套完全跟不上,光有几个工具,仅此而已。进一步探究,就是持续性的概念。也就是Continuous DevOps。持续性,包括持续集成、持续部署、持续测试等。这是所有云平台都需要具备的能力。显然Devops,已经超越了开发流程。它是工具集,但它更是一种组织,是一种软件文化。这是工业互联网的开发过程中,技术之外容易避不开的大坑。
联系方式:18066528545   029-89298792

阅读过此文章的读者,还阅读过下面的文章

  • 小程序与原生APP那个好?下面我们就来一起了解一下小程序与原生APP那个好。以下是所整理的小程序与原生App的内容,希望对你有所帮助。

    小程序的优点:

    基于微信平台开发,享受微信自带的流量,这个优点最大
    无需安装,只要打开微信就能用,不占手机内存,体验好
    开发周期段,一般最多一个月就可以上线完成
    开发所需的资金少,所需资金是开发原生APP的一半不到
    小程序名称是唯一的,在微信的搜索里权重很高
    容易上手,只要之前有HTML+CSS+JS基础知识,写小程序基本没有大问题
    基本不需要考虑兼容性问题,只要微信可以正常运行的机器,就可以运行小程序
    发布,审核高效,基本上午发布审核,下午就审核通过,升级简单,支持灰度发布
    开发文档完善,社区活跃
    支持插件式开发,一些基本功能可以开发成插件,供多个小程序使用
    小程序的缺点:
    局限性很强(比如页面大小不能超过1M,不能打开超过5个层级的页面,样式单一,小程序的部分组件已经是成型的- 了,样式不能修改,比如幻灯片,导航)只能依赖于微信依托与微信,无法开发后台管理功能
    不利于推广,推广面窄,不能分享朋友圈,只能分享给朋友,附近小程序推广,其中附加小程序也收到微信限制
    后台调试麻烦,因为API接口必须https请求,且公网地址,也就是说后台代码必须发布到远程服务器上;当然我们可以修改host进行dns映射把远程服务器转到本地,或者开启tomcat远程调试;不管怎么说终归调试比较麻烦
    前台测试有诸多坑,最头疼莫过于模拟器与真机显示不一致
    js引用只能使用绝对路径,不能操作DOM
    原生App优点:
    原生的相应速度快
    对于有无网络操作时,譬如离线操作基本选用原生开发
    需要调用系统硬件的功能(摄像头,拨号,短信蓝牙…)
    在无网络或者弱网情况下体验好
    原生App缺点:
    开发周期长,开发成本高,需要下载
  • 小程序和Vue写法的区别?下面我们就来一起了解一下小程序和Vue写法的区别。以下是我所整理的小程序和Vue写法的区别,希望对你有所帮助。

    遍历的时候:

    • 小程序wx:for=“list”,
    • 而Vue是v-for=“item in list”

    调用data模型(赋值)的时候:

    • 小程序:this.data.item // 调用,

    • 小程序:this.setDate({item:1})//赋值

    • Vue:this.item //调用,

    • Vue:this.item=1 //赋值

  • 小程序调用后台接口遇到那些问题?下面我们就来一起了解一下小程序调用后台接口遇到那些问题。以下是所整理的小程序调用后台接口遇到的问题,希望对你有所帮助。

    数据的大小限制,超过范围会直接导致整个小程序崩溃,除非重启小程序

    小程序不可以直接渲染文章内容这类型的html文本,显示需要借助插件
    注:插件渲染会导致页面加载变慢,建议在后台对文章内容的html进行过滤,后台直接处理批量替换p标签div标签为view标签,然后其他的标签让插件来做
  • 分析微信小程序的优劣势?下面我们就来一起简单的了解一下微信小程序的优劣势。下面是所整理的微信小程序的优劣势,希望对你有所帮助。

    优势:

    容易上手,基础组件库比较全,基本不需要考虑兼容问题
    开发文档比较完善,开发社区比较活跃,支持插件式开发
    良好的用户体验,无需下载,通过搜索和扫一扫就可以打开,打开速度快,安卓上可以添加到桌面,与原生APP差不多
    开发成本比APP要低
    为用户提供良好的保障(小程序发布,严格是审查流程)

    劣势:
    限制较多,页面大小不能超过1M,不能打开超过5个层级的页面
    样式单一,部分组件已经是成型的,样式不可修改,例如:幻灯片,导航
    推广面窄,不能分享朋友圈,只能通过分享给朋友,附加小程序推广
    依托与微信,无法开发后台管理功能
    后台调试麻烦,因为api接口必须https请求且公网地址
    真机测试,个别安卓和苹果表现迥异,例如安卓的定位功能加载很慢

  • 简单描述下微信小程序的 相关文件类型。下面我们就来一起了解一下微信小程序的 相关文件类型。以下是所整理的微信小程序的 相关文件类型,希望对你有所帮助。

    wxml 模板文件,是框架设计的一套标签预言,结合基础组件,事件系统,可以构建出页面的结构

    wxss 样式文件,是一套样式语言,用于描述WXML的组件样式
    js脚本逻辑文件。逻辑处理网络请求
    json配置文件,小程序设置,如页面注册,页面标题及tabBar
    app.json 整个小程序的全局配置,包括:
    pages:\[所有页面路径]
    网络设置(网络超时事件)
    页面表现(页面注册)
    window:(背景色,导航样式,默认标题)
    底部tab等
    app.js 监听并处理小程序的生命周期函数,声明全局变量等
    app.wxss 全局配置的样式文件

  • 请谈谈原生开发小程序,wepy,mpvue的对比?下面我们就来一起了解一下原生开发小程序,wepy,mpvue的对比。个人认为,如果是新项目,且没有旧的 h5 项目迁移,则考虑用小程序原生开发,好处是相比于第三方框架,坑少。

    而如果有 老的 h5 项目是 vue 开发 或者 也有 h5 项目也需要小程序开发,则比较适合 wepy 或者 mpvue 来做迁移或者开发,近期看wepy几乎不更新了,所以推荐美团的mpvue。
    而如果如果团队前端强大,自己做一套框架也没问题。

029-86195145 180 6652 8545 西安嘉瑞德网络科技公司
工作时间:周一到周六 8:30-18:30
邮箱:2528823962@qq.com
QQ:2528823962
地址:陕西省西安市未央元朔路明丰伯马都A座10820室
  • 微信小程序制作微信二维码
    扫码咨询
Copyright © 2015 西安嘉瑞德网络科技有限公司 陕ICP备17015187号-1