DevOps敏捷开发和云计算
Posted JavaEE企业级开发
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DevOps敏捷开发和云计算相关的知识,希望对你有一定的参考价值。
在开发和创新领域中,DevOps、敏捷开发以及云计算终于突破了传统IT开发模式阶段逐步成为主流。
DevOps、云计算、敏捷开发正在各个领域的企业中证明价值:支持灵活定价和快速提供服务;降低了管理开发及运行时基础设施的总成本;无需自行开发的企业,只要有基础设施即可采用云计算和DevOps实践。
DevOps、云计算、敏捷开发是重塑整个IT行业的三剑客,若云计算是一种乐器,DevOps就是演奏家。它们一起帮助行业转移重心,无需再担心宕机、交付时间和快速部署之类的问题。
随着数字化的快速发展,整个世界都在全方位转型,过去的五年中,IT界深刻受到了技术的深刻影响,这一切可能要归功于DevOps。
DevOps出现前
2013年,敏捷开发受到很多开发者的青睐,这让开发和其他合作团队在部署上线方面出现瓶颈,从而产生了一些矛盾。
开发急于交付应用,运维难以同样的速度维护业务流程,两个团队都被和整体业务无关的自身需求束缚住。
DevOps出现后
在此背景下,DevOps应运而生,强调通过敏捷方法使软件交付和部署自动化,让两个团队一起工作。这种模式下的应用生命周期如:构建、测试、交付等都出现了重大转变。
应用可以算得上是创新的代名词,用户可以随时收到更新的应用,DevOps转变运营和管理工具链,让越来越多的公司获得成功。
技术上的优势:
持续交付
降低复杂度
快速解决问题
文化上的好处:
工作增加趣味
提高员工敬业度
职业发展机会增加
商业利益:
快速交付应用
稳定的操作环境
改善沟通和协作
更多时间用于创新
DevOps与敏捷开发
许多公司相信,敏捷开发可以极大改善用户体验,DevOps可以从这些新来源增加收入。敏捷开发是应用反映体系,如:应用必须反映业务需求,在快速的基础上进行测试。简而言之,应用必须更好的反应业务所面临的的挑战和现实状况。
DevOps像另一种系统——技术、方法和规则。它是一种端对端应用开发周期更全面的方法,不仅扩展了敏捷开发实践,同时只需简单的通过持续交付、测试、反馈和协作等概念简化软件变更过程。
不同的策略为应用开发带来了价值,若将DevOps和敏捷开发结合在一起,会将价值最大化:
员工满意度:两种策略相结合,可以提高员工满意度,为其创造更有发挥空间的环境,不会轻易离职。
用户满意度:越来越多的企业利用DevOps和敏捷开发在竞争中保持领先地位,因为轻松关键会让开发团队提高参与度,从而做到高品质的产出,提升用户的忠诚度,吸引新用户。
DevOps与云计算
基础设施、应用的部署、更新是开发生命周期的重要瓶颈,云计算永久地改变了IT基础设施,使用AWS和Azure等即可启用云端基础设施。云计算已经成为了实用场景,广泛应用于开发中。DevOps非常适用于云计算的开发方式。
DevOps和云计算被称为天作之合的原因:
首先,云计算的集中化特性为DevOps提供了标准且自动化的平台,用于测试、部署和生产。因分布式的特性,企业系统不能很好地与集中式软件部署匹配,但在云平台的帮助下,很多问题迎刃而解。
其次,DevOps自动化正逐步以云计算为中心,许多服务商已经开始在平台上支持DevOps。集成使本地自动化技术成本降低,通过云端控制要比各个部分控制更容易。
最后,可以帮助用户监控应用、开发、用户数据等的资源使用度,传统系统无法提供此类服务,基于云计算的DevOps减少了资源利用需求和开发成本,并能根据需求进行调整。
云计算
与“普通的”Web开发相比,云计算开发到底有什么不同?如果编程人员想准备好充分利用任何一种云计算:软件即服务(SaaS)、平台即服务(PaaS)或基础架构即服务(Iaas),那么他应该关注哪些技术呢?如果贵公司之前一向从事Web开发,但现在打算大规模采用云计算,那你又应该关注哪些独特的技能呢?由于SaaS开发人员操心的问题可能与使用虚拟开发环境的人员操心的问题全然不同,而业界把“云计算”视作是一种整体式技术,所以学习过程可能会更让人晕头转向。
让我们听听技术大牛是怎么说的,他们有何高见。
“在云计算环境开发应用程序就有点像是从美国到访加拿大。几乎每个方面都一样,但是你会注意到存在一些细小的差异,必须顾及到。”--Standing Cloud公司的David J. Jilk
因而,下面概述了你在探索云计算时需要关注的几个方面,包括工具、可扩展性、安全性、架构设计以及不断增加的基础架构知识。
了解你的工具
我们不妨先把简单的部分搞定。向云计算迁移可能需要你学习新的应用编程接口(API),比如面向谷歌应用引擎、SalesForce.com或者你的应用程序将来依赖的任何软件的API。对于大多数开发人员来说,学习新的API、研究新的数据库工具或者探究新的开源平台是很平常的事,不过你的确需要为此留出时间。
另外,虽然一些开发工具拥有允许部署在云计算的插件,但是编程人员必须学习那些功能特性。Ektron公司的工程主管Alpesh Patel说:“以微软SQL Azure为例,存在‘普通的’Web开发环境没有的技术障碍。”你可能只好尽快熟悉稀疏列(sparse column)、扩展存储过程(extended stored procedure)、服务代理(Service Broker)或通用语言运行时环境(CLR)和CLR用户定义类型。
这些工具或升级版有许多比较新颖,所以你可能要注意它们存在的局限性。Patel说:“根据我本人的经验,微软Windows Azure平台不允许在网站中使用混合语言。网站模板、控件、应用程序代码及其他几种组件都必须作为单一语言来运行。我们只好把原先基于SQL服务代理的队列技术改成自定义的队列解决方案。”
为可扩展性而设计
“云服务的可扩展性完全取决于底层的Web应用程序。如果Web应用程序本身就存在编程方面的瓶颈,那么把该应用程序迁移到云计算环境无助于事。”--rackAID公司的Jeffrey Huckaby
云计算承诺的一个优点是,基础架构很容易扩展。于是,一些开发人员误以为“所以开发人员没必要再考虑扩展性,”但是经验丰富的技术人员对此持有不同的看法。
Marc LaFleur是提供具有语音功能的通讯应用软件的托管服务提供商Parlance Corporation的首席架构师,他解释:“云计算不是相当于用更多的硬件来解决问题。没错,云计算提供了看似没有限制的可扩展性,但是前提是设计的系统其架构采用了可以充分利用可扩展性的方式。如果你的应用程序依赖存储在内存中的会话数据,你很快会发现面临重大瓶颈。”
为更高的可扩展性设计应用程序需要你了解更多的知识,而不是更少的知识。rackAID公司首席执行官Jeffrey Huckaby说:“我在与许多刚创办的SaaS提供商和社交网站类型的网站合作时,经常遇到并不明白可扩展性概念的开发人员。云服务的可扩展性完全取决于底层的Web应用程序。如果Web应用程序本身就存在编程方面的瓶颈,那么把该应用程序迁移到云计算环境无助于事。”
他建议,应该学会在职能部门之间合理分配工作负载,并且对代码进行正确的分析。Huckaby说:“当你为比较小的负载编写应用程序或者慢慢扩大用户群时,有时间来逐步改进。不过当你推出Facebook应用程序时,可能没有时间来排除故障和困难。使用XDebug之类的代码分析工具,就能收到奇效。”
正如别以为你的代码天生就很安全,同样别以为你的代码具有可扩展性。Servoy公司首席执行官Jan Aleman说:“你开发的应用程序会比之前开发的任何应用程序都来得庞大。你的应用程序一定要有扩展性。与有着这方面经验的人交流交流;搞技术的都喜欢交流。”
以上是关于DevOps敏捷开发和云计算的主要内容,如果未能解决你的问题,请参考以下文章