微服务与单体架构:IT变革中企业及个体如何自处?

当下,企业愈来愈多地受到竞争对手和他们本身的客户的压力,既须要让应用程序更快地在线运行,同时又要最大限度地下降开发成本。这些不一样的目标,迫使企业IT组织必须一刻不停地迅速发展。自20世纪60年代以来经历了一次又一次的强制演变以后,大量的企业IT已经准备从单体应用架构中走出一步,走上微服务之路。python

图1:传统单体应用程序和微服务之间的架构差别安全

更高的指望和更有能力的客户服务器

那些可以接触到全球产品及服务的客户,如今愈发强势地但愿他们的供应商企业可以快速响应其余供应商正在作的事情。网络

CIO杂志在报道Ovum的研究时曾指出:架构

在“客户之旅”中,是“客户”自己占据着上风。拥有更多的购物方式,以及开始花费更少的时间在购物上,客户们须要的不只是快速地收集信息和完成交易。他们常常但愿能无需进行冗长的对话、甚至在去往某地的途中、在移动设备上就能快速完成这项工做。框架

处于压力之下的ITless

这场激烈的全球竞争,也迫使企业寻找新的方法来削减成本或找到更有效的新方法。开发人员在过去其实已经看到了这一切。这只是企业IT十多年来所面临的“少花钱多办事”这一永恒号召的当代新版本罢了。他们已经了解到,尽管IT总预算增加了,但在新IT服务以及通讯服务这一块须要的投资也增多了。运维

图2:Gartner的2018年全球IT支出增加预测分布式

企业IT组织须要对时代的发展和新的需求做出回应,这一压力也使得他们不得不从新审视他们的开发流程。传统的长达两年开发周期,或许在过去是能够接受的,但在现阶段早已再也不使人满意。没有人可以等待。微服务

趋势的汇合

企业IT也被迫对各类趋势做出回应,这些趋势是分歧和矛盾的。

  • 引入廉价但高性能的网络链接,让分布式功能彼此之间经过网络进行通讯的速度,与以前可在单个系统内相互通讯的流程同样快。

  • 推出功能强大的微处理器,可在廉价和小型封装中提供大型机级性能。在标准化X86微处理器架构以后,企业如今不得不考虑其余架构来知足他们对更高性能、更低成本、以及更低功耗和热量的需求。

  • 内部系统内存容量不断增长,所以能够在小型系统中部署大型应用程序或应用程序组件。

  • 外部存储的使用正逐渐从使用旋转介质变为固态设备,这样能够提升性能、减小延迟、下降整体成本并提供巨大的容量。

  • 开源软件和分布式计算功能的发展使企业可以在须要新功能时廉价地添加一系列系统,而不是面对昂贵且耗时的叉车升级来扩展中央主机系统。

  • 客户要求即时、轻松地访问应用程序和数据。

要应对这些趋势,企业IT部门很快就会发现,他们一直依赖的方法——专一于充分利用昂贵的系统和网络——必须改变了。现在最大的成本是人员、电力和冷却。二十多年前,企业将重点从单体大型机计算转移到基于X86的分布式中端系统,诚然那是一次变革,但当下的变化趋势及变革与那时不一样了。

下一步发展在哪?

如下是企业IT为响应全部这些趋势所作的工做。

他们选择从使用传统的瀑布式开发方法转向各类形式的快速应用程序开发。他们也正在从编译语言转向解释或增量编译的语言,如Java、Python或Ruby,以提升开发人员的工做效率。

例如,IDC预测:

到2021年,65%的CIO将把敏捷开发/DevOps实践扩展到更普遍的业务中,以实现创新、执行和变革所需的速度。

复杂的应用程序愈来愈多地被设计为独立的功能或“服务”,能够托管在网络上的多个地方,以提升应用的性能和可靠性。这种方法意味着能够解决不断变化的业务需求,以及能够在无需并行更改任何其余功能的前提下,向一个功能中添加新功能。NetworkWorld的Andy Patrizio在对2019年的预测中指出,他预计“微服务和无服务器计算将起飞”。

另外一个重要变化是这些服务托管在地理位置分散的企业数据中心、云端或二者兼有之中。此外,功能能够驻留在客户的口袋中,也能够驻留在基于云或公司系统的某种组合中。

