阅读更多

2顶
0踩

企业架构
引用
原文:4 Challenges You Need to Address with Microservices Adoption
作者: Saba Anees,AppDynamics公司的内容运营专员
翻译: 孙薇

在过去几周,我们介绍了微服务的概念,以及它在商业计划中的角色,还有企业迁移到微服务模型的方式——迁移到微服务的工作对企业提出了很大的挑战。在本周的文章中,我们将会对迁移到微服务时可能遇到的障碍,以及付出的努力最终所带来的好处进行深入探究。

微服务架构
微服务架构比原有系统要复杂得多,由于团队必须要管理与支持许多移动的部件,整体环境愈加复杂。其中一些必须要考虑的问题包括:
  • 在添加更多的微服务时,必须确保这些微服务能够一起扩展。颗粒度更细致,代表着可移动的部件更多,从而导致系统更加复杂。
  • 参与交互的服务越多,可能的故障点就越多。聪明的开发者总会未雨绸缪,为解决故障制定好计划。
  • 将功能从单一整体化架构向微服务架构迁移时,会有很多持续通讯的小型组件产生,追踪单个业务事务在不同层面中的性能问题可能非常困难,因此,我们可以通过调用各种相关方法,包括自定义header、token或ID来解决。
  • 由于微服务是无状态的、分布式的、独立的,因此传统的日志记录方式不再实用——就算想要简单地定位某个问题,都有可能制造出过多日志。微服务的日志必须能与跨平台的事件相关联。

其他要考虑的事情包括:

1.运营与基础架构: 开发团队必须与运营团队更加紧密地合作,否则由于多个运营同时进行,情况会失去控制。

2.支持: 对微服务安装提供支持和维护,比之前为单一整体式应用提供支持维护要困难得多。微服务的每个部件都可能涉及了多种框架及语言,在提供支持时,近乎无限的复杂度会影响相关人员添加服务的决策。如果某个团队成员希望创建一个使用深奥语言的新服务,很可能会影响到整个团队,因为大家必须确保这个新服务能够与现有的部分协作。

3.监控: 在添加新服务时,维护与配置监控的能力也会是一个挑战,必须依赖自动化来确保监控跟得上服务规模的变化速度。

4.应用安全: 架构中服务的发展为黑客、解密高手与犯罪分子制造了更多侵犯的目标。要跟踪各种运营系统、框架与语言会导致负责安全的团队将全部精力放在确保系统不易受到攻击方面上。

5.请求: 在服务间发送数据的方式之一就是使用request header,它可以包含类似身份验证这样的细节,从而减少了所需的请求数量。但当这类数据发送大批量进行时,就会增加对各个团队合作的需求。

6.缓存: 缓存有助于减少所需的请求数量,涉及多个服务的请求在缓存后会迅速变得复杂起来,需要不同服务及其开发团队进行沟通。

7.容错性: 微服务的口号就是“互相依赖”。各项服务必须能经受得住直接的失败与无法解释的超时问题。故障可能会产生多米诺效应,通过某些服务产生级联效应,并可能会让某些服务失效。在这种环境下,容错也比在单一整体式系统中要复杂得多。

关注DevOps
在旧式开发环境中,IT部门中负责不同功能的部门合作很少,随着运营、开发与质量保证(QA)团队合作形式的发展,以及贯通整个软件开发流程的沟通加强,最终出现了DevOps。DevOps并不是由某个人或单个小组所担任的角色,它实际上是将有助于运营与开发密切合作的架构进行了概念抽象。在微服务架构中,开发者负责创建系统,以成功交付最终的产品。

随着大型及小型公司逐渐向微服务平台迁移,开发者也必须随之发展。由于部署微服务非常简单,开发者会逐渐参与到代码部署与产品监控的工作中。这种方式与传统案例产生了对比:在过去开发者负责编写代码,将其交付给另一支团队(DevOps)来执行部署与维护;而现在开发者与DevOps逐渐融合成更小的应用团队,主要负责三项工作:应用的构建、部署与监控。

微服务正在改变团队的组成方式,让公司得以围绕着特定的服务来创建团队,并赋予它们自治权以及一定范围内的责任。这种方式可以让公司根据瞬息万变的业务需求而快速作出调整,且不会影响到核心业务,同时也方便新人快速融入团队。

