基础架构是IT业务的工作和利润所依赖的。 从开发人员的计算机到生产的所有代码过程都取决于服务器,软件和外部服务的不间断运行。 如果基础架构无法正常运行,则企业将损失利润。
初创企业对基础设施的关注度不高-他们需要削减产品,直到投资者的钱用光为止。 大公司已不再努力-我们在这里有成千上万的任务,我们需要工作。
了解IT公司的基础架构也是一种产品,它有一个目标,有必要考虑成本和跟踪指标,而这通常是无法实现的。
您知道您的基础架构成本:服务器,软件,外部服务吗? 您如何看待它的成本? 如果发生故障或没有备份,您将损失多少? 来自Skyeng的
Artyom Naumenko (@entsu)知道这些问题的答案。 他既在该州有两家开发商的公司中工作,又在拥有一千名员工的公司中工作。 他目前负责管理Skyeng的基础设施,同时管理Skyeng儿童学习中心。 Artem会告诉公司如何建立基础设施,如何从中获利以及不应犯哪些错误。
关于公司
Skyeng是一家年轻的公司,只有6岁。 但是一直以来,它每年都在增长3倍。

这意味着基础设施每年也增长三倍。 今天,我们有100台服务器,一年300台,两台900台,这并不容易,我们正在努力确保这种增长。
Skyeng是一家IT公司。 该公司还很年轻,没有很多遗产,所有东西都是PHP堆栈的标准配置:
- 的PHP
- 角度的
- PostgreSQL的
- 一切都在运转的Linux。
大约一百名开发人员。 该公司正在发展,到今年年底将会有更多。

我们的大多数服务都是由我们编写的,并且公司的整个业务都在自己的基础架构上旋转。 由6人组成的基础架构团队进行监视。 我们提供从开发人员的计算机到生产的所有代码执行过程。 该代码是在我们的虚拟机和服务器上开发,部署的-在我们配置的Jenkins和我们的部署工具的帮助下,生产操作也在我们管理的服务器上进行。
该公司的目标是在2年内增长7倍。 基础设施应以类似方式增长。 为了实现这一目标,devops团队的每个成员都像牛一样工作。 每年我们应该比去年好3倍,将来要好7倍。 在Skyeng,没有人对“尝试过但失败了”的美丽故事感兴趣。 结果很重要,而不是过程。
基础设施建设原则
任何IT公司的业务都依赖于基础架构。 如果行不通,则该业务行不通,可能是Yandex,Amazon或Skyeng。 我们意识到这一点,因此,对于出色的基础架构而言,重要的第一件事就是
设定目标 。 听起来像是Tony Robbins的演讲,但没有目标,将无济于事。
必须设定目标有两个原因。
- 如果您有目标,您将朝着目标前进。
- 如果没有目标,那就无处可去。 即使您来到某个地方,您也将无法从实现的目标中获得成功。
如果没有目标,就不可能实现。
公司问题
仅设定目标还不够。 该公司的目标是在2年内增长7倍。 在成长过程中会出现问题。 它们的变化取决于公司的规模和类型。
公司和人员的第一类是创业公司 。 在下面的图片中,“典型的初创企业”-一个木筏和一个小团队正试图在某处游走。 初创公司的优势在于,团队中的每个成员都了解团队的前进方向,谁在做什么以及他为实现一个共同目标而必须做什么。

创业公司的问题是缺乏资金。 当大量任务落在队伍上时,他没有时间去问自己一个助手。 通常他会得到答案:“为什么? 您可以管理所有规则-继续!”
下一种是大型船只 。 某些船员看不到航行的地方。 他们履行自己的小职能,例如,将煤扔进炉子,却不了解全球正在发生的事情。

船舶的主要问题是需要越来越多的任务。 一百个客户,对于每个问题,不清楚如何确定优先级,总体情况是模糊的,但是我们正在“努力”! 时间永远不够,需要越来越多的任务。 一个团队永远无法建立将煤扔进炉子以完成重要任务的输送机。
第三类是领导者 。 基础架构管理者的主要问题是昂贵的服务器,昂贵的基础架构以及对基础架构成本通常如何影响业务收入的了解。 经理需要以某种方式回答以下问题:为什么服务器数量如此之多,如果我们付出更多,我们是否会撒谎,以及如果付出更少,那将会发生什么。

