云原生应用开发有时会令人望而生畏!构建需要访问和连接复杂基础设施的分布式应用程序需要开发人员学习不同的技术和云服务,这会减慢他们的开发进度。如果开发人员需要在 Kubernetes 集群上部署、调试和测试他们的应用程序,这无疑会更具挑战性,因为他们不仅需要掌握 Kubernetes,还需要掌握如何容器化和分发应用程序。在测试方面,如果您的应用程序由多个服务组成,那么在开发和测试场景中启动所有服务将变得非常困难。如果我们能够在推广最佳实践的同时简化这些复杂性,让应用程序在我们的 Kubernetes 集群上顺畅运行,那岂不是很棒?
在本篇博文中,我们将探讨两个 CNCF 项目如何帮助我们简化 Kubernetes 集群内外的云原生开发和测试。首先,我们将探讨 Dapr(一个已毕业的 CNCF 项目)如何通过为应用程序开发人员提供可促进最佳实践的 API,并将云服务和复杂的基础设施抽象出来,以便平台团队进行配置,从而将复杂基础设施的访问与应用程序代码解耦。
在向 Kubernetes 集群添加扩展时,这可能会影响应用程序的运行和行为,迫使开发团队思考如何在开发任务中复制这些设置。如何在不将应用程序运行在 Kubernetes 集群上的情况下,提高开发人员的生产力(和乐趣!)?这正是 CNCF 沙盒项目 Microcks 的用武之地。它通过提供依赖项的模拟,减轻了设置复杂环境的痛苦。
这篇文章详细介绍了我们将 Microcks 引入著名的 Dapr Salaboy 披萨演示应用程序(参见 https://github.com/salaboy/pizza)的实验。您将学习如何将 Microcks 与 Dapr 结合使用,从而获得前所未有的轻量级开发体验,该环境允许预先检测大多数集成问题!
应用程序概述
Pizza Store 应用模拟下单披萨,不同的服务会处理该订单。该应用由“Store”服务(用作下单的前端)和“Delivery”服务(用作下单的后端)组成。订单被发送到“Kitchen”服务进行准备,待准备完毕后,“Delivery”服务会将其送到您家门口。
将 Dapr 添加到此应用程序,有助于开发人员抽象出关于基础架构、服务间通信、安全性、可观察性和弹性的复杂问题,同时简化应用程序逻辑。对于每个启用 Dapr 的服务,Dapr 都会注入一个 Sidecar,该 Sidecar 在 Kubernetes 集群上运行时会公开应用程序级 API。Dapr Sidecar 现在负责理解如何跨服务路由请求,并提供对应用程序依赖项(例如消息代理 Kafka)的访问,而无需在应用程