如何在6个月或更短时间内成为DevOps工程师,第6部分:运行


【译文】原文地址

快速回顾

让我们快速回顾一下我们在DevOps之旅中的位置。
在第1部分中,我们讨论了DevOps文化和所需的基础。
在第2部分中,我们讨论了如何正确地为代码部署提供基础设施。
在第3部分中,我们讨论了如何保持代码管理。
在第4部分中,我们讨论了如何进行软件打包。
在第5部分,我们讨论了如何部署代码。
作为参考,这是我们在整个DevOps计划中的位置:


如果在每个部分都化了一个月的时间来学习对应的技术,这应该是你DevOps之旅的第5个月。

你准备好执行你的代码了吗?

Ok,我们已经编写好了代码,打包并部署好了。

在这里,我会忽略将代码部署在虚拟机上的方式(例如EC2),而将重点放在容器上。

为什么呢?

因为维护虚拟机镜像,以及到处拷贝和运行虚拟机镜像是很困难的。除非你必须使用这种方式。

但是我强烈建议您考虑是否真的需要这样做,如果不需要,尝试将您的微服务重新构建为容器或无服务器服务。

注意:如果以上无法做到,可能是因为你选择了以单体方式来开发、打包和部署你的软件,那可以考虑用虚拟机镜像模式。如果必须以非云原生的方式来运行负载或商业软件的话,本文并非聚焦在这方面上。

OK,如果我们已经把容器镜像打包好了,我们如何运行它们呢?

运行容器

你能做的最简单的事情就是执行docker run image并结束一天工作。但这不是一个好主意。为什么呢?

因为发生如下情况咋办?

  • 如果容器挂了
  • 如果你需要有多个容器来处理负载?
  • 如果要实现零当机部署?
  • 如果你想对微服务可视化
  • 如果你想实现CI/CD流水线方式发布
  • 等等
    换句话说,当您需要构建一个真正的企业级分布式应用程序时,会发生什么?

显然,像docker run这样比较底层的东西并不能解决问题。

注意:docker-compose也有类似问题。也不适合生产环境部署方式,它用途更多在于本地和快速测试小规模部署。

那我们该如何才能解决上面的问题呢?

容器编排技术来拯救。

容器编排概述

类似生活中其他事情,这个问题不止一个答案。

首先最明显的答案是kubernetes。

Kubernetes诞生于谷歌的一个内部项目,现在几乎是容器编排事实上的标准。

而且,如果你是跑在以下环境下,几乎是唯一答案:
1、私有数据中心
2、Google云
3、微软Azure
4、其他公有云
然后如果你是运行在AWS上,你还可以选择ECS。

注意:严格来说还不完整。你还可选择Hashicorp的Nomad(带给你Terraform的公司),Docker的Docker Swarm。问题是,这些都是非常小众的平台,很少被采用,所以为了快速的职业发展而忽略了它们。

不管怎样,回到ECS。AWS弹性容器服务(AWS Elastic Container Services, ECS)起步相当简单,可以与AWS生态系统的其他部分紧密集成,可以很好地做一些事情。简而言之,它几乎是kubernetes的最大竞争。

然而,单纯从职业发展的角度来看,Kubernetes无疑是一个更好的选择。尽管我愿意打赌99%的使用AWS的企业会对ECS很满意。

所以,现在你要做个选择。如果你对这一领域是完全陌生的,那就磨练自己,在Kubernetes的土地上坚持。要想在一个志同道合的DevOps工程师团队之外独自学习并不是一件容易的事情,他们可以在你的旅程中为你提供支持。

但这绝对是可能的,特别是有了谷歌和AWS的免费产品、YouTube / Udemy教程。

注意:如果你选了这条路,我建议你从GKE(谷歌kubernetes服务)免费版开始。亚马逊的托管Kubernetes (EKS)需要花钱,尽管它适合生产环境负载,但并不是一个好的起点。我对Azure的了解还不足以推荐它。

然而,如果你不是这个领域的新手,并且实际上在AWS生态系统中工作,我的建议是将你的微服务打包,将它们部署到ECS, 然后享受良好的睡眠,并同时建造一个世界级的Kubernetes平台。

你可能感兴趣的:(如何在6个月或更短时间内成为DevOps工程师,第6部分:运行)