基础设施目标
我将在公司全球目标的背景下描述我们在Skyeng中为基础架构设定的目标以及如何实现这些目标。 基础设施有4个目标。
跟踪预算 。 公司是一种赚钱的商业机构,所以我们必须计算它们。
快速解决任务 。 他们没有按时举起服务器,该公司的新服务将无法启动,也不会赚钱。 备份未及时恢复-再次,某些操作将不起作用,并且公司将损失利润。
开发商的便利 。 此项需要单独说明。 去年,Skyeng在开发上花费了6亿卢布。 如果我们作为基础架构将开发人员的速度提高至少1%,我们将获得600万美元的收入;如果让两个人全职工作,这将使生产力提高1%,那么它将是可获利的。
长期的结果 。 我们不应该紧张一次,做一些很酷的事情,以便每个人都开心,然后一切都会崩溃。 我们所做的工作应该持续很长时间。
为此,需要制定度量标准。 它们必须是可测量的,否则不是目标,而是胡扯。 目标应以数字和图形表示。
让我们更详细地考虑这些项目。
预算
按公司衡量基础架构是公司支出中用于基础架构的部分。

Skyeng是一所学校,主要价值是一堂课。 每节课平均花费800卢布。 其中12个用于基础架构:服务器和开发人员。

基础设施的百分比正在下降,我们正在努力。 它使我们,企业和客户受益。 您可以租用便宜的服务器,而不必备份和删除此计划。 但这是错误的,不仅要考虑基础设施成本,还必须考虑基础设施成本和跌落带来的预期损失。
对于每项服务,我们都会考虑每小时因坠落而损失的金钱。 我们会详细记录何时提供什么服务,以及在此方面造成了多少损失。
过去一年中跌倒造成的损失的时间表。2018年第二季度损失最大-向Roskomnadzor打招呼! 去年的基础设施支出为2000万,下降的支出为500万,如果我们保留所有一切,本来可以使我们从Roskomnadzor中解脱出来,但仍将亏损1500万。
业务连续复制所有内容都是无利可图的。 必须思考要复制什么,不要复制什么。
我们复制那些额外服务器或数据库的成本低于掉落的预期风险的服务。
快点做
我们测量设置当天完成的任务的百分比。 基础结构附带了许多任务,这些任务现在和现在都需要解决。 其他无法胜任工作的团队则依赖于此。 耗时数周的大型任务将单独考虑。
在设置当天安排任务。根据时间表,在设置当天完成任务的可能性约为80%。 我们看到了这张图,并相信一切都很棒。 但是其他团队可能不会这样认为并做出不同的评估。 因此,我们对其他团队进行调查。
投票示例。我们会通过常见的Google表格进行调查,并提出问题。 开发人员和我们的其他客户会定期对其做出回应。
基础设施速度调查的结果。民意测验很好地描述了当前的状况,但对未来的描述却不尽如人意。 为了评估将来发生这种情况的可能性,我们测量了使用拉取请求执行的任务数。 这将在一两年内受益。
六个月前,我们决定采用“基础架构即代码”。 在这里,我们测量对基础架构的所有请求:填写转储或一段日志,修复产品上的nginx点或创建新服务器。 这些都是请求,我们根据拉取请求的数量对它们进行评估。 将来,我们希望在请求请求的帮助下解决任何请求,或者根本不问我们。
我们知道,“基础架构即代码”方法提供了三个主要好处:
我们需要这三个中的所有三个,因此我们以这种方式移动并衡量我们之间的距离。

对于日志,有一个可视化系统,对于发布访问,有Terraform。 您可以创建一个系统,其中的所有内容都将实现自动化。 理想情况下,此图表应为100%。 使用代码进行任何调用时,我们都可以快速执行该代码并将其部署到另一个基础架构中。
对开发人员来说很方便
这对Skyeng非常重要。 现在我们有100个开发人员,到年底将有120个开发人员。有效地工作很重要。 我们想聘请员工是有原因的,我们需要那些可以改善公司的人。
对开发人员而言,唯一且主要的指标是对基础架构团队满意度的调查结果。
总的来说,一切都很好。最重视我们。 但是,如果您问他们对开发环境有多满意,那么一切都不会那么令人愉快。

开发环境是我们的头疼。 这是一个需要改进的增长点。 因此,我们亲自采访回答最差的员工:是什么问题,什么减慢了速度,或者对他没有用? 知道正在发生的事情可以改善事情。
除非您知道发生了什么,否则您将无法更改任何内容。
长期结果
只需集中精力就可以增加我们的任何指标。 例如,要增加当天完成的任务的百分比,您可以删除所有内容并仅解决已到达的任务。 您可以使用代码完成所有任务。
例如,在某个城市“ N”中,所有的努力都花在了道路的开发上。 它们在城市中形成平坦,宽阔,多车道的轨道。 今年第一,第二年很酷。 但是所有其他区域都在退化:没有可及的环境,砍伐树木,有更多的汽车,没有足够的停车场,环境已经沿着这些道路离开了城市。 在5到10年内,邻近的城市将已经出现自动出租车和高架环路,但是这里仍然只有平坦的道路。 显然,这是通往无处可去的道路。
我们不应该允许这样做,我们需要向前看。 因此,我们衡量在开发和支持上花费的时间。

