微服务体系结构将应用程序设计为松散耦合服务的集合。 在微服务体系结构中,服务是细粒度的,协议是轻型的。 微服务提供一些优势,例如明确分离关注点和分离依赖项。
与传统整体式应用程序相比,微服务在开发周期中带来了复杂性。 传统上,开发发生在应用程序堆栈的本地或虚拟副本中,该副本在本地以隔离方式配置和运行计算和存储组件。 在微服务模型中,开发人员需要针对现有体系结构测试其服务,尽早捕获集成问题以节省生成和部署时间,并保持集成生成在应用程序的生命周期内保持干净。
此解决方案体系结构对开发和部署环境进行模型DevOps开发测试,以快速迭代开发 Azure Kubernetes 服务 (AKS) 微服务应用程序。
- 开发人员使用 Local Process 和 Kubernetes 在开发 Kubernetes 群集的上下文中运行其本地微服务版本。 在调试服务时连接到群集可以在完整的应用程序上下文中快速测试和开发。
- 每个微服务代码库都使用单独的GitHub源代码存储库进行源代码管理。
- GitHub操作会生成微服务容器映像,并推送到Azure 容器注册表。 GitHub操作还会更新用于持续集成的存储库的最新标记, (CI) 或标记存储库进行发布。
- GitHub操作自动测试为 Azure Boards 生成工作项,使所有工作项在一个位置可管理。
- Visual Studio Code扩展支持Azure Boards GitHub集成。 将Azure Boards工作项与GitHub将要求与代码相关联,进一步推动开发循环。
- 合并到集成分支触发器中的提交GitHub Actions 生成和 Docker推送到 DevTest 容器注册表。 每个微服务在容器注册表中都有其自己的存储库,GitHub存储库。 CI 生成通常使用最新的 进行标记,表示最新的成功微服务生成。
- Azure Pipelines Kubernetes 命令触发将更新的容器注册表映像部署到 DevTest Kubernetes 群集。 Azure 可以验证 AKS 以运行无人参与的容器注册表拉取,从而简化 CD (部署) 过程。Azure Pipelines使用Azure Key Vault安全使用机密,如发布和部署配置所需的凭据和连接字符串。
- 当应用程序的一个版本准备好进行 QA (测试) ,Azure Pipelines QA 发布。 管道使用下一个增量版本标记所有适当的映像,更新 Kubernetes 清单以反映映像标记,并运行
apply
命令。 此示例中,虽然开发人员可能单独访问服务,但仅通过 CI/CD 集成的生成会转移到部署。 - 测试批准用于部署的服务版本后,GitHub操作将版本从开发测试容器注册表提升为生产容器注册表。 GitHub操作使用适当的版本标记映像,并遵循容器注册表最佳做法将其推送到生产容器注册表中。
- Azure Pipelines将版本创建到生产。 管道会施加审批入口和前阶段和后阶段条件,以保护生产环境免受意外或不正确的部署的影响。
应用程序使用Azure Cosmos DB作为其全球分布式数据库层。