1. 商业运营管理为DevOps选择最佳的云服务提供商,功能和工具

艾米丽·弗里曼(Emily Freeman)

DevOps计划的成功与否很大程度上取决于遵循该过程,但是使用正确的工具也很重要。选择云服务提供商并非易事,尤其是当DevOps是您的驱动动力时。 GCP(谷歌云平台),AWS(亚马逊网络服务)和Azure有很多共同点,而不是彼此分开。

通常,您的决定更多地取决于DevOps团队对特定云提供商或当前堆栈的舒适程度,而不是云提供商本身。在决定迁移到云之后,下一个决定是选择适合您的DevOps需求的云提供商。考虑到DevOps原则评估云提供商时,需要考虑以下几点:

  • 可靠的记录。您选择的云应具有负责任的财务决策历史,并具有足够的资本来运营和扩展大型数据中心数十年。 合规与风险管理。正式的结构和既定的合规性政策对于确保您的数据安全至关重要。理想情况下,在签订合同之前先审核审核。 正面声誉。客户的信任绝对是关键。您是否相信您可以依靠该云提供商继续增长并支持不断发展的DevOps需求? 服务水平协议(SLA)。您需要什么服务水平?通常,云提供商会根据成本提供各种级别的正常运行时间可靠性。例如,99.9%的正常运行时间将比99.999%的正常运行时间便宜得多。 指标和监控。供应商提供哪些类型的应用程序见解,监视和遥测?确保您可以尽可能接近实时地获得对系统的适当了解。

最后,确保您选择的云提供商具有出色的技术能力,可以提供满足您特定DevOps需求的服务。通常,寻找

  • 计算能力 存储解决方案 部署功能 记录和监控 友好的用户界面

您还应该确认是否有能力在需要时实施混合云解决方案,以及对其他API和服务进行HTTP调用。

三个主要的云提供商是Google Cloud Platform(GCP),Microsoft Azure和Amazon Web Services(AWS)。您还可以找到较小的云提供商,当然也可以找到许多私有云提供商,但是您需要了解的大部分来自比较公共云提供商。

亚马逊网络服务(AWS)

与其他主要公共云提供商一样,AWS通过按需付费订阅提供按需计算。 AWS的用户可以订阅任何数量的服务和计算资源。亚马逊是目前云提供商中的市场领导者,拥有大多数云用户。

它在世界各地提供了一组强大的功能和服务。两个最著名的服务是Amazon Elastic Compute Cloud(EC2)和Amazon Simple Storage Service(Amazon S3)。与其他云提供商一样,可以通过API访问服务并提供基础架构。

微软Azure

在Microsoft以Microsoft Azure形式启动此云提供商之前,它被称为Windows Azure。微软将其设计用于实现其名称所暗示的功能-充当传统Windows IT组织的云提供商。但是随着市场竞争的加剧以及Microsoft开始更好地了解工程环境,Azure进行了适应,发展和发展。

尽管可以说它仍然不如AWS健壮,但是Azure是一家专注于用户体验的全面的云提供商。通过各种产品发布和收购(尤其是GitHub),Microsoft在Linux基础架构上进行了大量投资,这使其能够为更广泛的受众提供更强大的服务。

Google Cloud Platform(GCP)

Google Cloud Platform(GCP)在三大主要公共云提供商中占有最小的市场份额,但在将近二十个地理区域中提供了大量的云服务。

GCP最吸引人的方面可能是它为用户提供了Google内部使用的相同基础架构。该基础架构包括功能强大的计算,存储,分析和机器学习服务。根据您的特定产品,GCP可能具有AWS和Azure中缺少(或较不成熟)的专用工具。

在云中查找DevOps工具和服务

从字面上看,主要的云提供商可以使用数百种工具和服务。这些工具和服务通常分为以下几类:

  • 计算 存储 联网 资源管理 云人工智能(AI) 身分识别 安全 无服务器 物联网

以下是所有三个主要云提供商中最常用的服务列表。这些服务包括应用程序部署,虚拟机(VM)管理,容器编排,无服务器功能,存储和数据库。

