过去十年已经看到云计算巨大崛起。据Gartner公司(Gartner)公司称,全球公共云服务市场预计将在2020年以2020年增长17%至2664亿美元,从2019年的227.8亿美元起。
云计算使世界上有一些最大的公司,例如Airbnb,Netflix和优步,重新发明并主宰其行业。
这些公司基于云服务的产品,利用云本机技术,以便比他们的竞争更快,更适应。许多其他企业也通过了云本地,并将概念带到了他们的内部内部应用程序。
理解和选择正确的云本机技术对于增加开发速度和花费更少的时间和金钱开发和维护工具和基础设施至关重要。这篇文章描述了应该知道的云本机工具,并推荐您可以开始使用的特定项目。
什么是云原生?
云原生是关于速度和敏捷性。它是关于利用云,以便更快地解决业务挑战并降低其成本。云原生计算基金会(CNCF)提供了优秀的官方定义:
Cloud Native Technologies Empows组织在现代,动态环境中构建和运行可扩展应用,例如公共,私人和混合云。集装箱,服务网格,微服务,不可变基础设施和声明性API示例了这种方法。
这些技术使得松散耦合的系统是弹性,可管理和可观察的。结合强大的自动化,他们允许工程师经常和可预测地以最小的工作量进行高冲击变化。 |
简而言之,云原生的目标是以业务需求的步伐向用户或客户提供软件产品。
价值
云原生技术提供以下优势:
- 速度:云原生应用程序可以快速开发和部署,从而导致更快的市场时间。许多云提供云本机组件,使托管这些应用程序简单。此外,云原生工具严重依赖于抽象,使其更加通用,并允许团队在未经本公司共享运行时运行他们的服务。因此,组织必须处理更少的开销。
- 可扩展性和可用性:处理100客户的云原生应用程序可以无缝扩展到数百万客户服务。资源始终适应当前需求,从而节省了传统,静态缩放资源的资金。此外,诸如自动故障转移和蓝绿色部署之类的技术被烘焙到云原生工具中。
- 质量:云原生应用程序是用不可变性和思想解耦的。这使得应用程序稳健且舒适地维护,这增加了软件的质量。由于最受欢迎的云原生技术是开源并由CNCF提供支持,因此公司可以避免供应商锁定并受益于社区的维护和开发工作。
利用云计算使公司能够享受巨大的利润,并尽量减少运营成本和劳动。
许多大型组织也是云的驱动程序之一,而微软,谷歌和亚马逊提供自己。
如何成为云原生
要迁移到云原生系统,因此需要一种如下所结构化的方法:
- 垂直:选择一个没有关键任务和启动/迁移到云原生技术的服务。
- 水平:专注于单个云原生能力,例如持续集成(CI)或连续交付(CD),并在所有现有服务中部署它。
选择非关键任务系统对于减轻风险至关重要,同时最大化成功迁移的机会。
云原生工具
以下是云原生工具列表。利用全套工具的公司通常可以更快地提供更快,摩擦较少,发展和维护成本较低。
1. 微服务
微服务将产品功能分为可以单独部署的单元。例如,在传统的云预端部署中,通常具有管理API和客户交互的单个网站服务。使用微服务,您将本网站分解为多个服务,例如结账服务和用户服务。然后,您可以单独开发,部署和扩展这些服务.Aditionally,微服务通常是无状态,利用12个系数应用程序允许公司利用云原生制度优惠的灵活性。
推荐技术:Node.js 其它技术:Kotlin,Golang
2. 持续集成/持续部署
持续集成/持续部署(CI / CD)是一种基础架构组件,用于响应版本控制事件(如Pull请求和合并),支持自动测试执行(和可选部署)。CI / CD使公司能够实施单元测试,静态分析或安全分析等优质栅极。最终,CI / CD是云本机生态系统中的一个基础工具,可以导致实质性的工程效率和减少的误差计数。
推荐技术:Gitlab CI / CD 其它技术:GitHub Action
3. 容器
容器在云本机生态系统的核心,通过简化开发人员操作来实现无与伦比的速度和质量增益。使用带有Docker等工具的容器,团队可以在提供统一和通用执行层的同时指定其系统依赖项。此图层使基础架构团队能够操作单个基础架构,例如集装箱乐队,如Kubernetes。工程团队可以将容器图像存储在容器注册表中,在大多数情况下,还提供漏洞分析和细粒度的访问控制。流行的服务是Docker集线器,Google集装箱注册表或码头。
推荐技术:Docker 其它技术:PODMAN,LXD
4. 容器编排
容器编排是推出和管理大量容器的工具,并删除特定于语言或特定团队的部署策略的工具。它们允许用户指定容器镜像或镜像组和某些配置。最后,编排将这些规范带到运行工作负载中. 容器编排启用基础架构团队来维护单个基础架构组件,可以执行遵守OCI规范的任何容器。
推荐技术:Kubernetes 其它技术:谷歌云
5. 基础设施即代码
作为代码的基础架构是一种在版本控件下放置云配置的策略。通过通过管理面板配置它们,公司通常可以手动管理其云资源。但是,手动配置使其难以跟踪更改。基础架构作为代码通过将云资源定义为代码并将其放在版本控件下来解决这个问题。在代码中的基础架构配置中更改并通过公司的部署过程提升,可以包括同行评审,CI和CD。版本控件提供了审核日志,显示谁更改了哪些资源和何时。
推荐技术:Terraform 其它技术:Pulumi
6. 密钥
密钥管理对于云本机解决方案至关重要,但往往忽略了较小的尺度。密钥是私有的,例如密码,私钥和API凭据。至少,密钥应该被加密并存储在配置中。成熟解决方案启用临时数据库凭据或旋转凭据以发出,使密钥管理更加安全。寻找密钥管理的拟合解决方案对于云原生应用至关重要,因为水平的容器服务规模,并且可以在许多不同的机器上安排。最终,忽视密钥管理的组织可以增加凭证泄漏的面积。
推荐技术:Vault 其它技术:Sealed Secrets
7. 证书
通过TLS的安全通信不仅是最佳实践,而且是必要的。这在基于容器的解决方案中尤为重要,因为许多不同的服务可能在同一物理机器上运行。如果没有加密,则获得访问主机网络的攻击者可以读取这些服务之间的所有流量。至少,可以手动更新云本机部署的证书,这变得无法掌握,这就是为什么某种自动化解决方案至关重要的原因。
推荐技术:cert-manager 其它技术:谷歌托管证书
8. API网关
API网关是具有超出传统反向代理的功能的反向代理,例如Apache和Nginx.api网关支持:
- 像GRPC,HTTP / 2和WebSocket等协议
- 动态配置
- 相互TLS.
- 路由
- 弹性原语,如速率限制和电路断开
- 指标形式的可见性
推荐技术:Ambassador 其它技术:KONG
9. 日志
日志是可观察性的基础支柱。对于团队来说,日志记录通常非常熟悉并且可以访问,这使其成为介绍可观察性的一个很好的起点。日志对于了解系统中发生的事情至关重要。Cloud Native Tools强调指标的时间序列,因为它们比存储器更具成本效益。但是,日志是一个可宝贵的调试工具,并且某些系统仅通过它们观察,这使得记录要求。
推荐技术:ELK 其它技术:Loki
10. 监测
监控系统将重要事件存储为时间序列。监视数据被聚合,这意味着您不存储所有事件。这使得云本机系统具有成本效益,并且对于了解云本机系统的状态并回答这些问题至关重要:
- 发生了多少操作?
- 操作的结果是什么(成功,失败或状态代码)?
- 操作需要多长时间?
- 队列深度或线程池等重要资源有哪些?
您可以为监视指标分配不同的尺寸,以便在单个机器,操作系统,版本等上进行性能。
推荐技术:Prometheus / Grafanaal 替代技术:DATADOG
11. 警报
警报使日志和度量标准可操作,通知操作符,并使用时间序列度量对。例如,警报可以在HTTP 500状态代码增加时或当请求持续时间增加时通知团队。警报对于云本机系统至关重要。没有警报,你没有收到事件通知,在最坏的情况下,这意味着公司不知道有问题。
推荐技术:Prometheus Alertmanager 其它技术:Grafana 警报
12. 追踪
Cloud Native Technologies减少了发射和扩展服务的开销。因此,团队经常发起更多的服务,而不是云预处理。跟踪使团队能够监控服务之间的通信,并使该事务中的整个最终用户事务和每个阶段轻松地进行可视化。出现性能问题时,团队可以看到发生了哪些服务错误以及交易的每个阶段正在拍摄的时间。跟踪是一个下一个级别观察和调试工具,可以通过允许团队更快地调试问题来显着减少停机时间。
推荐技术:JAEGER 其它技术:Zipkin
13. 服务网格
服务网格是云网络的瑞士军刀。它们可以提供动态路由,负载平衡,服务发现,网络策略和弹性原语,例如断路器,重试和截止日期。服务网格是云本机体系结构负载平衡的演变。
推荐技术:Istio 其它技术:Consul
保持竞争与云原生
Cloud Native Tools帮助公司通过提高质量和可用性,同时降低市场的时间。
选择合适的工具的公司可以通过增加的交付速度和敏捷来保持竞争优势。
采用云本机技术可能看起来令人生畏,但只需记住,以单一技术开始就可以提供相当大的好处。
原文链接:
https://medium.com/quick-code/how-to-become-cloud-native-and-13-tools-to-get-you-there-861bcebb22bb