微服务架构设计模式 分布式应用程序是什么( 二 )


3. 自动化一致的依赖管理工具所具有的自服务优势不仅仅意味着开发人员可以运营自己的环境 。这也意味着可以通过自动化的方式来产生和拆除环境 。单个命令或过程(用于解决依赖关系、丰富网络和自动化安全性)的一致性是集成到 CI/CD 流水线的完美秘诀!
如果每个服务都可以一致地运行(例如在容器平台上运行)并且知道其自身的依赖 , 则可以为每个合并请求提供新的环境 , 并且在合并到相关分支后可以将更改无缝地升级到预发布和生产环境中 。这意味着每个团队都可以为每个开发人员和添加到应用程序的每个新服务实现可扩展的 GitOps。
4. 安全性微服务架构引入的风险之一是每个服务都需要公开对其功能进行访问的 API 。由于这些服务作为单独的进程存在 , 因此通过网络进行通信是它们彼此连接并接收处理请求的唯一方式 。这意味着每个新服务都会公开一个可供其他人访问的接口 , 如果开发人员不注意 , 他们可能会不小心将其公开给错误的参与者 。

微服务架构设计模式 分布式应用程序是什么


防止网络接口意外暴露是另一个依赖管理工具可以提供支持的领域 。通过开发人员提供其服务的依赖关系的结构化索引 , 我们不仅可以自动解决这些依赖 , 而且还可以丰富相应的网络策略来锁定服务调用关系——只有相互依赖的服务才能访问彼此 。这种结构化方法极大地减少了开发人员理解网络安全工具的需求 , 并使他们可以自由的创建更多服务 。
5. 灵活性灵活性是微服务和分布式应用依赖管理工具的另一个好处 。开发人员可以捕获依赖项的详细信息并将它们关联到自己的服务 , 这样解析器本身可以自由地以特定方式在部署环境中检测这些依赖关系 。想要尝试不同的 API 网关或服务网格?想要追踪每一个服务的入站和出站的流量来实现分布式追踪?借助依赖管理工具的自动化功能 , 运营人员可以自由尝试新工具和配置 , 而不必改动现有服务的代码或干扰开发人员 。
为什么它还不存在依赖关系解析将是一个强大的工具 , 使开发人员能够进行协作并为云原生应用程序做出贡献 , 但是我们不能使用已经存在的大量软件包管理器来进行依赖管理吗?虽然使用现有工具会很好 , 但是解决网络应用程序的依赖关系与解决库与二进制文件之间的关系并不是同样的工作 。
对于普通库 , 满足依赖要求的依赖下载全部在构建时进行 , 以创建一个主二进制文件 / 库 。但是 , 微服务不是捆绑到单个二进制文件中 , 而是需要作为独立服务运行 , 然后通过网络进行连接 。这意味着依赖解析策略还有额外的步骤 , 并且该步骤发生在与常规库完全不同的生命周期阶段 。事实证明 , 在应用程序生命周期中 , 我们可以正确解决分布式应用程序依赖关系的最早时间是在部署时 。此时 , 我们既了解堆栈中所有服务之间的关系 , 也了解目标环境的工具和详细信息 , 而这一目标环境需要正确配置并用以提供服务连接 。
【微服务架构设计模式 分布式应用程序是什么】综上所述 , 很难为网络依赖关系创建大规模的解析器 , 但是这样做将为工程团队和整个云社区带来巨大好处 。如果我们要正确地驾驭云原生工具的不断发展的局面 , 则需要从过去的依赖管理实践中学习经验 。

推荐阅读