开发微服务的九个最佳实践( 二 )


使用正确的工具、框架和库将对实现微服务架构大有帮助 。如果您计划在 JAVA 中执行此操作,请考虑Spring Boot 项目 。选择正确的工具和框架需要花费大量的时间和精力 , 因此这里列出了适合该工作的“首选”、经过验证的工具和技术:

  • Jenkins 和 Bamboo 用于部署自动化
  • Docker 用于容器化
  • 用于 API 测试的 Postman
  • 用于容器编排和部署的 Kube.NETes
  • Logstash 用于监控
  • DevSecOps 管理软件开发生命周期的整个过程
  • Github 用于源代码管理和版本控制
  • Amazon 的简单消息队列服务
  • SonarQube 检查代码质量和安全性
  • Ansible 用于管理您的配置
  • Jira 用于问题跟踪和项目管理
4. 保持微服务之间的异步通信微服务之间发生两种类型的通信:同步和异步 。让我们通过一个例子来理解这一点:
对于电子商务平台来说 , 同步通信意味着用户将被要求“保持在线”并完成一系列步骤(选择商品、添加送货地址、付款详细信息、订单验证),最终导致客户通知“谢谢”您的订单!我们将于下周交付” 。
一旦处理客户通知,也会发生一些异步通信,这些异步通信是订单“履行”阶段的一部分,例如:仓库通知、库存更新等 。
在同步通信的情况下,一个服务变得依赖于另一服务 。有时,使用多个微服务之间的同步通信来完成整个任务会变得非常耗时 。
另一方面,异步通信彼此不依赖,每个服务都可以花一些时间来完成其任务 。因此,人们应该尽可能地最大化微服务之间的异步通信,它减少了依赖性并提高了应用程序的整体效率 。
您可以在下面看到这样的示例:
开发微服务的九个最佳实践

文章插图
图片
5. 采用 DevSecOps 模型并保护微服务安全性在此架构中非常重要 。随着微服务架构在云原生应用程序开发中的发展 , DevSecOps 实践越来越多地用于通过增强的安全措施来确保持续集成和持续交付 。使用微服务构建的应用程序可以分为以下代码类型:
  • 应用代码(核心逻辑)
  • 应用服务代码(网络连接、会话建立等)
  • 基础设施(数据存储资源、网络、平台等)
  • 监控(应用程序的持续可观察性)
DevSecOps 包含三个概念:开发、安全和操作,并已被证明是具有持续集成、持续交付和持续部署管道等原语的代码类型的促进范例 。这些管道是使用开发人员的源代码进行开发、测试、部署以及许多此类操作的工作流程,这些操作由具有反馈机制的自动化工具支持 。此外,它还使开发团队能够更快地交付更好、更安全的代码 。微服务架构中的 DevSecOps 实践提供了许多好处,例如:
  • 高安全保证
  • 减少代码漏洞
  • 提高产品质量
  • 提高生产力
  • 提高操作速度
  • 更快地交付更好、更高质量的软件
6. 为每个微服务使用单独的数据存储一项重要的实践是确保尽可能使用单独的数据库来存储数据,而不是为多个微服务使用相同的数据库 。然而 , 更深入的分析可能表明一个微服务仅适用于数据库表的子集,而另一方面,另一个微服务仅适用于全新的表子集 。如果两个数据子集都是正交的,则需要将数据库分成单独的服务 。
因此,请确保为您的微服务拥有单独的数据存储,以减少延迟并提高安全性 。这已经被提到很多次了 , 但需要强调的是,微服务之间应该尽可能少地依赖 。
微服务架构的主要属性之一是每个服务的数据都是私有的,例如,每个服务数据库模式就是如此 。
开发微服务的九个最佳实践

文章插图
图片
我们还可以使用共享数据库服务器,该服务器可供多个服务使用,并对其数据进行逻辑分离 。
7. 单独部署每个微服务如果您单独部署每个微服务,那么在维护或升级工作的同时,您肯定会节省大量与多个团队协调的时间 。此外 , 如果一个或多个微服务具有相同的资源,我们建议您使用专用基础设施来隔离每个微服务的故障并避免全面中断 。


推荐阅读