该图显示,最近几个月很少花时间在开发上。 对我而言,作为领导者,这表明需要人员或流程自动化。 根据时间表,我什至可以计算出所有资源将花多少个月才能得到支持,而当我们没有及时赶到时就会崩溃。
有益的任务
我们设定了目标并考虑了指标,但是直到我们开始动手实施指标之前,一切都不会改变。 您不仅需要做某事,还需要在指标和时间方面最赚钱的任务。
随着时间的流逝,一切都会变得简单。
可以比较任何两个任务的时间:第一个任务需要一周,第二个任务需要3个小时。 它不取决于任务来自哪个部门。 指标更加复杂-其中有很多。 如何计算哪个任务更有利可图:第一个或第二个,如果一个优化了一些指标,而另一个优化了另一个?
对于我们自己,我们可以简单地决定它-我们提出了一个描述所有任务的通用单元。
我们的通用单位是卢布 。 我们通过将带来的利润来评估任何任务的收益,并通过完成该任务所花费的时间进行分摊。 因此,我们根据指标(卢布)和时间来评估每个任务。
我们的季度任务。在下面的屏幕截图中,最后两列指示我们将在该任务上赚多少钱,以及我们将花费多少时间。 基础架构团队通过改善开发人员的条件,优化公司的流程和服务器的运营来赚钱。 我们之所以选择Docker,并不是因为它很酷,而是因为我们认为它有利可图。

我们衡量的其他指标。
进阶:
- 支持百分比;
- PR任务百分比;
- 每天关闭的任务百分比。
延误:
这只是指标的一部分,我们有更多指标。
我们不评估的任务
我们不评估错误。 如果我们采用某种系统来提供支持和支持,那么我们仅仅因为不应该存在这些错误而修复了这些错误。
支持同样如此。 我们通常会估算花费在支持上的时间是多少,我们不允许它花太多时间。 我们从整体上评估每个系统的优缺点。 容易完成的任务或非常紧急的任务,我们不予评估。 我所说的所有内容都不适用于他们-我们只是去做。
为什么评估任务有用且重要
奖项与成就 。 开展业务时,您始终需要讲金钱的语言。 他只懂钱。 如果您说自己有一个项目,就给它加油,它将带来500万,并要求每支团队获得一百万的奖金-他们会同意你的。 对于企业来说,这是可以理解的。
招聘 不提供企业雇用员工和引进新技术的方法,而是提供共同赚钱的条件。 那他一定会遇到你的。 至少,讨论将不会沿着``您有时间还是没有时间,您需要一个人或没有''的路径开始,但是您需要一个人的项目有多酷,他会管理它,并且这个项目真的会带来数百万人。 对话将朝着不同的方向进行,您自己将事先了解该项目是否值得花费,还是将其丢弃并寻找另一个项目更容易?
成本优化 。 如果我们了解花在什么上面的钱,我们可以轻松地将其计算出来并优化支出。
行政决定 。 我最近意识到的这个项目。 基础架构开始发展,我决定将团队划分为多个子命令。 提出了如何精确地做到这一点的问题,目的是增加人员配备。 该解决方案基于指标而出现-将我们基础架构的所有指标分为多个块,每个团队负责其自己的指标。 我有3个子命令。 对于每个人,共同的责任领域是可以理解的,并且其中的所有参与者都了解他们个人应负责的事情。 这是一个可以理解的责任领域。
为了使其酷
- 设定目标-没有目标就无处不在。
- 将目标分为指标和衡量指标。
- 评估任务并完成最酷的任务。
那您一定会成功的!
在DevOps Conf 2019上 ,我们将分别讨论“基础架构即代码”。 该方法的未来,Terraform模式,BareMetal基础架构和Kubernetes的部署和管理是有关该主题的四篇论文。 将于9月30日至10月1日在莫斯科举行一次会议,会议将工艺与技术融合在一起。 时间表已准备就绪,您可以学习程序 ,摘要或订票 。
订阅时事通讯和电报频道 ,并随时关注新闻和新报道。