架构 0 期 -week4- 命题作业
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
主要从以下两方面来聊如今的互联网大型应用系统面临的问题。
从服务的研发来讲,主要是面临协同合作、编程复杂性、技术稳定性等问题。
从服务的运维来讲,主要面临高性能、高可用、可扩展三方面问题。
以下是我考虑到的架构方法。
1.微服务
微服务是我直观上最快想到的解决方案。
从传统单体服务架构模式发展至,我个人感受软件研发最大的不同是需求变化快、规模发展快。一个字,快。
怎么应对这样的快呢?
我想微服务是当前最好的解决方案。
但当前微服务解决方案需要非常强大的配套方案。服务边界设计、持续集成持续发布、服务编排、服务治理等等。
虽然一部分能力云厂商提供了共用解决方案,但是依然需要不小的成本。
所以,在云厂商没有提供更完善的基础设施之前,请先评估你的团队,是否有能力实施微服务。
微服务方案在研发过程中,加大了协作成本,提高了编程复杂性(研发核心问题-分布式服务),在运维方面,降低了服务性能,但是提高了可用性与扩展性。
2.DDD,领域驱动设计
这里提议的 DDD,主要是想表达一种服务设计方法论。
不合理的服务设计,在你服务足够简单的时候不会有太大的影响,这个影响是随着你服务的复杂度提高而显著提现的。
大型互联网应用一个显著的特点是子系统多。子系统越多,系统之间产生的连接就越多。越往后,一个新系统加入,可能引发问题的概率往往是几何倍数的增加。
所以一个好的服务设计指导方法,在越大的互联网应用中带来的收益越明显。
3.CI/CD、服务编排与治理
CI/CD 不用多说。
服务编排目前云厂商也提供了生产级的能力。
但是服务治理目前云厂商还没有提供完善的基础能力,一般只有大型公司才较为完善。
以上是我在架构上会考虑的一些技术和方法。
评论