包括其他服务,例如身份管理,块存储,私有云,秘密存储等。它远非详尽无遗,但可以为您奠定坚实的基础,因为您可以开始研究各种选择并了解云提供商的不同之处。

  • 应用程序部署:平台即服务(PaaS)解决方案,用于以多种语言(包括Java,.NET,Python,Node.js,C#,Ruby和Go)部署应用程序 Azure:Azure云服务 AWS:AWS Elastic Beanstalk GCP:Google App Engine
  • 虚拟机(VM)管理:基础架构即服务(IaaS)选项,用于在Linux或Windows上运行虚拟机(VM) Azure:Azure虚拟机 AWS:Amazon EC2 GCP:Google Compute Engine
  • 托管Kubernetes:通过流行的业务流程协调器Kubernetes实现更好的容器管理 Azure:Azure Kubernetes服务(AKS) AWS:适用于Kubernetes的Amazon Elastic Container Service(ECS) GCP:Google Kubernetes引擎
  • 无服务器:使用户能够创建无服务器功能的逻辑工作流 Azure:Azure功能 AWS:AWS Lambda GCP:Google云功能
  • 云存储:具有缓存的非结构化对象存储 Azure:Azure Blob存储 AWS:Amazon S3 GCP:Google云存储
  • 数据库:SQL和NoSQL数据库,按需 Azure:Azure Cosmos数据库 AWS:Amazon Relational Database Service(RDS)和Amazon DynamoDB(NoSQL) GCP:Google Cloud SQL和Google Cloud BigTable(NoSQL)

在探索三个主要的云提供商时,您会注意到一长串的服务。数百种选择可能会让您不知所措。如果偶然地找不到所需的东西,那么市场可能会提供类似的东西。市场是独立开发人员提供插入Azure(由Azure,AWS或GCP托管)的服务的市场。

下表列出了大多数(如果不是全部)云提供商所提供的其他服务。

  1. 商业运营管理为何DevOps很重要:DevOps使您的组织受益的11种方式

艾米丽·弗里曼(Emily Freeman)

如果操作正确,DevOps将为您的组织带来巨大的优势。本文介绍了有关DevOps如何使您的组织受益的要点。以此作为参考,以帮助您说服同事或加深对为什么在崎bump不平的道路上选择DevOps路线的理解。

DevOps的好处

DevOps可帮助您接受持续变化

技术领域是一个不断变化的环境。一些语言不断发展,新的语言也被创造出来。框架来来去去。基础架构工具的变化可以满足日益增长的需求,即更有效地托管应用程序和更快地提供服务。工具继续抽象化低层计算以减少工程开销。

唯一不变的是变化。您适应这种变化的能力将决定您作为个人贡献者,经理或执行人员的成功。不管您目前在公司中扮演的角色或希望最终扮演什么角色,至关重要的是要迅速适应并从增长中消除尽可能多的摩擦。 DevOps使您能够通过改善沟通和协作来适应和发展。

DevOps拥抱云

云不是未来;下雪了。尽管您可能仍在过渡或尚未准备好迁移,但请意识到,云是除少数公司以外的所有公司的前进之路。它提供了比传统基础架构更大的灵活性,减轻了操作压力,并且由于按需付费定价结构,(通常)成本大大降低。

公共云,私有云和混合云为您提供了更好的业务运营无限可能性。大多数公司在使用云之前从未经历过在几分钟内启动(启动)资源的能力。

云提供的这种敏捷性与DevOps紧密相关。专注于自动化和配置管理的公司Puppet的Omri Gazitt说得最好:“随着组织迁移到云中,他们正在重新审视关于其软件交付方式的核心假设。”

借助云,API可以连接每个服务,平台和基础架构工具,以便您可以无缝管理资源和应用程序。当您迁移到云时,您可以重新评估过去的体系结构决策,并缓慢地将应用程序和系统转换为云原生或考虑到云而设计。

DevOps可帮助您聘请最优秀的人才

由于需求增加,因此缺乏优秀的工程师。根本没有足够的工程师来填补当前空缺的职位或满足未来十年及以后的市场需求。尽管找到工程师可能很困难,但这并不是没有可能,尤其是如果您专注于发现具有好奇心并且不怕失败的工程师。如果您在整体工程文化中实施DevOps,则可以升级工程师并培训他们支持持续改进的方法和技术。

在面试中很难衡量潜力。通常,人才在窃窃私语。最有才华的工程师通常不擅长社交或吹牛。他们让工作为他们说话。 DevOps使您可以更仔细地倾听所采访工程师的个人和专业兴趣。

尝试根据他们的好奇心,沟通技巧和热情来选择候选人。这些特质可以使您的团队度过恐惧,不确定和怀疑的低谷。他们可以带领团队在限制条件下做出艰难的决定,以解决难题。

您可以教某人一种技能,但是教某人如何学习则完全不同。您在DevOps组织中创建的学习文化使您能够优先考虑发展思路而不是技术能力。在DevOps中,为团队招聘至关重要。每个人都是整体,团队必须在整体上保持平衡。实现这种平衡意味着有时您不雇用“最佳”工程师,而是雇用团队的最佳工程师。

当您聘请DevOps团队时,您可以像牵牛一样将重担拉得比单独承担更多。借助DevOps,您可以增加团队的各个组成部分,并整体上创建团队的力量。

DevOps使您保持竞争力

DevOps研究与评估(DORA)每年发布的DevOps状态报告清楚地表明:世界各地的公司都在使用DevOps来调整其工程实践并从中受益。他们看到了工程生产的增加和成本的降低。借助DevOps,这些公司正在从笨拙的流程和系统转变为简化针对最终用户的软件开发方式。

DevOps使公司可以创建可靠的基础架构,并利用该基础架构更快,更可靠地发布软件。底线是:高效的组织使用DevOps,他们通过增加部署频率并显着减少因系统变更而导致的故障来压制竞争。

如果要竞争,则必须采用可靠的DevOps方法。也许不是全部,而且绝对不是一次全部-但是等待和观察DevOps是否值得的时间已经过去。

DevOps帮助解决人为问题

人类已经达到了我们的进化点,技术发展的速度比我们的大脑快。因此,人类面临的最大挑战是由于人类的局限性,而不是软件或基础架构的局限性。与其他软件开发方法不同,DevOps全面关注您的社会技术系统。

拥抱DevOps需要文化和思维方式的转变。但是,如果您实现了DevOps的文化和思维方式,则您和您的组织将获得几乎无限的收益。当工程师被赋予探索能力,而没有压力和对失败的恐惧时,发生了惊人的事情。

工程师发现解决问题的新方法。他们以健康的心态对待项目和问题,并在没有不必要和负面竞争的情况下更加流畅地合作。

DevOps挑战员工

DevOps加快了单个工程师以及整个工程团队的发展速度。工程师是聪明的人。他们自然也很好奇。一位精通成长心态的伟大工程师在掌握了特定的技术,工具或方法论之后,便面临新的挑战,否则他们往往会停滞不前。

他们需要感觉好像他们的大脑和技能正在伸展—不是感到不知所措或压力过大,而是足以感觉到自己正在成长。这就是丹·平克(Dan Pink)在《云端硬盘》中描述的张力。如果您能够实现这种平衡,那么您的工程师将以个人和团队的形式蓬勃发展。

DevOps的方法论促进了T形技能的发展,这意味着工程师专门研究一个领域,具有深厚的知识,并对许多其他领域具有广泛的了解。这种方法使工程师可以探索其他感兴趣的领域。

例如,也许Python工程师对云基础架构感兴趣。没有其他工程方法可以允许和鼓励工程师进行与DevOps一样多的探索,这是对雇用和保留人才的巨大贡献。

DevOps弥合差距

现代技术公司的挑战之一是业务需求与工程需求之间的鸿沟。在具有传统管理策略的传统公司中,工程与部门(如市场营销,销售和业务发展)之间存在自然的摩擦。这种摩擦起因于缺乏对准。每个部门均以不同的成功指标来衡量。

DevOps致力于统一业务的每个部门,并建立共同的理解和尊重。对彼此工作和贡献的尊重使公司中的每个人都能蓬勃发展。它消除了摩擦并提高了加速度。

想想一群雪橇犬。如果每只狗都向不同的方向移动,则雪橇无处可走。现在想象一下,这些狗一起工作,专注于前进。当您内部缺乏摩擦时,您面临的唯一挑战是外部挑战,并且与内部冲突相比,外部挑战几乎总是更易于管理。

DevOps让您顺利失败

失败是不可避免的。这是不可避免的。由于所有未知因素,因此无法预测系统可能发生的所有故障。 (它会失败得很厉害,不是吗?)您可以为失败做准备,而不是不惜一切代价避免失败并在失败发生时感到沮丧。 DevOps使组织为响应故障做好准备,但不能以恐慌,压力引起的方式做出响应。

事故总是会带来一定程度的压力。在您的命令结构的某个时刻,执行人员可能会因服务中断期间的损失而大喊大叫。但是您可以通过使用故障作为学习和调整系统以使其更具弹性的方式来减轻团队的压力。

每个事件都是个人和团队合作的机会,可以改善和发展。

DevOps拥抱持续改进的不断改进的艺术。当您的团队经历工作流时,他们每天都会做出微小的选择,这些选择有助于长期增长,最终创造出更好的产品。

DevOps让您不断改进

持续改进是DevOps的关键要素。将DevOps应用于组织时,请使用永无止境的周期的可视化效果。周期不应该通过西西弗斯的思想引起恐惧,将石块推向永恒。取而代之的是,将此循环视为运动,就像滚雪球一样滚下山坡,聚集动量和质量。

在采用DevOps并将其越来越多的核心原则集成到您的日常工作流程中时,您将亲眼目睹这种加速。持续改进的周期应始终围绕客户。您必须不断考虑最终用户,并将反馈集成到软件交付生命周期中。

此周期的基础是CI / CD。采用CI / CD并不是DevOps的全部要求。相反,这是一个缓慢的实施过程。您应该首先专注于掌握持续集成。鼓励工程师自由共享代码并频繁合并代码。这种方法可防止隔离和孤岛成为您的工程组织中的障碍者。

在您的组织掌握了持续集成之后,请继续进行持续交付,这是自动化软件交付的实践。此步骤需要自动化,因为代码将经过多次检查以确保质量。在所有代码都安全并且可以在源代码存储库中访问之后,您就可以开始连续地实施小的更改。您的目标是消除人工障碍,并提高团队发现和修复错误的能力,而不会影响客户。

DevOps自动完成工作

加速和提高效率是DevOps方法的核心。通过使劳动密集型的手动流程自动化,DevOps使工程师可以腾出时间从事使软件和系统更可靠,更易于维护的项目,而不会造成服务意外中断的混乱。

站点可靠性工程(SRE)处理辛苦工作,这是保持服务正常运行所需的工作,但它是人工且重复的。人工劳动可以自动化,并且缺乏长期价值。也许最重要的是,劳动成线性比例,这限制了增长。请注意,辛苦并不是指会议和计划等行政必需品的开销。如果以DevOps的心态实施此类工作,将有利于团队的长期发展。

自动化是DevOps实践工具的核心宗旨之一。您可以自动化您的部署管道,以包括详细的测试套件以及必须通过其释放代码的其他条件。在许多方面,SRE是DevOps演进的下一个逻辑步骤,应该是您和您的组织掌握DevOps的核心概念并在团队中实施实践之后的下一步。

DevOps加快交付速度

软件交付生命周期已从缓慢的线性Waterfall过程演变为敏捷且连续的DevOps循环。您不再需要考虑产品,而是要充分开发产品,然后将其发布给客户,以期获得成功。

取而代之的是,您在客户周围创建了一个反馈循环,并不断向您的产品交付迭代更改。这种连接的电路使您能够不断改进功能,并确保客户对所交付的产品感到满意。

当您将所有方面联系在一起并在组织中完全采用DevOps时,您会看到您的团队可以更快地交付更好的软件。刚开始时所做的更改很小,就像您发布的更改一样。但是随着时间的流逝,那些看似微不足道的变化加起来并组成了一个团队,以加速其高质量软件的交付。

  1. BusinessOperations Management让您的云工具更多:在云中自动化DevOps

艾米丽·弗里曼(Emily Freeman)

将云与您的DevOps实践结合起来可以加快您已经完成的工作。结合使用,DevOps和云都可以推动公司的数字化转型。

只要您强调DevOps的优先事项:人员,流程和技术,就可以看到结果。云与其他工具一起正好属于DevOps实施的技术部分。

DevOps和云计算

云计算可以通过您自己的物理基础架构无法实现的方式,为开发人员和操作人员实现自动化。通过云中的代码(即称为基础结构即代码(IaC)的系统)来配置基础结构,使您可以创建模板和可重复的流程。

当您通过源代码控制跟踪对基础结构代码的更改时,您将允许您的团队无缝运行并跟踪更改。与让工程师在门户网站周围单击相比,IaC具有更高的可重复性和自动化性(更不用说更快了)。

甚至门户网站上的说明也不是万无一失的。如果您始终通过门户而不是YAML文件来构建相同的设置,则可能会对基础结构设置进行微小但重要的更改。

将您的DevOps文化带入云端

人们经常谈论DevOps和云计算,就好像它们是相互缠绕的,并且在许多方面一样。但是请注意,您可以采用DevOps或开始转变您的工程组织,而无需全神贯注于云中。在将基础架构转移到云提供商之前,先为团队建立标准,实践和流程是完全合理的。

尽管人们说话时好像每个人都已经在云上,但是您仍然处在向云转移的最前沿。如今,云提供商正在变得越来越强大,工程公司正在缓慢地将其自托管服务迁移到云中。考虑到这一点,寻求采用DevOps的组织应该明智地考虑利用主要云提供商的服务。

任何具有DevOps经验的人都不太可能将云称为NoOps解决方案,但他们可能将其称为OpsLite。云服务通常以使开发人员对开发人员更友好的方式抽象化复杂的操作架构,并使他们能够获得更多的组件所有权。

如果您曾抱怨应将开发人员包括在应召轮换中,那您是对的-他们应该是。让开发人员参与即时轮换是提高他们的代码部署以及管理和供应其服务所基于的基础结构的知识的好方法。这减少了运营开销,并节省了运营专家开发主动解决方案的时间。

通过采用DevOps进行学习

如果您的团队有能力采用DevOps并同时转向利用云计算,则可以将这些转变作为开发人员和运营人员的学习机会。

当您的团队转移到云上时,开发人员将有机会使操作专家熟悉代码(甚至是特定语言)和源代码控制,并且操作人员可以向开发人员介绍基础架构。当这两个小组既是专家又是新手时,这两个小组都不必处理很多损害自我的知识转移。

这些互动产生的信任,融洽和健康的动力将激励您的团队,并且持续的时间比立即开展的工作要长得多。在许多方面,您都可以通过开发DevOps实践工具来增强DevOps文化。

在DevOps计划中受益于云服务

现代运营正在变化和发展。您的竞争对手已经开始采用新的方式来更快地创新并加快其软件交付生命周期。

云计算代表了企业思考IT资源的传统方式的一大转变。通过将您的许多基础架构和运营要求外包给云提供商,您可以减少开销并释放团队精力,专注于为用户提供更好的软件。

以下是组织转向云计算服务的六个常见原因:

  • 改善负担能力。云提供商允许您在需要时仅选择所需的服务。试想一下,如果您可以访问有线电视,但只为观看的频道付费。您会喜欢的,不是吗?大多数DevOps团队成员都会!云提供商可以做到这一点,同时还为您提供物理安全数据中心中内置的最新计算硬件。 自动化部署。系统更改(即部署)是中断或服务中断的最常见原因。云提供商使发布代码成为自动化,可重复的过程,从而大大降低了在手动发布中犯错误和引入错误的可能性。自动化部署还使开发人员可以发布自己的代码。最终,自动化部署可以简化流程,同时减少站点停机时间和生产中的反应分类。 加快交货。云减少了软件交付生命周期几乎每个阶段的摩擦。尽管需要设置,但是通常只花费不超过手动完成该过程所需时间的两倍,并且您只需要设置一次服务或过程即可。加速交付给您带来了极大的灵活性。 增强安全性。云提供商将安全性作为其产品的一部分。 Microsoft Azure,Amazon Web Services(AWS)和Google Cloud Platform(GCP)符合不同的合规性标准,并提供有助于您增强系统安全性的策略,服务和控件。另外,如果您在云中利用部署管道工具,则可以在将新代码发布到环境之前添加安全检查,从而减少了安全漏洞的可能性。 减少故障。通过云构建和发布管道,您的团队能够创建自动化测试,以确认功能,代码质量,安全性以及对引入系统的任何代码的合规性。此功能减少了发生错误的可能性,同时还降低了部署有问题的风险。 构建更具弹性和可扩展性的系统。云使组织可以在几秒钟内扩展,扩展和增加容量。这种弹性扩展功能可以根据需要扩展计算和存储资源,无论用户与产品在世界上的任何地方进行交互。这种方法使您可以更好地为客户服务,并更有效地管理基础架构成本。

DevOps方法就是创建一种循环方法,使您每次从中受益并从过程中学习。

  1. 使用DevOps改善工程性能的BusinessOperations ManagementTips

艾米丽·弗里曼(Emily Freeman)

作为DevOps流程的一部分,提高工程性能可以对整个业务产生巨大影响。简化开发生命周期并消除瓶颈将有助于加速业务的整体绩效-最终提高利润。而且,如果您认为,作为DevOps工程师,您不必关心业务绩效,那就错了。

根据DevOps研究与评估(DORA),高绩效的DevOps团队在四个关键领域始终领先于竞争对手:

  • 部署频率:这个术语是指工程师可以多久部署一次代码。提高性能与每天根据需要多次部署是一致的。 交付时间:交付时间是从提交新代码到在生产环境中运行该代码所花费的时间。根据DORA,绩效最高的员工的交货时间不到一小时,而平均水平的员工最多需要一个月的时间。 MTTR(平均恢复时间):MTTR是指事件或中断发生后恢复服务所需的时间。理想情况下,您希望瞄准一个小时以下。中断会花费大量金钱,尤其是当它影响到应用程序的利润中心时。长时间的中断会破坏信任,降低士气,并暗示其他组织挑战。 变更失败:此术语是指系统变更对性能造成负面影响的速率。尽管您永远不会达到零%的变更失败率,但是您可以通过增加自动化测试并依靠具有持续集成检查和门的部署管道来绝对接近零,所有这些都确保质量。

消除完美度是DevOps成功的衡量标准

DevOps依靠“做得比完美更好”的口头禅。这似乎是这些无法归因的引文之一,但这些词仍能说出真相。试图达到完美是效率和生产力的敌人。

大多数工程师,包括DevOps系列的工程师,都遭受某种形式的分析瘫痪之苦—一种精神困扰,它限制了您的工作效率,从而试图过度分析工作并避免任何潜在的不幸事故。

培训工作中的缺陷会要求您承担失败的可能性和重构的必然性。 DevOps的主要租户是围绕客户创建反馈循环并循环回到管道的各个阶段。在DevOps中,您要连接两端以将线弯曲成一个圆。

当您反复地反复思考时,推出不完美的代码似乎会减少很多恐惧,因为代码不是刻在石头上的。相反,当您收集更多数据和反馈时,DevOps工程师处于一种暂时的状态,即它会不断改进。

为DevOps设计小型团队

您可能听说过亚马逊的“两个比萨饼”团队。该概念广泛地说明了小型团队的重要性。现在,组成两个比萨饼团队的确切人数根据您的胃口而异。

将团队人数限制在12人以下是一个好主意。当一个小组接近9、10或11个人时,请尝试将其分成两部分。团体人数的最佳选择是大约4-6人。您的确切人数可能会有所不同,具体取决于所涉及的人员,但要点是:当团队人数过多时,沟通会变得充满挑战,集团形成,团队合作也会受到影响。

组建DevOps团队时,这还有另一个奖励目标:偶数。在工作中让人们有个“伙伴”是个好主意,他们可以信任别人。在偶数组中,每个人都有一个好友,而且没有人被排除在外。您可以均匀配对,并且效果很好。由于人员数量的原因,组建偶数组并不总是可以实现的,但要记住这一点。

衡量通信渠道的公式为n(n – 1)/ 2,其中n代表人数。您可以通过简单的计算来估算团队沟通的复杂程度。例如,两人一组10人的团队的公式为10(10 – 1)/ 2 = 45个沟通渠道。您可以想象大型团队会变得多么复杂。

跟踪您的DevOps工作

如果您能克服每天记下来的琐事,那么成果将为您提供非凡的价值。掌握有关您如何利用时间的真实数据可以帮助您跟踪自己和团队的效能。正如彼得·德鲁克(Peter Drucker)所说的那样:“如果无法衡量,就无法改善。”

您离开工作几天后觉得自己什么都没做?您刚见面后就开会,或者整天随机打扰。你不是一个人。许多工人有同样的问题。可能很难跟踪您的进度及其效率。对于任何DevOps团队来说,我们对效能的感觉与效能的现实之间的差异是危险的领域。

为此,请尝试使用笔和纸,而不是使用一些自动化工具。是的,您可以使用软件来跟踪您如何在计算机上使用时间。它可以告诉您何时阅读电子邮件,何时闲暇以及何时进行编码,但是它缺乏细微差别,经常会错过或错误地分类大量时间。

了解您的工作方式和时间后,您可以开始确定哪些活动属于艾森豪威尔决策矩阵的哪些象限。您日常从事的忙碌工作对您或组织没有任何价值?

减少DevOps项目中的摩擦

经理可以为DevOps工程团队做的最好的事情之一就是让他们一个人呆着。雇用有好奇心的工程师,他们有能力独立解决问题,然后让他们做好工作。您可以减少拖延他们工程工作速度的摩擦越多,您的团队就会越有效。

减少摩擦包括团队之间存在的摩擦-尤其是运营和开发。别忘了安全专家。

调整目标和激励措施可以提高速度。如果每个人都致力于实现相同的目标,那么他们可以作为一个团队团结起来,有条不紊地朝着这些目标迈进。

人性化的警报以确保DevOps成功

每个工程团队都会针对无关紧要的动作或事件发出警报。具有所有这些警报会使工程师对真正重要的警报不敏感。由于消息过多,许多工程师已经习惯于忽略电子邮件警报。

警报疲劳会困扰许多工程组织,并且代价高昂。如果您每天都被淹没,那么就不可能从不重要的海洋中挑选出重要的东西。您甚至可以说这些消息很紧急,但并不重要。 。 。 。

电子邮件不是一种理想的警报工具,因为它对时间不敏感(许多人每天只检查几次电子邮件),并且很容易被其他细节掩埋。

运用您了解的快速迭代知识,定期重新评估您的警报阈值,以确保适当的覆盖范围而不会产生太多误报。确定哪些警报不是必需的,这需要花费时间和精力。而且可能会有点吓人,对吧?删除警报或提高阈值总是会带来一些风险。

如果警报实际上很重要怎么办?如果是这样,您会发现的。请记住,您不必担心DevOps组织的失败。您必须拥抱它,以便您可以前进并不断改进。如果您让恐惧指导您的决策,那么您将停滞不前-作为工程师和组织。

  1. 业务运营管理如何在组织中组建DevOps团队

艾米丽·弗里曼(Emily Freeman)

DevOps没有理想的组织结构。像技术上的一切一样,关于公司结构的“正确”答案取决于您的独特情况:您当前的团队,您的增长计划,您的团队规模,您的团队可用技能,您的产品等等。

调整DevOps团队的愿景应该是您的首要任务。只有在消除人与人之间明显摩擦的低垂成果之后,才可以开始重新安排团队。即使这样,也要保留一些灵活性。

如果您以开放,灵活的方式进行重组,那么您将传达您愿意倾听的信息,并赋予团队自治权-DevOps的基本原则。

您可能已经有一个对基础架构和配置管理充满热情和好奇的Python或Go开发人员。也许那个人可以在您的新组织中转而担任更专注于运营的角色。把自己放在那个人的鞋子里。您不愿意对冒风险的组织效忠吗?您会不会因为努力工作而感到兴奋?这种兴奋是有感染力的。

在这里,您将学习如何使现有团队保持一致,如何将团队专用于DevOps实践以及如何创建跨职能团队-您可以从中选择的所有方法来使团队适应DevOps。

您可以选择一种方法,然后从那里发展。不要以为这个决定是永久性的,不可动摇的。 DevOps专注于快速迭代和持续改进,这就是这种方法的主要优点。这种理念也适用于团队。

调整DevOps的职能团队

通过这种方法,您可以在传统的开发和运营团队之间建立强大的协作。这些团队本质上保持职能,一个团队专注于操作,一个团队专注于代码。但是他们的动机是一致的。他们将成长为彼此信任,并作为两个团队共同努力。

对于较小的工程组织,组建职能团队是一个不错的选择。即使是第一步,这种调整也可以加强您到目前为止所做的积极变化。通常,您需要花时间建立融洽的关系来开始对齐。确保两个团队中的每个人不仅在理智上理解另一个团队的角色和约束,而且要对痛点感到同情。

对于这种方法,最好推广“由您自己构建,就为您提供支持”的政策。该政策意味着每个人(包括开发人员和运营人员)都应参与您的轮班。

通过这种参与,开发人员可以开始理解在深夜被打扰的烦恼,并在迷雾眼和缺乏咖啡因的情况下苦苦挣扎,以修复影响客户的错误。运营人员也开始相信您的开发人员对其工作的承诺。即使是很小的变化,也可以建立大量的信任。

提醒您一点:如果开发人员为应召而奋斗,则组织中存在更大的问题。推迟执行并不少见,因为待命与正常的日常工作有很大不同。退缩通常来自不适和恐惧的地方。您可以解决以下事实:您的开发人员在电话刚开始的最初几次可能不知道该怎么做,从而有助于减轻这种反应。

他们可能不熟悉基础架构,没关系。鼓励他们升级事件并传授具有更多经验的人员。最后,创建带有常规警报以及要执行的操作的运行手册。提供这些资源将有助于缓解一些恐惧,直到他们开始摆脱困境。

有助于促进协作以组建更具凝聚力的DevOps团队的另一种策略是引入阴影日,每个团队“交易”一位同事。被交易者只是掩盖了团队中的其他人,坐在他们的办公桌(或所在区域)内,并协助他们履行日常职责。他们可能会提供帮助,以团队形式讨论问题(配对编程),并从不同的角度了解有关系统的更多信息。这种教学方式不是规定性的。

相反,它有助于好奇心和建立信任。同事们应该随便问问题,甚至是“愚蠢的”问题,也可以自由学习。没有性能预期。应该只花时间去了解彼此并欣赏彼此的工作。任何富有成效的输出都是红利!

在这种调整方法中,两个团队绝对必须参与计划,体系结构和开发过程。他们必须在整个开发生命周期中分担责任和问责制。

致力于DevOps团队

一支真正的DevOps团队比真正的DevOps团队更像是Sys Admin的发展。这是一个具有多种技能的运营团队。也许有些工程师熟悉配置管理,另一些工程师则熟悉IaC(即代码基础架构),也许其他工程师是容器或云本机基础架构或CI / CD(连续集成和持续交付/开发)方面的专家。

如果您认为将一群人组成一个正式团队足以打破孤岛,那就错了。人比电子表格复杂。如果您的筒仓已进入不健康和部落的阶段,那么等级制度就没有任何意义。在有毒的文化中,会出现强人的领导风格,几乎总是有人站在旁边。如果您在自己的团队中看到此问题,则您有工作要做。

尽管任何一种方法都可能对您的团队有效,但是这种敬业的团队方法是您应该考虑的最多的方法。专门的DevOps团队的最大缺点是,它很容易成为传统工程团队的延续,而没有意识到需要调整团队,减少孤岛和消除摩擦。在这种方法中,持续摩擦(或产生更多摩擦)的风险很高。谨慎行事,以确保您出于特定原因选择此团队组织。

这种DevOps方法的好处是拥有一支专门的团队来应对主要的基础架构更改或调整。如果您遇到的问题是以运营为中心的问题,这些问题会减慢部署速度或引起站点可靠性问题,那么这可能是个不错的方法,甚至是暂时的。

如果您打算将旧版应用程序迁移到云中,请使用专门的团队。但是,您可以尝试将其标签为自动化团队,而不是将其称为DevOps团队。

这个敬业的工程师团队可以完全专注于确保您设置了正确的基础架构和自动化工具。然后,您可以放心,您的应用程序将在没有重大中断的情况下进入云。不过,这种方法只是暂时的。如果您将团队隔离太久,则可能会遇到从快速增长到嵌入式筒仓的滑坡。

为DevOps创建跨职能产品团队

跨职能团队是围绕单个产品重点组成的团队。您无需将单独的团队进行开发,用户界面和用户体验(UI / UX),质量保证(QA)和操作,而是将每个团队的人员合并在一起。

跨职能团队在大中型组织中表现最佳。您需要足够的开发人员和操作人员来填补每个产品团队的职位。每个跨职能团队看起来都有点不同。

每个团队至少要有一个操作人员是一个好主意。不要要求操作人员在两个团队之间分配职责。这种情况对他们不公平,并且会迅速在两个产品团队之间造成摩擦。给您的工程师特权,使其能够集中精力并深入研究他们的工作。

如果您的组织规模仍然很小或处于启动阶段,则可以将整个工程组织视为一个跨职能的团队。保持小而集中。当您开始拥有10到12名员工时,就开始考虑如何重组工程师。

下图显示了您的跨职能团队的面貌。但是请记住,它们的组成因团队而异,并且因组织而异。某些产品具有很强的设计重点,这意味着每个团队中可能有多个设计师。其他产品是技术性产品,是为不太在乎美学的工程师设计的。这类产品的团队可能只有一名设计师,或者根本没有设计师。

DevOps产品团队

如果您的组织足够大,那么您当然可以使用不同的DevOps想法和方法创建多个团队。请记住,您的组织是独一无二的。有权根据您当前的情况做出决定并从那里进行调整。以下是各种类型的产品团队的一些可能组合。

  • 传统产品团队:项目经理(PM),前端开发人员,后端开发人员,后端开发人员,站点可靠性工程师(SRE),自动化工程师,质量检查测试人员 云转型团队:SRE,SRE,运营工程师,自动化工程师,后端开发人员 MVP团队:PM,设计师,UX工程师,前端开发人员,后端开发人员,运营工程师

跨职能产品团队的缺点是,工程师会失去具有相同技能和激情的工程师的友善精神。拥有一群志趣相投的人,您可以与之交往并向他们学习,这是工作满意度的重要方面。在下面查看此问题的解决方案。

如下所示,您可以给您的工程师专门的工作时间,与他们的部落共度时光。您可以做一些慷慨的事情,例如每周支付一次午餐,以便他们聚在一起聊天。或者,您可以提供10%到20%的工作时间,让他们作为部落来从事项目。无论哪种方式,您都需要工程师保持敏锐。

部落分享行业知识,提供合理的反馈并支持职业发展。为您的工程师提供时间,以向他们共享教育,经验和目标的人们学习。这次提供了一个安全的地方,让他们可以放松身心并有宾至如归的感觉。

DevOps部落

没有什么完美的解决方案可以克服不良的组织文化的不足。但是,如果您到目前为止已经注意并取得了适当的进展,那么下一步就是组建团队,以巩固您已经确立的文化理想。

  1. 业务运营管理迁移到DevOps流程:从生产线到电路

艾米丽·弗里曼(Emily Freeman)

DevOps方法涉及周期而不是生产线。它允许持续集成和持续交付,在整个过程中获得一致的反馈。 DevOps方法论只是流程如何发展的一个例子。

在过去的几十年中,有充分的理由,开发过程发生了根本性的变化。在1960年代,玛格丽特·汉密尔顿(Margaret Hamilton)领导了为阿波罗11号任务开发软件的工程团队。您不会反复将人类送入太空-至少在1960年代没有。在软件领域,“快速失败”感觉不是特别好的方法。生命还在线上,更不用说数百万美元了。

汉密尔顿和她的同龄人不得不使用瀑布方法来开发软件。下图显示了瀑布开发过程的示例(直线发生)。

瀑布过程

下图添加了阶段。注意箭头如何向一个方向移动。它们显示出明确的开始和结束。完成后,就完成了。对?

不。许多人想永远远离其代码库的一部分(或用火杀死他们),他们通常没有特权。

汉密尔顿和她的团队开发的软件取得了巨大的成功(令人惊讶的是,他们认为他们是在组装时开发的,零错误的助手如错误消息)。但是,并非所有项目都同样成功。

后来,瀑布失败了,敏捷成功了。 (DevOps诞生于敏捷运动。)敏捷寻求瀑布的直线并将其弯曲成一个圆,从而创建一个永无止境的循环,工程团队可以通过该循环不断地进行改进。

瀑布开发管道

下图描述了如何考虑循环开发生命周期。

DevOps电路

通常,不同组织规定的各种循环受那些供应商销售的产品的影响。例如,如果供应商出售基础架构软件和工具,则他们可能会强调开发生命周期中的这一部分,可能最着重于部署,监视和支持软件。

这里什么都没卖。在这里学习的阶段对于开发人员来说是最关键的,在学习更好地管理他们的软件开发和采用DevOps时,人们最费劲的阶段也是如此。

软件开发生命周期的五个阶段是

  • 计划:DevOps开发过程的计划阶段可能是DevOps任务中最关键的部分。它可以帮助您成功或失败。这也是将所有人聚在一起的最肥沃的时光。对所有人来说,这意味着业务利益相关者,销售和市场营销,工程,产品等。 设计:在大多数公司中,设计阶段已合并到编码阶段。如此庞大的设计和代码组合,无法将架构策略与实施分开。但是,如果您将诸如数据库设计,API物流和关键基础架构选择之类的东西留在开发流程的最后,或者,也许更糟的是,单独开发人员在使用单独的功能,那么您会很快发现自己的代码库很孤立。作为您的工程团队。 编码:功能的实际开发是DevOps流程的面目,并获得了所有荣耀。但这是开发生命周期中最不重要的步骤之一。在许多方面,它只是管道中先前区域的执行。如果做得好,编码应该是一个相对简单直接的过程。

现在,如果您是一名开发人员,并且因为处理了数百个随机且难以解决的错误而大惊小怪,那么您很容易理解您的感受。编码很难。关于软件开发的一切都不容易。但是,通过掌握规划,设计和体系结构(并将它们与代码的实际实现分开),可以确保将最困难的软件开发决策抽象出来。

  • 测试:测试是您管道中的一个领域,各个专业领域的工程师都可以参与其中并参与其中,从而为学习测试,可维护性和安全性提供了独特的机会。在软件开发的六个阶段中,有许多不同类型的测试用于确保您的软件按预期工作。 部署:部署是与操作最紧密相关的阶段。传统上,您的运营团队将采用开发人员开发并由质量保证(QA)团队进行测试的代码,然后将其发布给客户-由他们独自负责发布过程。 DevOps在开发过程的这一阶段产生了巨大的影响。同样,部署也是寻找最多自动化工具的领域之一。从DevOps的角度来看,您的首要任务是简化部署过程,以便团队中的每个工程师都能够部署其代码。这并不是说操作没有专门知识,或者操作团队可能被解散。

操作人员将始终具有有关基础结构,负载平衡等方面的独特知识。实际上,从您的运营团队中删除手动部署软件的任务将使他们节省其他地方的时间和金钱。他们将有时间致力于改善应用程序的可靠性和可维护性。

DevOps框架中交付生命周期的最重要方面是它是一个真正的循环。当您到达终点时,您就回到起点。另外,如果您在此过程中的任何时候都收到客户的支持反馈,请返回到后续阶段(或计划阶段),以便您可以以最能为客户服务的方式开发软件。

建立管道的第一部分是对其进行线性处理。您正在建立一条带有设定阶段和检查点的直线。在此框架内,您可以将软件开发生命周期视为开始和结束的过程。瀑布爱好者会为之骄傲。

但是现实并不能使您直线前进。您不能只是开始编写代码,完成并走开。取而代之的是,您不得不基于在第一个迭代循环中发布的基础软件,并在第二个循环中对其进行改进。等等等等。这个过程永远不会结束,并且您将永远不会停止改进。

DevOps流程可帮助您连接该直线管道的起点和终点,以便您开始将其理解为一个完整的电路或回路,以便您不断开发和改进。

  1. 业务运营管理建立DevOps团队的面试技巧:获得正确的技术技能

艾米丽·弗里曼(Emily Freeman)

雇用DevOps职位时,可能很难评估合适技能的候选人,但并非没有可能。有了一点创意和愿意走出困境的意愿,您就可以使用面试技巧来帮助您为DevOps计划找到具有适当技术技能的候选人。

DevOps面试

令人费解的谜语和引起汗水的白板面试的时代正在减少-这是有充分理由的。如果工程师比讨论讨论技术问题更关心欺骗候选人,那么工程师可以协助进行白板面试,那么您将步履维艰。

白板面试最近因使代表性不足和边缘化的群体(包括妇女和有色人种)处于不利地位而备受关注。在这个时代,对于高科技公司而言,雇用多样化的劳动力绝对至关重要,因此这种情况是不可接受的。但是,您必须以某种方式衡量一个人的技术能力。

答案是什么?好吧,好消息是您可以选择。 (坏消息是……您可以选择。)

您的聘用方式将决定您是谁。

重新访问DevOps求职者的白板面试

白板采访从未打算成为现在的样子。在一次白板面试中,DevOps候选人获得了一张打印在八张纸上的计算机程序。说明? “调试程序。” Umm。 。 。劳驾?

白板面试已经成为一种情况,在这种情况下,您会给应聘者一个看似不可能的问题,用记号笔将他们送到董事会,并在四到五个人观察他们的恐慌的同时大幅度地看着他们出汗。这种类型的面试不会向任何人提供有关雇主或被面谈者是否适合另一方的质量信息。

尽管其他人呼吁取消白板面试,但这里有一个更细微的建议:对其进行更改以使其适合您的DevOps需求。让两个人讨论一段代码或特定问题。不要让问题变得疯狂,例如平衡二进制搜索树。除非您要面试的工作实际上是在Assembly中编写代码,否则您无需评估应聘者编写Assembly的能力。

了解您要填补的DevOps职位,所需的技能集以及衡量候选人中这些技能的最佳方法。您的团队中只有一名工程师与候选人坐下来讨论问题。您将如何开始对话?您一路上遇到什么问题?你们都将如何使您的解决方案适应所遇到的挑战?

这种对话方法为DevOps求职者完成了两件事:

  • 它减少了恐慌。大多数人在压力下都觉得不好。另外,当有人盯着你的肩膀,批评每一个错别字或错误时,你就不会每天做事。您会立即辞职。因此,不要强迫人们以这种方式进行采访。相反,让候选人有机会炫耀他们的能力。您将了解他们的想法和沟通方式。 它模仿真实的工作。对话式访谈使您了解与该人一起工作的感觉。您不会通过观看彼此的挣扎来解决工作中的难题。 (至少,您不应该。真的。这不是非常合作或DevOps-y,让您的同事陷入困境。)相反,您可以一起工作,交流思想,思考,出错,恢复并找到解决方案—一起。

最好的白板面试是协作,交流和好奇心—从业人员对DevOps的所有热爱。

为DevOps求职者提供实地测试

较传统的白板面试的替代方法是带回家测试。这种类型的测试对患有任何焦虑或无形残疾并影响其参加白板面试能力的人特别友好。这种面试方式也适合那些冒名顶替综合症的工程师。

冒名顶替综合症描述的是成就卓著的人,他们努力使自己的成功内在化,并持续遭受欺诈之苦。

实地测试包含一些类型的问题,DevOps候选人可以在自己的时间内在家中解决问题。通常将带回家的测试设置为测试套件,候选人必须为此编写代码以使测试通过。

或者,问题可能相对较小,例如,“使用[您选择的语言]创建一个程序,该程序需要输入并反转字符。”选项是无穷无尽的,您可以按照技术堆栈定制测试你觉得合适。

您甚至可以要求DevOps求职者部署他们的应用程序。确保允许候选人使用开放源代码工具或为他们提供使用特定技术的必要订阅。

带回家测试的主要缺点是,您要求人们在晚上或周末花时间做本质上是免费的工作。即使您为他们的带回家考试的工作付费,这种面试方式也会对DevOps候选人产生不公平的影响,该候选人在工作之外还承担其他责任,包括照顾孩子,伴侣或生病的父母。

并非每个伟大的工程师都有无限的时间致力于自己的技术。但是,如果您将DevOps候选人池限制为有能力花5到10个小时进行实地测试的人员,那么您会很快发现您的团队变得同质而停滞。

与DevOps求职者一起查看代码

可以真正讲出的一种面试技巧是,当您与一名工程师或一组工程师坐下来一起解决实际代码中的实际错误时。您可以采用几种方法进行实时代码采访。

您可以模仿带回家的测试,给应试者一个小时左右的时间来创建程序或编写函数以使一系列测试通过。您还可以像进行代码审查一样进行面试,在其中可以获取实际的PR,并深入研究代码的作用以及可以改进的地方。

在许多方面,代码审查的成对编程性质将白板面试和带回家的测试的最佳部分结合在一起,但没有一些主要缺点。

结对编程是一种工程实践,其中两名工程师坐在一起,共同解决问题。通常,一个人通过拥有键盘来“驾驶”,但他们会共同决定哪种方法是最佳方法,添加哪些代码以及取消什么。

如果DevOps职位涉及以操作为中心的角色,那么使用这种实时编码方法会更好。尽管许多操作人员正在学习将基础结构实现为代码或管理配置,但是他们却没有与开发人员相同的经验。

复习某项工作的内容以及它可能如何工作是一种绝佳的方式,可以确认候选人在履历中的工具和技术列表中具有经验,并确保候选人可以与团队进行沟通。

建立您的DevOps团队是个人追求。您的DevOps团队不需要与您看到的其他人匹配。评估您的目标,并为每个DevOps工作选择合适的候选人。

  1. 业务运营管理持续集成和持续交付:CI / CD的实施和收益

艾米丽·弗里曼(Emily Freeman)

DevOps文化的发展改变了开发人员构建和发布软件的方式。在敏捷思维方式出现之前,开发团队已被分配了一个功能,对其进行了构建,然后将其遗忘了。他们将代码扔给质量保证团队,然后由于错误将代码扔回去,或者将其移交给运营团队。运营部门负责在生产中部署和维护代码。

至少可以说,这个过程很笨拙,并且引起了很多冲突。由于团队存在孤岛,因此他们几乎不了解其他团队的运作方式,包括他们的流程和动机。

CI / CD代表持续集成和持续交付(或部署),旨在打破团队之间历来存在的壁垒,而是建立更顺畅的开发流程。

持续集成和持续交付的好处

CI / CD具有许多好处。但是,建立CI / CD管道的过程可能很耗时,而且还需要团队和执行领导的支持。

CI / CD的一些好处包括:

  • 全面的自动化测试:即使是最简单的CI / CD实现,也都需要一个强大的测试套件,该套件可以在开发人员每次将更改提交到主分支时针对代码运行。 加速的反馈循环:开发人员可以立即通过CI / CD获得反馈。在合并新代码之前,自动化测试和事件集成将失败。这意味着开发人员可以缩短开发周期并更快地部署功能。 减少人与人之间的冲突:自动化流程并减少团队之间的摩擦会鼓励开发人员更加协作的工作环境,在这种环境中,开发人员可以尽力而为:设计解决方案。 可靠的部署过程:在星期五下午回退部署的任何人都可以告诉您,顺利进行部署有多重要。持续集成可确保代码在到达最终用户之前就已经过良好的测试,并在类似生产的环境中可靠地执行。

实施持续集成和持续交付

CI / CD植根于敏捷方法论。您应该考虑将CI / CD实现为一个迭代过程。每个团队都可以从CI / CD版本中受益,但是自定义总体理念将在很大程度上取决于您当前的技术堆栈(所使用的语言,框架,工具和技术)和文化。

持续集成

实施持续集成(CI)的团队将代码更改尽可能多地合并回主分支或开发分支。 CI通常使用集成工具来验证构建并针对新代码运行自动化测试。

CI的过程使团队中的开发人员可以在代码库的相同区域工作,同时将更改保持在最低限度并避免大量合并冲突。

要实现持续集成:

  • 为每个功能编写自动化测试。这样可以防止将错误部署到生产环境中。 设置CI服务器。服务器监视主存储库中的更改,并在推送新的提交时触发自动测试。您的CI服务器应该能够快速运行测试。 更新开发者习惯。开发人员需要经常将更改合并回主代码库。这种合并至少应该每天进行一次。

持续交付

持续交付是CI的一大进步,因为开发人员将对代码的所有更改都视为交付。但是,与连续部署相反,发布必须由人员触发,并且更改可能不会立即交付给最终用户。

取而代之的是,部署是自动化的,开发人员可以通过一个按钮来合并和部署其代码。通过进行小的,频繁交付的迭代,团队可以确保他们可以轻松地对更改进行故障排除。

在代码通过自动化测试并生成之后,团队可以将代码部署到他们指定的任何环境中,例如QA或暂存。通常,在工程师将代码合并到生产发布分支之前,对等方会手动检查代码。

要实现连续交付:

  • 在CI方面拥有扎实的基础。自动化测试套件应随着功能开发而增长,并且每次报告错误时都应添加测试。 自动发布。一个人仍然可以启动部署,但是发布应该是一个一步的过程-只需单击一个按钮即可。 考虑功能标志。功能标记可隐藏特定用户的不完整功能,从而确保您的同行和客户仅看到所需的功能。

持续部署

连续部署需要连续交付,甚至比连续交付还要走一步。部署了通过整个生产发布管道的每个更改。没错:代码直接投入生产。

持续部署消除了部署过程中的人工干预,并且需要一个完全自动化的测试套件。

要实施连续部署:

  • 保持强大的测试文化。您应该将测试视为开发过程的核心部分。 记录新功能。自动发布不应超过API文档。 与其他部门协调。让营销和客户成功等部门参与进来,以确保顺利进行部署过程。
  1. BusinessOperations Management十大DevOps陷阱:您的软件项目失败的原因

艾米丽·弗里曼(Emily Freeman)

培育DevOps文化并选择支持DevOps方法的工具将使您的组织受益。 DevOps方法可激发您的工程团队,并将产品开发重点放在客户身上。

但是,每当您试图对组织的暗流进行大规模更改时,您都将面临挑战并必须面对挫折。当您转换为DevOps时,会发现独特的减速带,您和您的团队可以克服。

尽管您无法预测将要遇到的所有障碍,但本文可以为您准备十个最常见的DevOps陷阱。请记住,无论您采用的是DevOps的实践方式,您的优先级都应始终集中在人员,流程和技术上-按此顺序。

无法在DevOps项目中优先考虑文化

最重要的是,DevOps是一种文化运动。您在组织中建立的文化将成就或破坏您的DevOps实践。您的DevOps文化必须强调协作,信任和工程授权。如果您采用自动化,但错过了这些文化因素,则可能会失败。

实际上,工具并不重要。您所拥有的工具比以往更多。尽管他们解决的问题很重要,但是这些问题都无法与试图将开发人员和操作人员以及其他团队(如安全部门)团结在传统工程组织中相提并论。

DevOps旨在激励工程师(以及业务组)。它为每个人都可以学习,共享和成长奠定了基础。这种个人加速将推动您的整个工程组织更快地创建更好的DevOps软件。您团队中的工程师是您最有价值的资产。通过给予他们尊重和腾出空间做他们最擅长的事情来善待他们-设计解决方案。

在使用DevOps前进时将其他人抛在后面

内部为DevOps辩护将决定您为文化构建的基础类型。寻找肥沃的土壤。如果您行动太快,并且不让主要人员相信DevOps转型的重要性,那么人们将持怀疑态度观看您的动作,并在第一时间抓住机会向所有人展示您的错误。那不是一个有趣的职位,并且您永远都不想与等待您失败的人们一起开始这一旅程。

为了获得成功,您需要DevOps船上的每个人,甚至是反对者和怀疑论者。工程师可能会持怀疑态度。在这个行业工作了十年或两年之后,他们已经看到了许多想法和新方法不断出现。他们可以轻松地摆脱DevOps的视线,将其视为“解决同一旧问题的另一种失败方法”。如果实施不当,DevOps确实将是另一种失败的方法。您和您的团队必须说服其他人发挥潜力,并采取行动吸引所有人参加会议。

尝试说服主管人员数据和加速软件交付的潜力。但是工程师需要知道DevOps如何使他们的工作更愉快。向他们展示DevOps如何满足业务需求并减少软件交付流程中的摩擦。

只是要确保不要超卖这个概念。 DevOps挑战将会发生。 DevOps并非灵丹妙药,并且在开始时就需要进行大量工作,以确保团队创造一种学习文化,使工程师可以自由地犯错和成长。

在达到足够多的人相信DevOps的活动范围之后,您就可以继续获得组织及其内部人员的支持。

忘记在DevOps项目中调整激励措施

如果您不打算使激励措施与某些团队或特定工程师的期望保持一致,那么将会面临更多挑战。如果可以掌握,DevOps的真正工具就是授权。您想让您的工程师在不受干扰的情况下做好自己的工作。您雇用了才华横溢的工程师,因此请相信他们能够履行职责的能力。

例如,当开发人员进行紧急呼叫轮换时,一些组织将其设计为一种惩罚。 “您建立,支持就可以了”,这并不能使人们满怀幸福。相反,感觉就像是另一种孤立的责任。但是,人性化且分布均匀的呼叫轮换不仅使开发人员能够拥有自己的工作所有权,而且还为整个团队创造了学习机会。

在DevOps中,您不会因工程不完善而惩罚工程师;相反,您应该分担责任并建立一个重视学习的组织,并赋予每个人以好奇心,并参与他们所不熟悉的技术领域。

调整激励措施并创造合作机会将推动您改善产品并更好地为客户服务的目标。如果每个人都朝着通过DevOps为您的客户提供出色服务的目标达成目标,那么您将看到该团队开始蓬勃发展。

对您的DevOps项目保持沉默

DevOps是秘密和后台谈判的对立面。而是将所有内容摆在桌面上,并迫使您信任组织中人员的完整性。当您首次引入开放式交流时,冲突似乎会增加。没错相反,您只是第一次看到摩擦点。人们没有感到冲突足以掩盖事实,反而感到足够安全,可以提出自己的担忧并发表意见。

开放式沟通的一个重要方面是在整个产品生命周期(从构思到生产)中保持沟通。您必须在计划讨论,架构决策,开发进度更新和部署中包括工程师。

尽管这种对沟通的重视引起了更多冗长的讨论,但它也使工程师能够在其专业知识的核心领域之外获得可见性,从而使他们能够在建议其他人的同时,为他们做出明智的决策提供必要的建议。

让客户以及他们对所生产产品的期望成为一切讨论和决策的中心。如果您始终如一地实现这一目标,那么您一定会一起前进。

忘记衡量您的DevOps进度

衡量进度对于DevOps成功至关重要。在为DevOps辩护时,它使您可以验证怀疑的利益相关者,帮助您说服坚持不懈的主管,并提醒您的工程团队他们取得了多少成就。

进行单个更改之前,请创建基准。选择要在整个过程中跟踪的一小组数据。这些数据可以帮助您做出决定,并在遇到挫折时继续推动前进。可能的测量包括:

  • Emstakeployee的满意度:您的工程师喜欢在您的组织工作吗? 每月经常性收入(MRR):您从客户那里赚了多少钱? 客户票证:您的客户报告了多少个错误? 部署频率:您每周或每月进行几次部署? 平均恢复时间(MTTR):从服务中断中恢复需要多长时间? 服务可用性:您的应用程序的正常运行时间是多少?您是否正在达成当前的服务水平协议? 部署失败:有多少版本导致服务中断?有多少必须回滚?

微管理您的DevOps项目

破坏工程师的最快方法之一就是对其工作进行微管理。 Drive一书的作者Dan Pink认为,工作动机由三个因素驱动:

  • 自治 精通 目的

诸如高薪,奖金和股票期权之类的外部动机可能在短期内起作用,但长期的工作满意度更多地取决于个人和职业的成长。您希望您的工程师能够面对挑战,但又不会因压力而感到紧张。每个人的甜蜜点都不一样。这是DevOps的挑战,但是一旦做得正确,一旦改变就可以改变世界。如果您能唤起别人的热情,他们一定会热情工作。

信任可能是DevOps的挑战。对于DevOps组织而言,这绝对至关重要。您必须信任您的同事,同事,工程师,经理和主管。您还必须信任组织中各个部门的角色和责任-并不是说您永远不会发生冲突。当然,人与人之间会发生摩擦。但是,最大限度地减少这些时间并实现健康的冲突解决方案,才是专注于DevOps的工程团队与竞争对手之间的区别。

变化太多,速度太快

许多团队太快地进行了太多更改。人类不喜欢变化。从长远来看,DevOps是有益的,对常规工作方式的快速更改可能会给工程师带来麻烦。

DevOps的失败之一是,它意味着每个人都生活在彩虹和独角兽的未开发区域(新软件)中。听起来像是:“只要您能使您的团队一起工作,软件开发就会很容易!”这不是事实。软件工程是困难的,并且将永远是困难的。这是大多数工程师喜欢的一件事。您享受挑战。但是挑战应该是刺激性的,而不是压力性的。

DevOps并不旨在消除所有工程方面的知识难题。相反,它可以最大程度地减少人与人之间的摩擦,以便每个人都可以专注于自己的工作。如果您尝试过快地进行太多更改,您可能会发现自己处于全面起义的中间-二进制上的叛变。

选择差的DevOps工具

虽然您正在取消DevOps中工具的优先级(当然是这样),但工具仍然是一个因素。即使是DevOps的最不重要方面,也可以为您的整体成功做出贡献。您选择的工具应能解决工程团队遇到的问题,但也应与现有团队的风格,知识和舒适程度保持一致。

不要害怕尝试几种解决方案,看看哪种解决方案最合适。花费几周的时间来制作最低可行产品(MVP)或概念验证(POC)来测试工具是值得的。即使最终将其扔掉,“浪费”工程资源也比全力投入特定技术要好,直到一年后才发现它不合适。

您的DevOps专案担心失败

快速失败是一种简短的说法,它表示您应该不断地在过程中尽早发现问题,而不要花费大量时间和金钱。这是很多技术人员谈论但很少实施的东西,因为它要求在错误的爆炸半径较小且易于纠正的环境中进行快速迭代。很多时候,公司声称要采取快速失败的心态,而是开除第一位工程师以删除生产数据库。 (好像那里的任何工程师都从未删除过生产数据库...)

但是,在DevOps的环境中,失败比快速失败更好。失败表示您已进行监视,可以在情况影响客户之前很久就提醒您潜在的问题。失败还意味着您已对系统进行了分段设计,以防止崩溃的一项服务层叠为系统性中断。但是失败的组织也走得更远:他们不会责怪人。相反,他们寻找系统和流程中的故障。

Kaizen是日语中持续改进的词。在DevOps中,改善指的是不断改进您的流程。这不是一个有始有终的性感转型。目标不是从零到完美。相反,DevOps鼓励每天逐步地逐步改善工作。如果您每天晚上都下班,而仅仅因为一小部分工作会因为您而变得更好,您会不会感到满意?许多工程师都有这种感觉。

DevOps并未试图不惜一切代价避免失败,而是坚持以增长的思维方式。失败并不是愚蠢或准备不足的标志。这是增长的标志,也是创新的必要步骤。创新是您应该追求的结果,即使这意味着您偶尔会失败。

过于僵化会产生DevOps问题

DevOps并非规范性的,这既是最好的也是最坏的事情。如果您列出了实现DevOps必杀技的十个步骤,那么DevOps的实现将非常容易。如果真那么容易就好了!但是,人类却不能那样工作,因此,例如工程团队和大型组织中的人类团队会产生更多需要解决的复杂性。

尽管不存在建立DevOps组织的蓝图,但是您可以根据自己和团队的需要对方法进行调整。您了解您的组织,作为一名知识渊博的专家,您在应用基础知识时应该跳出思路。 DevOps中的某些功能将非常适合您。其他人会感觉就像穿着一件尺寸太小的外套。没关系。

您会犯错误。没有人是完美的。但是,如果您放手一点,赋予您的工程师权力,并信任您的团队,您将看到令人赞叹的成果。刚开始。请记住:请所有人参加会议,衡量您的进步,将文化置于技术之上,并让您的工程师去做自己最擅长的事情。

  1. 业务运营管理什么是DevOps?

艾米丽·弗里曼(Emily Freeman)

什么是DevOps?很难为您提供确切的DevOps处方-因为没有处方。 DevOps是一种指导软件开发的哲学,一种将人员置于流程之上,将过程置于工具之上的原则。 DevOps建立了信任,协作和持续改进的文化。

DevOps周期

作为一种文化,DevOps哲学以一种整体的方式来看待开发过程,并考虑了涉及的每个人:开发人员,测试人员,操作人员,安全性和基础架构工程师。 DevOps不会将这些小组中的任何一个放在其他小组之上,也没有将他们的工作重要性放在首位。相反,DevOps公司将整个工程师团队视为确保客户拥有最佳体验的关键。

DevOps从敏捷发展而来

2001年,有17位软件工程师会面并发表了“敏捷软件开发宣言”,其中阐明了敏捷项目管理的12条原则。这个新的工作流程是对在瀑布式(线性)流程中工作的团队的沮丧和僵化的回应。

按照敏捷原则工作,工程师无需遵循原始要求或遵循线性开发工作流程,在该线性工作流程中,每个团队都将工作移交给下一个团队。相反,他们有能力适应企业或市场不断变化的需求,甚至可以适应不断变化的技术和工具。

尽管敏捷以多种方式革新了软件开发,但它未能解决开发人员与运营专家之间的冲突。筒仓仍然围绕技术技能和专长进行开发,并且开发人员仍将代码交给操作人员进行部署和支持。

2008年,安德鲁·克莱·谢弗(Andrew Clay Shafer)与帕特里克·德博伊斯(Patrick Debois)谈了他对开发人员与运营人员之间持续不断的冲突所感到的沮丧。他们一起在比利时发起了首个DevOpsDays活动,以创建一种更好,更敏捷的方法来进行软件开发。敏捷的这种发展势不可挡,DevOps自此使全球公司能够更快(通常更便宜)生产更好的软件。 DevOps不是时尚。这是一种被广泛接受的工程哲学。

DevOps专注于人

任何说DevOps与工具有关的人都想向您出售产品。最重要的是,DevOps是一种哲学,专注于工程师以及他们如何更好地协同工作以生产出色的软件。您可以在世界上的每一个DevOps工具上花费数百万美元,但仍然与DevOps必杀技不相上下。

相反,请专注于您最重要的工程资产:工程师。快乐的工程师创造了出色的软件。您如何使快乐的工程师?好吧,您将创建一个协作的工作环境,在该环境中相互尊重,共享知识和对努力工作的认可会蓬勃发展。

公司文化是DevOps的基础

您的公司具有一种文化,即使它是靠惯性来发展的。这种文化对您的工作满意度,生产率和团队速度的影响比您可能想象的要大。

最好将公司文化描述为组织的潜移默化的期望,行为和价值观。文化可以告诉您的员工公司领导是否对新想法持开放态度。这是员工决定要提出问题还是将问题彻底清除的决定。

文化是要设计和完善的东西,而不是偶然的东西。尽管实际定义因公司而异,因人而异,但DevOps是一种以文化为核心的工程方法。

有毒的公司文化会在您的DevOps旅程开始之前就将其扼杀。即使您的工程团队采用DevOps思维方式,大型公司的态度和挑战也会渗入您的环境。

使用DevOps,您可以避免责备,建立信任并专注于客户。您可以赋予工程师自治权,并授权他们去做自己最擅长的事情:工程师解决方案。在开始实施DevOps时,您将为工程师提供时间和空间来适应它,使他们有机会更好地了解彼此,并与具有不同专业的工程师建立融洽的关系。

此外,您还可以衡量进度并奖励成就。永远不要怪失败。取而代之的是,团队应该不断进步,并赞扬和奖励成就。

通过观察过程和收集数据来学习

毫无意外地观察工作流是一种强大的技术,可用于现实地观察工作流的成功和挑战。这种观察是找到正​​确的解决方案的唯一方法,这些解决方案会在您的过程中造成瓶颈。

就像使用软件一样,在问题上拍一些Kubernetes(或其他新工具)并不一定能解决问题。在解决问题之前,您必须知道问题出在哪里。在继续操作时,您将收集数据-并不是衡量成功或失败,而是跟踪团队的绩效。您可以确定有效的方法,无效的方法以及下次尝试的方法。

说服力是采用DevOps的关键

将DevOps的想法卖给您的领导者,同事和员工并不容易。对于工程师来说,该过程也不总是很直观。一个好主意不应该只是自我推销吗?如果那么简单就好了。但是,在实施DevOps时要牢记的一个关键概念是它强调人员。

他所谓的沟通和协作“软技能”对于您的DevOps转型至关重要。要说服团队中和公司中的其他人采用DevOps,需要练习良好的沟通技巧。与同事就DevOps进行的早期对话可以使您成功迈向成功-尤其是当您遇到意外的减速时。

在DevOps中进行小的,增量的更改是无价的

DevOps强调以较小的增量方式进行更改,这一方面的根源是精益生产,它包含加速的反馈,持续的改进和更快的上市时间。

水是DevOps转换的一个很好的隐喻。水是世界上最强大的元素之一。除非人们看着洪水在他们面前升起,否则他们认为它是相对无害的。科罗拉多河雕刻了大峡谷。在数百万年的时间里,水慢慢地渗入石头,露出了将近20亿年的土壤和岩石。

你可以像水一样。成为组织中缓慢而无情的变化。这是李小龙(Bruce Lee)访谈中的那句名言,可以激发您的灵感:

像水一样变形,变形。现在,您将水倒入杯子中,它变成杯子了。您将水放入瓶中,它就变成了瓶。你把它放在茶壶里,它就变成了茶壶。现在,水会流动或崩溃。是水,我的朋友。

进行增量更改意味着,例如,您发现了问题并解决了该问题。然后,您修复下一个。您不会太快,也不会选择每场战斗。您了解,有些斗争不值得花费您精力或社会资本。

最终,DevOps并不是您可以采取的步骤的清单,而是一种可以指导您在开发过程中做出决定的方法。

  1. 商业运营管理DevOps for Dummies Cheat Sheet
  2. 商业运营管理以全额成本为基础的转让价格

马克·P·霍尔茨曼

公司可以将转移价格设定为全价(也称为吸收成本),即每单位可变成本和固定成本之和。为了确保销售部门获利,他们还可以添加加价。

假设HOO Water Company同时生产泉水和软饮料。 Clor部门生产泉水,Shpritz部门生产汽水。 HOO经理鼓励Clor和Shpritz合作,以便Shpritz部门使用Clor部门的泉水制作软饮料。

但是,Clor部门也将其水以每加仑0.75美元的价格出售给外部客户。为了最大程度地降低成本,Shpritz还可以从Spring以外的供应商那里购买水。

今年,Clor部门计划生产100,000加仑的泉水,但如果能够出售,则有能力生产更多的水。 Clor的水的可变成本为每加仑0.30美元,并且必须支付40,000美元的固定成本。

Shpritz部门计划生产6万加仑的汽水;它可以从Shpritz或外部供应商那里购买水。除水费外,Shpritz还必须为每加仑软饮料生产的调味料和其他添加剂支付每加仑0.40美元。 Shpritz还支付每年30,000美元的固定费用。 Shpritz的汽水售价为每加仑2美元。

首先,计算Clor的全部费用。生产100,000加仑的泉水所需的固定成本为40,000美元。这样,每单位的固定成本为0.40美元/加仑(40,000美元÷100,000加仑)。 Clor的可变成本等于每加仑$ 0.30;将其加到每单位固定成本上,得出的总成本为每加仑0.70美元(转让价格)。

下图说明了当Clor向Shpritz供应价值60,000的泉水时,每加仑的转移价格为$ 0.70,而其余的以每加仑$ 0.75的价格转移给外部客户时会发生什么。

image0.jpg

在这里,Clor从外部客户那里获得30,000美元的收入,从Shpritz获得42,000美元的收入。减去Clor的$ 30,000变动成本和$ 40,000的固定成本,得出的净收入为$ 2,000。 Shpritz的汽水收入为12万美元。

其中,它必须向Clor支付$ 42,000,并向其他变动成本支付$ 24,000。 Shpritz还必须支付价值30,000美元的固定成本,因此Shpritz的净收入为24,000美元。拥有这两个部门的HOO Water两种产品的总收入为26,000美元。

以全部成本为基础确定转让价格的决定可能会导致部门经理做出错误的决定,从而损害整个公司的盈利能力。假设另一家公司Malcolm Water以每加仑0.65美元的价格出售水。 (如果您想知道,Malcolm Water可以收取较少的水费,因为它的水质较差。)Shpritz部门必须在向Clor部门支付每加仑0.70美元或向Malcolm支付每加仑0.65美元之间进行选择。

一方面,Shpritz可能更愿意与Clor做生意,因为两家公司的母公司都相同。但是,如果HOO支付每加仑0.70美元的水来制造水,而从Malcolm买水仅支付0.65美元,那HOO岂不应该只是从较便宜的外部供应商处购买水,每加仑节省0.05美元吗?

不必要。下图说明了Shpritz试图通过从Malcolm购买其水来节省金钱时发生的惨败。

image1.jpg

Shpritz决定削减成本的决定使HOO Water的整体利润减少了21,000美元。毫无疑问:Shpritz的盈利能力提高了。由于外包决定将购水的可变成本从42,000美元降低到39,000美元,Shpritz的净收入增加到27,000美元。

但是,Shpritz的决定伤害了Clor,并最终降低了HOO Water的总利润。 Clor卖给Shpritz的42,000美元完全枯竭了。它的可变成本也从30,000美元降至12,000美元。

但是,Clor的固定成本为40,000美元,因此保持不变,这使Clor蒙受了22,000美元的损失。 HOO Water的整体利润从26,000美元降至5,000美元。基于全部成本的转让价格导致Shpritz做出了损害公司整体盈利能力的决策。

  1. 商业营销社交媒体营销如何在Instagram上找到您的联系人
Instagram的商业傻瓜

詹妮弗·赫曼(Jennifer Herman),埃里克·巴托(Eric Butow),科里·沃克(Corey Walker)

如果您不熟悉Instagram,那么您可能想知道从哪里开始。 Instagram(及其爸爸,Facebook)很乐意帮助您建立联系。您可以通过几种不同的方式找到人。

寻找你的Facebook朋友

Facebook在使Instagram成长方面具有既得利益,因此它试图鼓励您结识Facebook朋友并将其带到Instagram。这是您找人的简便方法。

要在Facebook上找到朋友,请执行以下步骤:

  1. 点击手机屏幕右下角的照片,进入您的Instagram个人资料页面。 点击左上方带有加号(可能还有红色数字)的人。 点击屏幕顶部的Facebook链接。 点击确定以确认您的Facebook登录。 屏幕上显示您在Instagram上有多少个Facebook朋友。 点击全部关注或关注。 要在Instagram上关注您的每个Facebook朋友,请点击全部关注。如果您希望更具选择性,尤其是因为您可能会推广产品或服务,那么您可能希望一个个地关注朋友。只需点击您想联系的每个朋友旁边的“关注”,然后继续滚动并关注!
找到Facebook的朋友Instagram

您的某些朋友可能已将其帐户设置为私人帐户。在这种情况下,点击关注后,您会看到请求。他们需要批准您才能查看他们的个人资料和帖子。

同步您的联系人列表

Instagram还可以将您与手机或平板电脑上存储的联系人联系起来。激活此功能后,您的联系人会定期与Instagram的服务器同步。 Instagram不会代您关注任何人,您可以随时断开联系人,以便Instagram无法访问他们。

与出于隐私目的而保持不变的连接相比,此功能在一开始可能是最好的。

要连接您的联系人,请按照下列步骤操作:

  1. 点击手机屏幕右下角的照片,进入您的Instagram个人资料页面。 点击带有左上角加号(可能还有一个红色数字)的小人物。 点击联系人链接。 下一个屏幕告诉您Instagram将找到您认识的人,您可以选择关注他们。 要继续,请点击连接联系人。 另一个弹出窗口询问Instagram是否可以访问您的联系人。 点击允许访问。 出现一个弹出窗口,要求您允许Instagram访问您的联系人。这是您取消决定允许Instagram访问您的联系人的最后机会。 点击确定。 弹出窗口消失,出现“联系人”屏幕。 通过点按全关注来关注您在Instagram上的所有联系人,或者通过点按每个联系人旁边的关注来选择要关注的联系人。
instagram联系人

如果您在某个时候改变了主意,并且想要禁止Instagram访问您的联系人,请点击个人资料页面上的滚轮图标,向下滚动到“设置”,然后点击“联系人”。点按“连接联系人”开关,将其恢复为白色,这将终止Instagram的访问。

  1. 商业运营管理为DevOps选择最佳的云服务提供商,功能和工具

艾米丽·弗里曼(Emily Freeman)

DevOps计划的成功与否很大程度上取决于遵循该过程,但是使用正确的工具也很重要。选择云服务提供商并非易事,尤其是当DevOps是您的驱动动力时。 GCP(谷歌云平台),AWS(亚马逊网络服务)和Azure有很多共同点,而不是彼此分开。

通常,您的决定更多地取决于DevOps团队对特定云提供商或当前堆栈的舒适程度,而不是云提供商本身。在决定迁移到云之后,下一个决定是选择适合您的DevOps需求的云提供商。考虑到DevOps原则评估云提供商时,需要考虑以下几点:

  • 可靠的记录。您选择的云应具有负责任的财务决策历史,并具有足够的资本来运营和扩展大型数据中心数十年。 合规与风险管理。正式的结构和既定的合规性政策对于确保您的数据安全至关重要。理想情况下,在签订合同之前先审核审核。 正面声誉。客户的信任绝对是关键。您是否相信您可以依靠该云提供商继续增长并支持不断发展的DevOps需求? 服务水平协议(SLA)。您需要什么服务水平?通常,云提供商会根据成本提供各种级别的正常运行时间可靠性。例如,99.9%的正常运行时间将比99.999%的正常运行时间便宜得多。 指标和监控。供应商提供哪些类型的应用程序见解,监视和遥测?确保您可以尽可能接近实时地获得对系统的适当了解。

最后,确保您选择的云提供商具有出色的技术能力,可以提供满足您特定DevOps需求的服务。通常,寻找

  • 计算能力 存储解决方案 部署功能 记录和监控 友好的用户界面

您还应该确认是否有能力在需要时实施混合云解决方案,以及对其他API和服务进行HTTP调用。

三个主要的云提供商是Google Cloud Platform(GCP),Microsoft Azure和Amazon Web Services(AWS)。您还可以找到较小的云提供商,当然也可以找到许多私有云提供商,但是您需要了解的大部分来自比较公共云提供商。

亚马逊网络服务(AWS)

与其他主要公共云提供商一样,AWS通过按需付费订阅提供按需计算。 AWS的用户可以订阅任何数量的服务和计算资源。亚马逊是目前云提供商中的市场领导者,拥有大多数云用户。

它在世界各地提供了一组强大的功能和服务。两个最著名的服务是Amazon Elastic Compute Cloud(EC2)和Amazon Simple Storage Service(Amazon S3)。与其他云提供商一样,可以通过API访问服务并提供基础架构。

微软Azure

在Microsoft以Microsoft Azure形式启动此云提供商之前,它被称为Windows Azure。微软将其设计用于实现其名称所暗示的功能-充当传统Windows IT组织的云提供商。但是随着市场竞争的加剧以及Microsoft开始更好地了解工程环境,Azure进行了适应,发展和发展。

尽管可以说它仍然不如AWS健壮,但是Azure是一家专注于用户体验的全面的云提供商。通过各种产品发布和收购(尤其是GitHub),Microsoft在Linux基础架构上进行了大量投资,这使其能够为更广泛的受众提供更强大的服务。

Google Cloud Platform(GCP)

Google Cloud Platform(GCP)在三大主要公共云提供商中占有最小的市场份额,但在将近二十个地理区域中提供了大量的云服务。

GCP最吸引人的方面可能是它为用户提供了Google内部使用的相同基础架构。该基础架构包括功能强大的计算,存储,分析和机器学习服务。根据您的特定产品,GCP可能具有AWS和Azure中缺少(或较不成熟)的专用工具。

在云中查找DevOps工具和服务

从字面上看,主要的云提供商可以使用数百种工具和服务。这些工具和服务通常分为以下几类:

  • 计算 存储 联网 资源管理 云人工智能(AI) 身分识别 安全 无服务器 物联网

以下是所有三个主要云提供商中最常用的服务列表。这些服务包括应用程序部署,虚拟机(VM)管理,容器编排,无服务器功能,存储和数据库。

包括其他服务,例如身份管理,块存储,私有云,秘密存储等。它远非详尽无遗,但可以为您奠定坚实的基础,因为您可以开始研究各种选择并了解云提供商的不同之处。

  • 应用程序部署:平台即服务(PaaS)解决方案,用于以多种语言(包括Java,.NET,Python,Node.js,C#,Ruby和Go)部署应用程序 Azure:Azure云服务 AWS:AWS Elastic Beanstalk GCP:Google App Engine
  • 虚拟机(VM)管理:基础架构即服务(IaaS)选项,用于在Linux或Windows上运行虚拟机(VM) Azure:Azure虚拟机 AWS:Amazon EC2 GCP:Google Compute Engine
  • 托管Kubernetes:通过流行的业务流程协调器Kubernetes实现更好的容器管理 Azure:Azure Kubernetes服务(AKS) AWS:适用于Kubernetes的Amazon Elastic Container Service(ECS) GCP:Google Kubernetes引擎
  • 无服务器:使用户能够创建无服务器功能的逻辑工作流 Azure:Azure功能 AWS:AWS Lambda GCP:Google云功能
  • 云存储:具有缓存的非结构化对象存储 Azure:Azure Blob存储 AWS:Amazon S3 GCP:Google云存储
  • 数据库:SQL和NoSQL数据库,按需 Azure:Azure Cosmos数据库 AWS:Amazon Relational Database Service(RDS)和Amazon DynamoDB(NoSQL) GCP:Google Cloud SQL和Google Cloud BigTable(NoSQL)

在探索三个主要的云提供商时,您会注意到一长串的服务。数百种选择可能会让您不知所措。如果偶然地找不到所需的东西,那么市场可能会提供类似的东西。市场是独立开发人员提供插入Azure(由Azure,AWS或GCP托管)的服务的市场。

下表列出了大多数(如果不是全部)云提供商所提供的其他服务。

服务类别功能性
块存储存储区域网络(SAN)环境中使用的数据存储。块存储类似于将数据存储在硬盘上。
虚拟私有云(VPC)逻辑上隔离的共享计算资源。
防火墙功能控制流量的网络安全。
内容交付网络(CDN)基于用户位置的内容交付。通常利用缓存,负载平衡和分析。
域名系统(DNS)将域名转换为浏览器的IP地址。
单点登录(SSO)使用相同的凭据对多个系统或应用程序进行访问控制。如果您使用Google,Twitter或GitHub凭据登录到独立的应用程序,则说明您已使用SSO。
身份和访问管理(IAM)基于角色的用户访问管理。预定角色可以访问一组功能;为用户分配了角色。
遥测,监视和记录提供有关性能,服务器负载,内存消耗等的应用程序见解的工具。
部署配置,基础架构和发布管道管理工具。
云壳通过浏览器中的命令行界面(CLI)进行Shell访问。
秘密存放安全存储密钥,令牌,密码,证书和其他机密。
消息队列动态扩展的消息代理。
机器学习(ML)面向数据科学家的深度学习框架和工具。
物联网设备连接和管理。