网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
事实证明,在软件的可行性分析方面,事先对软件的进行可行性分析,可以有效的规避软件失败的风险,提高软件的开发的成功率。
在需求方面,软件行业的规范是,需要制定相应的软件规格说明书、软件需求说明书,从而让开发工作有了依据,划清了开发边界,并在一定程度上减少了“需求蔓延”的情况的发生。
在架构设计方面,需制定软件架构说明书,划分了系统之间的界限,约定了系统间的通信接口,并将系统分为多个模块。这样,更容易将任务分解,从而降低系统的复杂性。
今天,制定软件需求的方式越来越多样化了。客户与系统分析师也许只是经过简单的口头讨论,制定了粗略的协议,就安排开发工程师进行原型设计了。开发工程师开发一个微服务,并部署到云容器中,从而可以实现软件的交付。甚至,可以不用编写任何写后台代码,直接使用云服务供应商所提供的 API,使应用快速推向市场。客户在使用完这个应用时,马上就能将自己体验反馈到开发团队,使开发团队能够快速的响应客户的需求变化,并促使软件进行升级。
通过敏捷的方式,最终软件形成了“开发——测试——部署——反馈”的良性循环,软件产品也得到了进化。而这整个过程,都比传统的需求获取的方式将更加的迅捷。
开发方式的巨变
早些年,瀑布模型还是标准的软件开发模型。瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。
瀑布模型优点是严格遵循预先计划的步骤顺序进行,一切按部就班,整个过程比较严谨。同时,瀑布模型强调文档的作用,并要求每个阶段都要仔细验证文档的内容。但是,这种模型的线性过程太理想化,主要存在以下几个方面的问题在:
- 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;
- 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;
- 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果;
- 各个软件生命周期衔接花费时间较长,团队人员交流成本大。
瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的,所以瀑布式方法非常适合需求明确的软件开发。但在如今,时间就是金钱,如何快速抢占市场,是每个互联网企业需要考虑的第一要素。所以,快速迭代、频繁发布的原型开发、敏捷开发方式,被越来越多的互联网企业所采用。甚至,很多传统企业,也在逐步向敏捷的“短平快”的开发方式靠拢。毕竟,谁愿意等待呢?
客户将需求告诉了你,当然是越快希望得到反馈越好,那么,最快的方式莫过于在原有系统的基础上,搭建一个原型提供给客户作为参考。客户拿到原型之后,肯定会反馈他的意见,是好或者坏的方面都会有。这样,开发人员就能根据客户的反馈,来对原型进行快速更改,快速发布新的版本,从而实现了良好的反馈闭环。
今天,Cloud Native 的开发方式正在流行。Cloud Native 是以云架构为优先的应用开发模式。Cloud Native 利于最大化整合现有的云计算所提供的资源,同时也最大化节约了项目启动的成本。
云是大势所趋
目前,越来越多的企业已经在大规模开始拥抱云,在云环境开发应用、部署应用、发布应用。未来,越来越多的开发者也将采用 Cloud Native 来开发应用。
那么,为什么我们需要使用 Cloud Native?
- 云计算的第一个浪潮是关于成本节约和业务敏捷性,尤其是云计算的基础设施更加廉价。随着云计算的不断发展,企业开始采用基础架构即服务(IaaS)和平台即服务(PaaS)服务,并利用它们构建利用云的弹性和可伸缩性的应用程序,同时也能够满足云环境下的容错性。
- 很多企业倾向于使用微服务架构来开发应用。微服务开发快速,职责单一,能够更快速的被客户所采纳。同时,这些应用能够通过快速迭代的方式,得到进化,赢得客户的认可。Cloud Native 可以打通微服务开发、测试、部署、发布的整个流程环节。
- 云供应商为迎合市场,提供了满足各种场景方案的 API,例如用于定位的 Google Maps,用于社交协作的认证平台等。将所有这些 API 与企业业务的特性和功能混合在一起,可以让他们为客户构建独特的方案。所有这些整合都在 API 层面进行。这意味着,不管是移动应用还是传统的桌面应用都能无缝集成。所以,采用 Cloud Native 所开发的应用都且具备极强的可扩展性。
- 软件不可能不出故障。传统的企业级开发方式,需要有专职人员来对企业应用进行监控与维护。而在 Cloud Native 架构下,底层的服务或者是 API 都由将部署到云中,等价于将繁重的运维工作转移给了云平台供应商。这意味着客户应用将得到更加专业的看护,同时,也节省了运维成本。
那么如何来实现 Cloud Native 呢?其实这是一个非常大的话题,比如,作为开发者,你需要了解目前市面上流行的云供应商,了解微服务、SOA,了解 HTTP 和 REST,了解领域驱动设计(DDD),了解CI\CD和TDD,了解两个披萨,了解分布式的常用架构和模式等等。这里每一样都是一个庞大的课题,还好目前市面上已经有了一些资料可供学习,比如《Cloud Native 分布式架构原理与实践》,可以非常全面的指导开发者轻松入门 Cloud Native。
参考引用
- 原文同步至:https://waylau.com/the-way-to-cloud-native/
- Cloud Native 案例大全
- 简述 Microservices(微服务)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**