当前位置: 首页 > 科技观察

谈谈什么是微服务?

时间:2023-03-18 15:26:23 科技观察

什么是微服务?微服务背后的中心思想是,当某些类型的应用程序被分解成更小的、可组合的、协同工作的部分时,它们会变得更容易构建和维护。每个组件都是单独持续开发和维护的,应用程序只是其组成组件的总和。这与传统的“整体式”应用程序形成对比,传统的“整体式”应用程序都是一体式开发的。作为一组模块化组件构建的应用程序更易于理解、更易于测试,最重要的是,在应用程序的整个生命周期内更易于维护。它使组织能够实现更大的敏捷性,并可以显着减少将研发部署到生产所需的时间。这种方法已被证明是优越的,特别是对于由不同地域和文化的开发人员团队开发的大型企业应用程序而言。还有其他好处:开发人员独立性:小团队并行工作,迭代速度比大团队快。隔离和弹性:如果一个组件挂掉了,您可以继续运行一段时间,而应用程序的其余部分继续运行。可扩展性:较小的组件占用较少的资源,并且可以扩展以满足该组件不断增长的需求。生命周期自动化:单个组件可以更轻松地适应复杂的部署场景,这是持续交付管道和单体应用无法实现的。与业务的关系:微服务架构沿着业务域的边界进行划分,增加了整个组织对业务的独立性和理解性。微服务的通用定义通常依赖于提供API接口的每个微服务,通常但不总是无状态的RESTAPI,可以像标准网页一样通过HTTP(S)访问。这种访问微服务的方式使它们易于开发人员使用,因为它们只需要开发人员使用他们已经熟悉的工具和方法。这是一个新概念吗?没什么新鲜的。还有其他编程范例也解决了这个相同的概念,例如面向服务的体系结构(SOA)。然而,最近的技术进步加上对集成“数字体验”的期望不断提高,已经产生了新的开发工具和技术来满足现代业务应用程序的需求。微服务不仅依赖于为支持该概念而构建的技术,还依赖于具有文化、知识和结构的组织,以便开发团队可以采用该模型。微服务是IT向DevOps文化转变的一部分,在这种文化中,开发和运营团队紧密合作以支持应用程序的整个生命周期,并体验快速甚至连续的发布周期,而不是更传统的长周期。为什么开源对微服务很重要?当您从头开始将应用程序设计为模块化和可组合时,它允许您在许多地方使用插件组件,而在过去,由于组件的许可或特殊要求,您可能需要特定的解决方案,但是现在,许多应用程序组件可以是开箱即用的开源工具,并且有无数的开源项目实现了微服务架构的横切需求,例如身份验证、服务发现、日志记录和监控、负载均衡、扩展等。专注于微服务还可能使应用程序开发人员更容易为应用程序提供可选接口。当一切都是API时,应用程序组件之间的通信是标准化的。要使用您的应用程序和数据,组件需要做的就是能够通过这些标准API进行身份验证和通信。这允许组织内外的人员(在适当的时候)轻松开发利用应用程序数据和服务的新方法。容器技术从何而来?轻量级操作系统容器的现代概念是在2000年代初期作为FreeBSD项目的一部分引入的。Docker为创建和共享容器镜像提供了更好的用户体验,因此自2013年以来被广泛采用。容器非常适合微服务,满足了对轻量级和灵活的组件的需求,这些组件可以轻松管理和动态更换。与虚拟机不同,容器旨在能够运行容器设计的最小可行部分,而不是将多个功能打包到同一个虚拟机或物理机中。Docker和类似工具提供的开发简便性有助于快速开发和测试服务。当然,容器只是一个工具,微服务架构只是一个概念。完全可以在不使用容器的情况下按照微服务方法构建应用程序,就像在容器中构建更传统的应用程序一样,当您想利用容器编排功能而不重写大型单体应用程序时,这可能是有意义的。你如何编排微服务?为了实际运行基于微服务的应用程序,您需要能够监控、管理和扩展不同的组件。有许多不同的工具可以帮助您完成这项任务。对于容器,Kubernetes等开源工具可能是解决方案的一部分。或者,对于应用程序的非容器组件,可以使用其他工具来编排组件:例如,在OpenStack云中,您可以使用Heat来管理应用程序组件。另一种选择是使用平台即服务(PaaS)工具,它可以让开发人员专注于编写代码,方法是抽象一些底层编排技术,并允许他们轻松地为某些部分选择现成的开源组件应用程序的一部分,如数据库存储引擎、日志服务、持续集成服务器、Web服务器或其他部分。一些PaaS系统,如OpenShift,直接使用Docker和Kubernetes等上游项目来管理应用程序组件,而另一些则尝试自己重新实现管理工具。现有的应用程序呢?虽然利用微服务可能是组织未来IT战略的重要组成部分,但肯定有许多应用程序不适合这种模式,并且不太可能在一夜之间重新架构以满足这种新范式。迁移到微服务架构会产生文化和技术成本,但幸运的是,如果组织拥有可靠的双模式IT战略,微服务和传统应用程序可以在同一环境中协同工作。根据Gartner的说法,双模式IT能够交付注重稳定性和正常运行时间的传统IT应用程序,以及通过更新的方法程序交付更新、更敏捷但可能测试较少的应用程序的能力,这些方法包括开发人员自行配置的能力机器和更短的开发周期。许多(如果不是大多数)组织将需要在未来许多年内适应使用这两种方法。原文:https://opensource.com/resources/what-are-microservices