Pure Storage收购Portworx
Veeam收购Kasten
VMware收购Octarine
Mirantis收购Lens IDE
思科收购Banzai Cloud
New Relic收购Pixie Labs
云原生市场趋于整合
........
以上是过去一年云原生行业发生的并购案,可以看到,各家厂商都在积极地拥抱云原生、抢占市场先机,云原生极大的释放了云的红利,代表着云的新发展趋势。正确的选择云原生技术有助于提高应用的开发速度,减少运维的复杂性,并提高基础设施的利用率。
本文将介绍13种实现云原生所需的工具。
什么是云原生?
云原生是利用云的优势来更快地处理业务并降低IT成本,云原生计算基金会(CNCF)对云原生的官方定义是:
“云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格(Service Mesh)、微服务、不可变基础设施和声明式API。
这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。”
简而言之,云原生的目标就是根据需求快速、敏捷地向用户交付软件产品。
为什么云原生很重要?
云原生应用程序只需要小型团队就可以快速构建,它部署的平台可进行扩展和硬件解耦,这为企业跨云环境提供了极大的敏捷性、灵活性和可移植性。
(1) 竞争优势
云原生开发能够节省IT成本,这意味着团队有更多的精力去拓展业务。在软件时代,能够及时响应客户需求,快速构建和交付应用程序的企业更有竞争力。
(2) 弹性扩展
传统基础架构在发生故障时,服务很可能会受到影响。在云原生系统中的弹性架构可以快速扩展,这有助于企业构建一种保持在线的系统,而不用考虑环境中的问题。
(3) 灵活性
借助支持云原生开发的平台,企业无需修改即可构建任何云上运行的应用程序。不受时间空间限制,企业可以在最有商业意义的情况下运行应用程序和服务,避免了云锁定。
(4) 运营始终与业务需求保持一致
通过使IT运营自动化,企业可以将精力更多地放在业务上,并且消除了由人为错误造成的失败风险。在堆栈的各个级别上自动化实时补丁和升级,消除了停机时间,并且节省了人工劳动力。
云原生工具
以下是业界常用的云原生工具及方法。各大公司通过使用它们,实现了更快的产品交付,更少的摩擦,以及更低的开发与维护成本。
1. 微服务
微服务是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。在传统的部署中,通常只有一个网站服务来管理API和客户交互,若使用微服务,我们就可以将该网站分解为多种服务,例如结帐服务和用户服务,我们可以分别开发,部署和扩展这些服务。此外,微服务通常是无状态的,公司可充分利用云原生提供的灵活性。
推荐技术:Node.js
替代技术:Kotlin,Golang
2. CI / CD
CI / CD的主要概念是持续集成,持续交付和持续部署。这种方法简单而言就是在应用程序的整个生命周期(从集成和测试阶段到交付和部署)中引入了持续的自动化和连续监控。使用CI / CD,公司能够即使并且灵活地实施质量检验,例如单元测试,静态分析或安全性分析。总之,CI / CD是云原生生态系统中的基础工具,可以提高工程效率并减少错误。
推荐技术:Gitlab CI / CD
替代技术:Github Actions
3. 容器
容器是云原生生态系统的核心,它通过简化开发人员的操作极大地提升了开发速度和质量。通过使用容器(例如Docker),团队可以指定其系统依赖关系,同时提供统一通用的执行层,该层使基础架构团队能够操作单个基础设施,例如容器编排工具(如Kubernetes)。工程团队可以将容器映像存储在容器注册表中,在大多数情况下,该注册表还提供漏洞分析和细粒度访问控制。这方面流行的服务有Docker Hub,Google Container Registry或Quay。
推荐技术:Docker
替代技术:Podman , LXD
4. 容器编排
容器编排是用于启动和管理大量容器的工具,不需要特定语言或特定团队的部署策略。容器编排允许用户指定某个映像或某个映像组的配置,最后,编排器采用这些规范并将其转换为运行的工作负载。容器编排器使基础设施团队可以维护单个基础设施组件,该组件可以执行任何符合OCI规范的容器。
推荐技术:Kubernetes
替代技术:Google Cloud Run
5. 基础架构即代码
基础设施即代码是一种通过代码来定义计算和网络基础设施的方法,它可以应用于任何软件系统中。这样的代码放在源代码管理中,具有可审查性、可重用型,并且符合测试惯例,还完全遵从持续交付的原则。
公司一般通过管理面板手动配置云资源,但是,手动配置很难跟踪更改。基础架构即代码通过将云资源定义为代码并将其置于版本控制之下来解决该问题。在代码中的基础设施配置中进行更改,并通过公司的部署过程(包括同行评审、CI/CD)进行升级。版本控制提供了一个审核日志,显示谁更改了哪些资源以及更改的时间。
推荐技术:Terraform
替代技术:Pulumi
6. 隐私管理
隐私管理对于云原生解决方案至关重要,但总是被忽略。这里的隐私可以是任何私密的东西,例如密码,私钥和API凭据。成熟的解决方案支持发布临时数据库凭证或轮换凭证,使隐私管理更加安全。一个合适的隐私管理解决方案对于云原生应用非常重要,因为容器化服务可以水平扩展,并且可以在许多不同的设备上调度,忽略隐私管理的组织可能会增加数据泄漏的风险。
推荐技术:Vault
替代技术:Sealed Secrets
7. 认证
通过TLS保证通信安全是必不可少的。这在基于容器的解决方案中尤其重要,因为许多不同的服务可能在同一台物理计算机上运行。如果不进行加密,攻击者就可以获得主机网络的访问权限,他们可以读取这些服务之间的所有流量。总之,手动更新云本地部署的证书是站不住脚的,这就是为什么某种自动化解决方案是必不可少的。
推荐技术:cert-manager
替代技术:Google managed certificates
8. API网关
API网关是反向代理,比起传统反向代理(例如Apache和NGINX),API网关还支持:
- gRPC、HTTP/2和Websockets等协议
- 动态配置
- 双向TLS
- 路由
- 提供诸如速率限制和电路中断等云服务弹性功能
- 提供各类监控指标的可见化
推荐技术:Kong
替代技术:Ambassador
9. 日志
日志是可观察性的基础。日志对于了解系统中正在发生的事情至关重要,而且对于调试系统也非常有帮助。云原生工具强调指标的时间序列,因为它们比存储日志更具成本效益。
推荐技术:EFK
替代技术:Loki
10. 监控
我们可以为监控指标分配不同的维度,以深入了解单个计算机、操作系统、版本等性能。监视系统会将重要事件按时间顺序存储,但它不会存储所有事件。这使其对于云本机系统具有成本效益,用户可以为监视指标分配不同的维度,以深入了解单个计算机、操作系统、版本等的性能。
推荐技术:Prometheus、Grafana
替代技术:Datadog
11. 警报
警报可将系统问题通知操作员,例如,当HTTP 500状态代码增加或请求持续时间增加时,警报就会通知团队。警报对于云原生系统非常重要,没有警报,公司就不知道出现了问题。
推荐技术:Prometheus Alertmanager
替代技术:Grafana Alerts
12. 追踪
云原生技术减少了扩展服务的成本,因此,我们可以推出更多的服务。追踪技术能够监视服务之间的通信,并将整个事务中的每个阶段都进行可视化,当出现性能问题时,团队可以查看发生了哪些服务错误以及事务的每个阶段花费了多长时间。追踪技术使团队可以更快地调试问题,减少停机时间。
推荐技术:Jaeger
替代技术:Zipkin
13. 服务网格
作为上述功能的综合,云服务网格可以提供动态路由、负载平衡、服务发现、网络策略,以及包括断路器和重试机制在内的云服务弹性功能。我们可以将服务网格视为云计算原生架构在负载平衡方面的一种演进。
推荐技术:Istio
替代技术:Consul
通过灵活地选用上述云原生工具,我们可以适当地提高云服务产品的交付速度,增加服务的可用性与性能,以及保持企业的竞争优势。
参考:https://codersociety.com/blog/articles/cloud-native-tools