开发者可能要应对的其他挑战包括:
  • 了解如何组合微服务架构的JavaScript开发者短缺;
  • 理解及实现物联网服务;
  • 协助公司将科技引入商业计划与策略上;
  • 让业务经理了解:怎样应用开放API来加强现有产品线,并在市场上开拓新的机遇;
  • 如何简化开发堆栈,选择正确的技术,并在供应商提供的中间件没有价值时提出拒绝;
  • 从Netflix等行业领导者那里学习经验,并决定实现哪些微服务对公司最有好处;
  • 了解这一点:很多供应商尚未建立起稳定的微服务平台;
  • 同一时间内管理及运营的个体微服务或达数百,要能应对这种压力;
  • 管理日益增长的复杂团队网——由尚未完全了解微服务方法的运营者、架构师、开发者、QA团队以及整合者所组成。

开始转变
一旦转变过程开启,你就会发现之前预想不到的新挑战出现,包括:
  • 转移到微服务上的工作负载应该有多少?
  • 是否该允许代码迁移到不同服务上?
  • 在运营持续时,如何确定每个微服务的边界?
  • 如何监控微服务的性能?

想要了解更多信息,请点击这里阅读英文电子书全文《如何使用微服务构建与拓展》。
2
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 什么是微服务、微服务解决的问题是什么

    微服务解决的问题 服务治理:为了有效管理分布式系统中存在的大量服务实例,微服务架构引入了服务发现和服务注册机制,使得服务实例的管理变得自动化、透明化。 Eureka、nacos等 API 网关:为了降低服务...

  • 分布式系统漫谈【柒】_微服务的挑战和解决方案

    上篇文章:分布式系统漫谈【陆】_SOA和微服务 本文继续说说微服务面临的一些挑战和解决方案。...因此在微服务架构设计时,我们就要把这部分问题考虑进去,下面说说我们应该采取哪些措施和方案去解决。 舱壁模...

  • 微服务?“四大维度” 给你讲明白!

    微服务系列解析文第一篇

  • 详谈负载均衡(微服务架构下的高可用挑战)

    四、独立LB进程服务发现 针对进程内LB模式不足的情况的一种折中方案 与上个方案的不同之处,将LB和服务发现功能从进程内拆出来,变成主机上的一个独立进程,主机上的一个或是多个服务要访问目标服务的时候,他们都...

  • 浅析微服务架构应该在什么时候采用

    从单体应用迁移到微服务也绝不是一项简单任务,未经过测验,便采用微服务构建一个新产品则更加复杂。只有在充分评估了替代方案之后,才应该认真考虑是否使用微服务架构。

  • 微服务

     在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务", 微 狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释...

  • 架构师修炼系列【服务调用】

    微服务的调用两个方式已经不算什么新的概念,一个是RPC一个是事件驱动也就是通过发送消息的机制,消息方式是松耦合方式,比紧耦合的RPC方式要优越,但RPC方式如果用在适合的场景也有它的一席之地

  • 经验教训:微服务设计时的五条宝贵经验

    微服务架构的新挑战 在著名软件著作《人月神话》中提到,软件世界没有“银弹”,这句...但是打散为分布式系统后,变为进程间通信,往往这个过程还伴随着跨设备的网络访问,架构师在设计时必须考虑上下游系统因为网络..

  • 微服务网关解决方案和使用总结

    微服务网关解决方案和使用总结 一.什么是网关 1.1 什么是网关 API Gateway(APIGW / API 网关),顾名思义,是出现在系统边界上的一个面向API的、串行集中式的强管控服务,这里的边界是企业IT系统的边界,可以...

  • 确保微服务应用安全的四个最佳实践

    在生产环境中采用与部署微服务应用的决策上,很显然安全性占据了非常重要的角色。根据451 Research的研究报告《2016...下面这四条正是确保微服务应用安全的最佳实践范例。第一条:发现并监控服务间的通讯通常来说,...

  • 微服务基础

    微服务基础

  • “四个维度” 讲明白什么是微服务!

    我们收获这些好处的同时,也一定会带来某些弊端与挑战,这些挑战可以从四个方面来说: 1)分布式带来的通信复杂性与不确定性 对于单体应用,要完一个业务操作,我们通过本地方法调用,这些调用都在同一个进程内完成...

  • 直面PHP微服务架构挑战

    在4月20日的阿里云栖开发者沙龙PHP技术专场上,云智慧Technical VP高驰涛为大家介绍了微服务的前世今生,分享了微服务架构实践中所面对的诸多挑战以及相应的应对策略。 本次直播视频精彩回顾,戳这里! 直播回顾:...

  • 微服务知识体系梳理

    以上微服务内容主要参考《Microservices Patterns: With examples in Java》和《Building Microservices: Designing Fine-Grained Systems》两本书内容,通过chatgpt对书中内容进行归纳总结提炼出来的。效率提升明显...

  • 微服务应用、框架、架构,理解【四】

    四、微服务的具体特征 五、SOA和微服务的区别 六、如何具体实践微服务 七、常见的微服务设计模式和应用 八、微服务的优点和缺点 九、思考:意识的转变 十、参考资料和推荐阅读   一、微服务架构介绍 &nbsp...

  • 云原生之微服务

    云原生之微服务的介绍

  • 基于FPGA的四相八拍步进电机控制系统设计:集成交付、正反转、加速减速及调速功能

    内容概要:本文详细介绍了基于FPGA的四相八拍步进电机控制系统的开发过程。主要内容包括:1. 使用VHDL和Verilog编写LED显示屏驱动代码,用于显示角度、学号和姓名等信息;2. 实现步进电机的正反转控制,通过状态机管理相序变化;3. 开发加速减速控制模块,确保电机启动和停止时的平稳性;4. 设计调速功能,通过调节脉冲频率实现速度控制。此外,文中还讨论了调试过程中遇到的问题及其解决方案。 适合人群:对FPGA开发和步进电机控制感兴趣的电子工程师、嵌入式系统开发者以及相关专业的学生。 使用场景及目标:适用于需要高精度运动控制的应用场合,如工业自动化、机器人技术和精密仪器等领域。目标是帮助读者掌握FPGA控制步进电机的基本原理和技术细节。 其他说明:文中提供了详细的代码片段和调试经验分享,有助于读者更好地理解和应用所学知识。同时,作者还提到了一些实用技巧,如通过PWM调节实现多级变速,以及如何避免步进电机的共振问题。

  • Android开发:基于SQLite的日历备忘录记事本项目详解与实现

    内容概要:本文详细介绍了基于Android Studio开发的日历备忘录记事本项目,涵盖日历查看、添加备忘录、闹钟提醒和删除备忘录等功能。项目使用SQLite数据库进行数据存储,通过CalendarView、EditText、Button等控件实现用户交互,并利用AlarmManager和PendingIntent实现闹钟提醒功能。此外,项目还包括数据库的设计与管理,如创建DatabaseHelper类来管理数据库操作,确保数据的安全性和完整性。文章还探讨了一些常见的开发技巧和注意事项,如时间戳的使用、手势监听的实现等。 适用人群:适用于初学者和有一定经验的Android开发者,尤其是希望深入了解Android开发基础知识和技术细节的人群。 使用场景及目标:该项目旨在帮助开发者掌握Android开发的基本技能,包括UI设计、数据库操作、闹钟提醒机制等。通过实际项目练习,开发者能够更好地理解和应用这些技术,提升自己的开发能力。 其他说明:文中提到一些进阶任务,如用Room替换SQLite、增加分类标签、实现云端同步等,鼓励开发者进一步扩展和优化项目。同时,项目源码公开,便于学习和参考。

  • Matlab实现基于SVM-Adaboost支持向量机结合Adaboost集成学习时间序列预测的详细项目实例(含完整的程序,GUI设计和代码详解)

    内容概要:本文档详细介绍了一个基于SVM(支持向量机)和Adaboost集成学习的时间序列预测项目。该项目旨在通过结合这两种强大算法,提升时间序列预测的准确性和稳定性。文档涵盖了项目的背景、目标、挑战及其解决方案,重点介绍了模型架构、数据预处理、特征选择、SVM训练、Adaboost集成、预测与误差修正等环节。此外,文档还探讨了模型在金融市场、气象、能源需求、交通流量和医疗健康等多个领域的应用潜力,并提出了未来改进的方向,如引入深度学习、多任务学习、联邦学习等先进技术。 适合人群:具备一定机器学习基础的研究人员和工程师,特别是那些从事时间序列预测工作的专业人士。 使用场景及目标:①用于金融市场、气象、能源需求、交通流量和医疗健康等领域的复杂时间序列数据预测;②通过结合SVM和Adaboost,提升预测模型的准确性和稳定性;③处理噪声数据,降低计算复杂度,提高模型的泛化能力和实时预测能力。 其他说明:文档不仅提供了详细的理论解释,还附有完整的Matlab代码示例和GUI设计指导,帮助读者理解和实践。此外,文档还讨论了模型的部署与应用,包括系统架构设计、实时数据流处理、可视化界面、GPU加速推理等方面的技术细节。

Global site tag (gtag.js) - Google Analytics