首页  ·  知识 ·  架构设计
微服务的七个“馅饼”和五个“陷阱”
网友  E行网  综合  编辑:Doris   图片来源:网络
36%的企业目前正在使用微服务,另外的26%已经在研究阶段。应用它之前我们必须了解,什么是微服务架构?它是否适合企业的文化、技能和需求?

微服务应用案例

作为面向服务架构(SOA)的一个变体,微服务是一种将应用程序分解成松散耦合服务的新型架构风格。通过细粒度的服务和轻量级的协议,微服务提供了更多的模块化,使应用程序更容易开发、测试、部署,更重要的是更改和维护。

毫无疑问,IT机构仍然受到单片开发的应用程序的困扰,特别是如今集成的、多层架构的应用,被越来越多的用在单个代码库上创建整个应用程序。在台式机统治IT时,客户服务模式是一个很好的选择。但随着移动设备和云的兴起,后端数据必须始终能够用于各种各样的设备,但整体架构不会让这个过程变得容易,因为无论何时进行更改,都必须更新整个应用程序,每次尝试添加功能或调整到新的上下文时,都会有产生新错误的可能性。更糟的是,一切开发都只与一个代码库相关联,你无法扩展特定的功能或服务。如果扩大整个应用程序,又势必导致成本大幅提高。

使用微服务,你的代码被分解为独立的服务,作为单独的进程运行。在独立的通信服务的编排中,一个服务的输出被用作另一个服务的输入。微服务对于不具有支持应用程序开发的大量设备的企业特别有用。不受设备和开发平台的影响,微服务可以为企业开发的应用程序提供一致的用户体验,通过一系列平台,生成网页、手机、物联网、可穿戴设备、健身追踪器的环境。Netflix,PayPal,Amazon,eBay和Twitter是目前几家使用微服务的知名企业。

例如,加拿大沃尔玛在2012年将其软件架构重构为微型服务,解决了该公司当时无法处理的每分钟600万页面浏览量,实现了即时结果,转换率显著增加。停机时间也被最小化,该公司能够用更便宜的虚拟x86服务器替代昂贵的商品硬件,从而节省了20%至50%的总体成本。

即使你的IT组织不是沃尔玛或亚马逊的规模,微服务仍然可以提供很大的价值。以下是IT组织在切换到微服务时能够享受到的一些好处。

优势1. 增强开发弹性

使用微服务器,整个应用程序将被分散并分离成作为单独实体的服务。与代码故障影响多个服务或功能的单片架构不同,使用微服务的故障影响最小。即使几个系统在维护中,用户服务也不会受到影响。

优势2. 提高可扩展性

可扩展性是微服务的关键优势。因为每个服务是一个单独的组件,你可以扩展单个功能或服务,而不必缩放整个应用程序。“业务关键型”的服务可以部署在多个服务器上,以提高可用性和性能,而不会影响其他服务的性能。

优势3. 能够使用正确的工具处理正确的任务

使用微服务器,你不必与单一的供应商绑定。相反,你可以灵活地使用正确的工具处理正确的任务。每个服务都可以使用自己的语言、框架或辅助服务,同时仍然能够轻松地与应用程序中的其他服务进行通信。

优势4. 更快的上市时间

由于微服务使用松散耦合的服务,因此你不需要重写整个代码库来添加或修改功能。你只需要对特定的服务进行更改。以更小的增量就能够开发可独立测试的和可部署的应用程序,可以更快地将你的应用和服务推向市场。

优势5. 易于调试和维护

微服务还使得调试和测试应用程序变得更加容易。随着更小的模块不断的经过交付和测试过程,使你提供无错误应用程序的能力大大提高。

优势6. 降低TOC,提高ROI

微服务还允许你优化资源。通过微服务,多个团队可以独立服务,使你可以更快地进行部署,并在需要时更容易地进行转发。开发时间缩短,你团队的代码将更加可重用。通过解耦服务,你不必在昂贵的机器上操作,基本的x86机器就能自主完成。微服务器的效率提高不仅降低了基础架构成本,还使停机时间最小化。

优势7. 持续交付

与单片应用程序不同,专业团队更致力于诸如UI、数据库、服务器端逻辑和技术层之类的离散功能,微服务让跨职能团队能够使用连续交付模型,来维护应用程序的整个生命周期。当开发、操作和测试团队在单一服务上同时工作时,测试和调试变得更加容易和具有即时性。通过这种增量开发方法,代码不断开发、测试和部署,你可以使用现有库中的代码,而不必再重新创建。

使用微服务,企业需谨慎

拥有微服务的企业已经获得了很大的收益,忽视这项新技术的企业可能会被淘汰。但是,虽然微服务看起来很有前途,但并不是每个企业都可以利用这个架构的。确保你的业务有足够的能力来管理它,这里有一些企业必须了解的注意事项。

注意事项1. 你需要配备快速的应用程序部署

随着增量开发和持续交付,微服务让IT组织更加忙碌。工作人员应该能够立即提供所需的资源来跟上微服务更新的步伐。如果需要数天或数月的时间来配置服务器,则会遇到严重问题。同样,你应该能够快速部署新的服务或应用程序。

注意事项2. 稳健的监控是必须的

因为每个服务都依赖于自己的语言、平台和API,在多个团队协同工作的同时和微服务项目的不同实体上,你需要强大的监控来有效监控和管理整个基础架构,因为如果你不知道服务失败或机器故障时,可能无法追踪出现问题。

注意事项3. 你必须拥抱DevOps文化

要在跨职能团队中工作,你的企业应该融入实践和文化。在传统的环境中,开发人员专注于功能,但如今运营团队正面临新的生产挑战。在DevOps中,每个人都必须对服务的交付和失败负责任。

注意事项4. 测试可能很复杂

使用微服务器,测试并不简单。每个服务都有自己的依赖关系,一些是直接的,另一些是传递的。随着功能的添加,新的需求将出现。保持所有这些过程的快速实施是不切实际的。此外,随着你的服务数量的增加,复杂性也在增加。无论是数据库错误、网络延迟、缓存问题还是服务不可用性,你的微服务架构都能更好地处理合理级别的故障。因此,弹性测试和故障注入是必须的。

注意事项5. 你需要考虑到设计失败

设计故障至关重要。你应该准备好处理多个故障问题的预案,例如系统停机时间、缓慢的服务和意外的响应。在这里,负载平衡很重要,同时计划B是另一个重要的选择,当出现故障时,故障服务仍应以降级的功能运行,而不会影响整个系统。


本文作者:网友 来源:E行网
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读