为什么所有人都在说应用现代化,到底有什么好的?

这几年所有IT基础设施相关的企业都在大谈容器、云原生、微服务、Serverless等等各种新概念,这都是应用现代化的范畴,往细了说,技术细节就太多了,但用户最想知道的是,它到底有什么好的?

真要说起来,应用现代化的好处可太美妙了。

首先,就像会开车的人不一定懂修车,会用冰箱的人不用学习制冷一样,企业想用IT资源,但并不想花时间打理这些IT资源,企业要的是应用程序的代码能运行起来,现代化应用能让企业专注在业务本身。

这是现代化应用的第一个方面,亚马逊云科技大中华区产品部总经理顾凡有一个非常精炼的总结,“所谓现代化应用能让开发速度越来越快速,迭代起来非常敏捷,能让业务应用更快推向市场,而且,能快速扩展服务数百万用户的规模。”

再精炼一点说:开发迭代的块,扩展性能更强。

那么如何做到这点呢?

在人没变的前提下,就只能靠先进的工具来提高生产力了!这里的工具就是应用现代化相关的容器、微服务、Serverless之类具体的技术了。

原始时期的IT应用由于业务形态简单,规模小,所以应用以单体形态为主,而后来出现了SOA(面向服务的架构)架构,大体上就是把应用拆分成一个个模块,而随着应用功能复杂度提升,在模块基础上又进行了拆分。

从一个应用一步步拆分会带来巨大变化,这会使得开发一个复杂的系统变得非常高效,每个人或者小部门负责开发复杂系统里很小的一部分,然后在微服务的架构的组织下,快速组织成一个完整的复杂系统,极大地降低了出错从成本。

这就好比以前用一块完整的大石头块雕刻一个石像,首先完整的大石块开采运输加工成本就会高出很高,如果石头开裂或者雕刻工走神,又或者后期雨打风吹把石像弄坏了,可能整个石像都会受影响。

而现在换成若干个立方体砌成的大石块一样,小石块成本就很低,哪块坏了换一个就可以,如果分工合理,同一时间可以多个雕刻师傅来操作,工程效率直线上升。同时,雕刻师傅也不用提心吊胆的怕弄坏石块,可以进行更大胆的尝试,迭代效率会很高,试错成本也很低。

这里说的是石像的开发和迭代效率会变得非常高,与此同时,当这套流程熟悉之后,就好像一条汽车的生产线一样,也可以在很短的时间内做出N多个石像,快速提高产量和服务的规模,服务能力的可扩展性变得很强。

扩展性或者说弹性伸缩的能力有多重要呢?

普通人在双十一抢购时,假期抢票时以及进游戏服务器需要排队时,才能体会到系统扩展性的重要性。但作为服务方的企业更能理解系统扩展性不足时的痛苦,特别是计划外的业务量暴增时,比如新浪微博的工程师们就需要不定期处理明星官宣各种爆炸性新闻时的流量高峰。

亚马逊电商平台从2002到2006年就开始做微服务化改造,到2020年,亚马逊有超过十万个微服务,如今打开亚马逊的APP随便看看就需要调取几百个微服务,各种注意得到、注意不到的功能背后都对应着很多个微服务。

亚马逊电商平台就相当于一座巨大的石像,零部件多,需要更新维护的也多,每天大概需要更新15000次更新,韩信点兵多多益善,管理如此规模的大石像,一定得有非常高高效的自动化管理工具。

对于应用现代化,战略上,我们会发现现代化应用对于企业业务发展和竞争力提升的作用,在具体的战术层面上,则需要顺手好用的各种工具。

作为全球规模最大的电商平台,亚马逊自己开发了许多服务,就是我们熟悉的亚马逊科技(Amaozn Web Services),从十多年的发展中,亚马逊云科技推出了许多Serverless服务、许多容器和微服务相关的服务。

从消息队列的服务Amazon SQS,到Amazon DynamoDB和Amazon Aurora数据库以及Amazon S3存储、Amazon Lambada计算、Fargate这类Serverless服务,到ECS、EKS、AWS Proton各种容器服务。

亚马逊云科技结合服务亚马逊电商在内的广大用户打造了许多切实可用的服务,这些工具帮助亚马逊电商构建了现代化应用,也能帮企业用户构建现代化应用,而且是面向各种不同类型的企业提供服务。

首先,对于那些想快速上云的企业而言,可以利用容器的特性完成向云的迁移工作。用户可以直接将应用容器化后迁移到亚马逊云科技的Amazon ECS和Amazon EKS之上,ECS是亚马逊云托管的容器服务平台,EKS是亚马逊云托管的K8s平台,后者能更好地与开源的k8s生态集合,上云之后,就能享受到云带来的各种便利,比如有近乎无限的弹性伸缩能力。

另外,对于许多不能简单快速完成容器化的复杂应用而言,想真正利用云的优势则会麻烦一些。这需要在应用理解的基础上,利用亚马逊云的各种服务进行微服务的拆分,对应用的逻辑和数据进行细致的拆分,需要针对不同的场景选择对应的工具。

重构之后将原来的应用变为微服务化的应用能更好地利用云的优势,服务于业务才本身。

最后,当企业的现代化应用和微服务化改造到了一定的阶段后,则非常考验管理的效率。

比如,如何在大规模部署中让微服务保持较高的可用性和一致性,如何平衡开发团队和运营团队之间的矛盾。为此,亚马逊云科技推出了Amazon Proton,用它来平衡开发和运营团队,让两个团队拧成合力。

从亚马逊云科技大中华区产品部计算与存储总监周舸的介绍中了解到,亚马逊云平台提供了上百种的跟容器有关的服务堆栈,无论是从计算、存储、网络、安全治理,无论是用于构建、运营、治理等相关的各种各样的工具都非常地完整,而且,各个服务间都深度集成,能帮助企业快速完成构建过程。