这对你意味着什么?

这些趋势的到来,意味着企业开发人员和运维人员必须对其传统方法进行一些重大变革,包括:

  • 开发人员必须愿意学习更适合当今快速应用程序开发方法的技术。经验丰富的“学生”能够经过在线学校快速学习。例如,Learnpython.org提供Python免费课程,而codecademy提供Ruby、Java和其余语言的免费课程。

  • 他们还必须愿意学习如何将应用程序逻辑从单体静态设计分解为独立但协做的微服务集合,各种在线学习网站依然是不错的选择,例如IBM的微服务课程(https://www.coursera.org/learn/intro-ibm-microservices)、Lynda.com等等。

  • 开发人员必须采用新工具来建立和维护微服务,以支持它们之间快速可靠的通讯。善于使用各类商业和开源的信息传递和管理工具,能够大大简化这一过程。例如Rancher Labs的全开源平台Rancher为用户提供Kurbernetes-as-a-service。

  • 运维专家须要学习容器和Kubernetes的编排工具,以了解它们是如何让团队快速开发和改进应用程序和服务,而又不会失去对数据和安全性的控制。长期以来,运维一直是企业数据中心的守门人。毕竟,若是应用程序变慢或失败,运维人员就要在此时负责解决这一局面。

  • 运维人员必须容许这些功能托管于他们直接控制的数据中心以外。为了说明这一点,Market Research Future的分析师最近发表了一份报告称,“2017年全球云微服务市场价值为5.844亿美圆,预计到预测期结束时将达到21.467亿美圆,复合年增加率为25.0%”。

  • 应用程序管理和安全问题如今必须成为开发人员思考的一部分。在线课程又一次地能够帮助我的发展这方面的专业知识。不少网站包括LinkedIn提供了如何成为IT安全专家的课程。

很是重要的一点是,IT和运维人员都必须理解IT的世界正在快速发展变革,每一个人都必须专一于提高自身的技能和专业知识。

微服务如何使企业受益?

微服务这种分布式计算的最新发展,为企业带来了许多实际和可衡量的收益。在IT组织采用这种形式的分布式计算后,开发时间和成本花费均可以大大下降。以后,能够根据须要并行开发每一个服务并进行细化,而无需中止或从新设计整个应用程序。

开发团队能够专一于开发人员的工做效率,而且仍然能够快速、在线地提供新的应用程序功能。运维团队则能够专一于为应用程序执行定义可接受的规则,并经过编排和管理工具强制执行它们。

企业面临哪些新挑战?

与任何IT方法同样,微服务架构的应用在带来益处的同时也将带来挑战。

监控和管理大量“移动部件”,要比处理一些单体应用程序更具挑战性。采用企业管理框架能有助于应对这些挑战。除此以外,此类分布式计算的安全性也须要首要考虑。随着网络上独立功能的增长,每一个功能都必须进行分析和保护。

全部单体应用程序都应该迁移到微服务吗?

一些单体应用程序很难改变。这多是因为技术挑战或多是因为监管限制。今天使用的一些组件可能来自于已经倒闭的供应商,使得迁移或重构变得极其困难甚至不可能。

对于企业来讲,完成整个审计过程既费时又费钱。一般状况下,企业继续投资旧应用程序的时间,比他们相信本身在节省资金的时间长得多。

企业应该先评估清楚某个单体应用是具体作什么的,再考虑是否是要分离某些单独的功能并做为较小的独立服务运行。这些能够实现为基于云的服务或基于容器的微服务。

最明智的方法,不是等待并试图解决整个旧技术,而是进行一系列渐进式的更改,使得加强或替换旧系统的计划更容易被接受。这与那句古老的谚语很是类似,“植树的最佳时机,是20年前,其次是如今。”

这些变化值得吗?

大量已经采用基于微服务的应用程序架构的企业已经证实了,他们的IT成本一般会下降。他们还常常表示,一旦他们的团队掌握了这种方法,当市场需求发生变化时,添加新功能和特性会更容易、更快捷。

若是您的企业还彻底没有踏上微服务之路,从如今开始了解更多信息也是好的。此外也应该多关注业界的一些新近流行的技术与解决方案,如Kubernetes、Rancher、Serverless等等。