作者 | Amit Gupta
译者 | 张锋
策划 | Noe
多年来,公司管理员负责运维、集成和开发——而开发人员只需要编写代码。在那之前——由于运维开发两个孤岛之间几乎没有交流,所有专家都在项目上单独工作。
最近, DevOps已成为最知名和广泛讨论的软件开发过程之一。 DevOps以改善产品交付而闻名,并被 Amazon、Facebook、Netflix 以及众多其他公司广泛使用。
假设你有任何采用DevOps的想法,以使你的业务表现更好、更成功。在这种情况下,你必须从DevOps咨询公司雇佣DevOps工程师开始。
DevOps代表运维和开发,是一种旨在合并质量保证、开发、运维基础集成和部署的实践。这些目标领域被组合成一组流程,是一致交付方法的自然延伸。
为你的业务采用DevOps有几个优势。以下是采用DevOps的三个主要好处和优势,涵盖了开发的文化、业务和技术方面。
在DevOps IT解决方案中,需要持续更新和新功能来以高效和结构化的方式满足客户需求。因此,价值交付和上市时间进度加快。
在使用DevOps时,会遇到产品持续交付和快速发布的问题。通过允许开发人员修复bug并鼓励尽早反馈,从而来改进我们的服务。当你选择DevOps时,你将体验到更高的效率和更好的产品质量。
在DevOps中,实践和原则有助于团队成员之间更好地沟通。这会提高敏捷性和生产力。与其他公司相比,采用DevOps沟通方法的公司更熟练,也更有效率。
DevOps团队成员包括运维人员和开发人员,他们共同努力帮助业务更平稳地运行。你需要明白DevOps不仅仅是行动。你不需要对业务进行任何实质性的技术改变,因为DevOps主要聚焦于改变人们的工作方式。当你坚持鼓励团队沟通的DevOps原则时,你将会获得完全的成功。
假设你担心DevOps无法满足你的期望,并思考为什么没有达到你期望的效率、满意度和质量水平。也许你也在尝试遵循别人的策略来实现你的目标。
你将希望通过尝试以下这些DevOps原则来构建一个计划。
在了解原则之前,你需要知道使用DevOps的原因和目标。当然,所有企业都希望更快的软件开发。如果你使用SAFe 、Kanban、Scrum 等其他方法,你可能无法获得更高的效率。 DevOps将帮助你以更快、更有效的方式实现目标。
通过不断调整、测试和自省,可以提高运维效率,这是开发过程的一部分。一个完美的DevOps组织可以自我修复并适应持续的情况变化。通过遵循一些原则,你可以在没有总部机构的任何帮助的情况下来改善整个组织。
有一些简单的规则,当遵循这些规则时,就会创建一个自组织的系统。这些规则使整个团队受益。在DevOps中,开发团队必须与服务提供商进行交互,而无需与内部团队同步。简而言之,他们可以拥有一个有组织的系统,而无需过多的内部沟通。
你需要定期检查并允许你的团队创建自己的方式来处理和实施这些规则。重要的是:
我们将DevOps视为交付开发过程的敏捷扩展,它打破了运维团队和开发团队之间的隔阂。你也可以在其他组中使用DevOps 。专职任务组的工作方式是模糊开发和运维的界限,并将它们整合为一个整体。
将正常开发团队转变为一个专职组的过程并不像听起来那么简单。你不能仅通过将名称从开发团队更改为专职任务组来实现这一点——其是针对需要全面知识的特定运维而设计的。
你可以把你的开发团队转换成一个专职任务组,通过在不同的方面工作来升级你的DevOps原则和实践。
一项任务必须被视为一个多能力中心,其动机是进入一个项目,然后帮助运维和开发团队加快他们的交付过程。
技术债务如何耗尽你的速度?
专职任务组可以帮助项目的方式是:
我们知道敏捷是DevOps的延伸。因此,最好有一个敏捷的产品开发教练。如果您觉得有需要,请雇佣一位,因为你需要一位倡导者。你的数字化转型是与他人共同创造愿景的基础。你可能会达成共识,因为你并不总是有正确的答案。
现在,大多数人都有了采用DevOps的想法。这将通过保持系统关闭来告诉您是否错误。你需要理解开发的目的。一旦你实现了你的目标,让敏捷教练去完成他们的任务。这是迈向进步的重要一步。
给你的团队空间。建立信任并确保他们也信任你。明确你想要什么以及如何实现任何目标的愿景。让你的团队做出某些决定并根据他们的想法工作。确保你已授权你的团队成员。
提供高度集中、简短、实用的技能培训。培训他们使用日常工作的工具。你的团队必须对他们的方法感到满意。这样,他们才能更容易采纳。
软技能包括:
SSH
高级水平的Bash使用
GitLab (询问他们可以为改进添加哪些功能。并告诉他们区分入门/青铜或终极/黄金)
Git提交的使用,我们为什么要签署它们?
Open SSL
AWK/SED
这是一个简单的规则:
进行KPI审查,为初创公司工作,知道如何控制失败,举一反三并记住从失败中学习,使其成为一种经验,并实现里程碑。培训你的团队成员教你如何防止他们重蹈覆辙。
我们知道DevOps的目的是通过精益开发原则帮助敏捷扩展和改进生产。我们也可以说这完全是关于改进的交付流程等等。在DevOps出现并实施其基本原则之前,Google提出的SRE 或站点可靠性工程就已经存在。我们可以将这种敏捷和DevOps视为SRE的一种进化机制。 DevOps是一个失败的过程,解决问题并适应情况,然后不断重复。
CD/CI pipelines和微服务容器编排等最佳实践可帮助我们通过设计从故障中恢复过来,并且它们倾向于解决我们处理故障的速度。从定义上看,这是精益和敏捷的。
充分利用所有可用资源并进行相应更新。在这个技术时代,人们必须了解他们的周围环境并保持这种意识同时使用它来改善自己。DevOps的原则和实践正在帮助许多公司提高和增强其适应性。许多像DevOps咨询公司这样的公司是一种生存方式,因为他们在各个方面都在帮助我们。
原文标题:8 Basic DevOps Principles and Practices
原文链接:https://readwrite.com/basic-devops-principles-and-practices/
张锋,51CTO社区编辑,长期从事技术顾问工作,专注于运维/云原生领域,精通网络疑难故障分析,有很丰富的大型银行运维工具建设实践经验。
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/
我注意到像bundler这样的项目在每个specfile中执行requirespec_helper我还注意到rspec使用选项--require,它允许您在引导rspec时要求一个文件。您还可以将其添加到.rspec文件中,因此只要您运行不带参数的rspec就会添加它。使用上述方法有什么缺点可以解释为什么像bundler这样的项目选择在每个规范文件中都需要spec_helper吗? 最佳答案 我不在Bundler上工作,所以我不能直接谈论他们的做法。并非所有项目都checkin.rspec文件。原因是这个文件,通常按照当前的惯例,只
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Rubysyntaxquestion:Rational(a,b)andRational.new!(a,b)我正在阅读ruby镐书,我对创建有理数的语法感到困惑。Rational(3,4)*Rational(1,2)产生=>3/8为什么Rational不需要new方法(我还注意到例如我可以在没有new方法的情况下创建字符串)?
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
Rails相对较新。我正在尝试调用一个API,它应该向我返回一个唯一的URL。我的应用程序中捆绑了HTTParty。我已经创建了一个UniqueNumberController,并且我已经阅读了几个HTTParty指南,直到我想要什么,但也许我只是有点迷路,真的不知道该怎么做。基本上,我需要做的就是调用API,获取它返回的URL,然后将该URL插入到用户的数据库中。谁能给我指出正确的方向或与我分享一些代码? 最佳答案 假设API为JSON格式并返回如下数据:{"url":"http://example.com/unique-url"
我认为我的问题最好用一个例子来描述。假设我有一个名为“Thing”的简单模型,它有一些简单数据类型的属性。像...Thing-foo:string-goo:string-bar:int这并不难。数据库表将包含具有这三个属性的三列,我可以使用@thing.foo或@thing.bar之类的东西访问它们。但我要解决的问题是当“foo”或“goo”不再包含在简单数据类型中时会发生什么?假设foo和goo代表相同类型的对象。也就是说,它们都是“Whazit”的实例,只是数据不同。所以现在事情可能看起来像这样......Thing-bar:int但是现在有一个新的模型叫做“Whazit”,看起来