技术开发 频道

微服务是坑?有这些特点的公司适合部署

  【IT168 评论】最近微服务架构非常流行,微服务是一种软件架构模式,它将单片应用程序分解成更小的单用途服务,这些服务独立构建和管理。微服务的优势包括:

  ·质量:服务分离可最大限度减少故障服务对其他服务的影响。

  ·灵活性:可在细粒度水平升级现有服务或者增加新服务,而不会影响其他服务。

  ·可扩展性:每个服务可单独配置,确保其拥有所需的硬件和软件。

  ·重复使用:服务可以新的方式进行重新组合,以提供新功能。


  虽然微服务有诸多好处,但它并不适合所有人,除非企业已经采用其他几种现代软件开发,否则部署微服务不会成功。

  灵活开发: 在微服务架构中,每个服务都是单一用途,因此应由小团队开发。如果遇到问题,可单独为该服务快速部署修复,而不会影响其他服务的稳定性。这是灵活开发的本质:小团队在短时间内快速交付服务。如果您的开发过程仍然不简单,您将无法以所需的速度开发或维护微服务。

  自动测试: 为了快速维护和升级微服务,您需要能够快速评估变更的影响。同时,面对成百上千种服务,您很快会意识到,您公司没有足够的手动测试人员。唯一的解决方案是测试自动化,自动运行单元测试和端到端系统测试,结果自动验证。

  DevOps: 微服务架构显著增加部署的速度和数量,这可能带来严峻的挑战。为了解决这个问题,您需要让开发与运营团队联手合作。这正是DevOps的目标,即运营和开发工程师合作参与整个产品生命周期,从设计到开发到生产支持。DevOps的核心价值总结为CAMS,即:

  ·文化(Culture):DevOps的目标是打破开发和运营之间的壁垒,为创造和生产构建安全的环境,同时创造相互尊重和合作的文化。这个价值可能听起来很“软”,但这是最重要的部分,这也是最难实现的部分,因为改变人们的态度没有快捷方式或者快速解决方案。

  ·自动化(Automation)为了开发高质量微服务,您需要执行持续整合,每次软件变更时都自动运行回归测试。而为实现大规模部署,您必须通过自动化部署消除人为错误。

  ·测量(Measurement):您需要获取开发和部署过程每个阶段的指标,并分析这些指标,以实现改进。

  ·分享(Sharing):DevOps取得成功的关键之一是分享工具、技术和经验教训,从而避免重复工作,让团队只是产生新错误,而不是不断重复其他团队的错误。

  Docker:您需要一个明确定义、一致、独立的环境来运行每个微服务。现在最流行的环境是Docker,这个基于Linux的容器可提供快速配置和低性能。部署有些微服务将需要运行多个协作容器,例如一个容器用于NoSQL数据库,另一个容器生成数据并保存数据在NoSQL数据库。为管理这些容器群集,您需要使用工具集,包括Kubernetes(用于编排)、Spring Boot(用于部署)、Consul(用于服务发现)以及Hystrix(用于故障恢复)。

  云计算:云计算是部署微服务架构的理想环境,因为云可提供所需的可扩展性和自动化,它可提供比内部部署基础设施更高的可靠性。但是,您需要先选择云服务提供商,然后熟悉他们的工具和界面来部署和监控基于云的应用程序。

  如果您的企业非常适应所有或者大多数上述做法和技术,那么,您随时可部署微服务架构,并享受它带来的优势。如果不是这样的话,您的企业这则尚未准备好部署微服务,微服务带来的痛苦可能会远远超过好处。在短期内,您更好的选择是部署更传统的非整体式架构。

  从长远来看,您还是需要考虑逐渐开始部署微服务,因为应用发布和更新的速度只会随着时间的推移而增加,你将需要拥抱现代软件开发做法来支持新业务发展。然而,文化变革并没有捷径。您可考虑从合作伙伴获得帮助,部署灵活开发和DevOps做法,从而可从微服务受益。

0
相关文章