什么是Aiursoft平台

Aiursoft平台是一个由一系列松散耦合的服务共同构建起来的应用程序。它本身作为一个微服务架构的实例存在。

什么是微服务

微服务是一个面向服务架构(SOA)架构风格的变体。在微服务架构中,服务都会被充分细化,而协议则足够轻量。

将一个应用程序分解未多个不同的小型服务的好处是它可以让程序进一步模块化,并且更有助于理解、开发和测试。在开发过程中,微服务允许由多个小型独立团队分别进行开发、部署、扩展,以实现开发的并行。而基于微服务的体系结构更可以实现持续交付和持续部署。

有关详细的微服务的概念,请参考什么是微服务

Aiursoft的构建背景

根据调查,全球Web应用开发的发展在1997年开始,2001年全面注重单一式应用程序的构建,一直到2007年,涌现出了大量的典型的单一式应用程序。但从2001年开始,也诞生了Agile,也就是敏捷开发的概念。随着开发技术的发展,在2005年的Web服务边缘会议上,Peter Rodgers第一次提出了微Web服务的概念,这对于“类是细粒度化的服务”这一观点提出了先驱性的概念。而在2012年5月,在威尼斯附近的软件架构师研讨会上决定使用“微服务”一词作为这一类构建风格的名称。在这之后,许多企业都采用了微服务这一架构,并进而涌现出了相当多的工具和框架。各个社区中对微服务的讨论也越来越频繁。

而微服务的概念本身并非出现在这种架构之前。所谓我们讨论架构是因为它能够允许系统在整个生命周期内发展并变化服务。在软件工程领域中,架构关心的是提供系统的功能之间的桥梁和系统必须满足的质量要求。这些内容在过去的几十年中已经被非常彻底充分的研究过了,众多软件工程师给出了不同的结论,这些构成了提供广泛功能以及满足广泛需求的系统化方法。而微服务架构仅仅是其中一个方法。

在上述架构的研究过程中,驱动力是源自于需求的满足。而我国的早在数十年前就已经诞生了电子商务的模式。市场的具有典型的变化快、需求变更频繁的特点。而讨论如何实现这类需求的架构往往就归结到一种“细粒度化”的模式。这类将大型项目拆分为数个独立的项目并由数个敏捷团队独立开发的模式实质上是符合微服务的定义的。但是,随着国际上将这些标准统一化,我国并没有出现更多的研究内容和框架和项目。在国际上,微软凭借其.NET技术构建了大量微服务英语,并积累了大量经验。其已经给出了完整的微服务解决方案,也就是.NET Core + Azure + Service Fabric。在开源社区中也有相当多的微服务框架,包括Steeltoe OSS、Microdot Framework,而面向微服务的工具就多得数不胜数了。 Aiursoft构建的目的并非是给出一个可以广泛使用的微服务框架,而是依赖一个比较成熟的框架对其进行研究并给出实例。由于市场的原因,微服务实例建设方面,我国许多企业,尤其是互联网企业都具有较丰富的经验。这包括:百度、阿里、腾讯、网易、滴滴等众多企业。我国在全自动化部署、持续整合、API网关等建设方面也已经具有非常出色的。而在国际上,Amazon、Google、Microsoft、Uber、Netflex等相当多的企业也已经采用了微服务,相当多的研究机构不但正在使用,还给出了相应的工具与框架。虽然我国在实际应用上并不落后,但国际上更多的在基础框架和工具建设上更加领先。

Aiursoft的构建流程

Aiursoft的构建旨在进行一次尝试,以.NET Core为工具,以云为构建的目标,以频繁的业务需求变更为背景,进而得到一个比较理想的微服务方案实例。

Aiursoft在最初的设计之时就计划采用微服务架构,也就是说,Aiursoft并非为了解决“如何拆”的问题,而是专注于解决“如何构建”的问题。

行业调研

有些应用能够成功迭代以应对短暂的市场需求,有些应用又会在很短的时间内被取代。而出色的应用往往都是能够快速应对需求的变更,而快速迭代新的功能的。在这背后又有很多可以讨论的问题:开发者在开发过程中关注什么?有哪些急需解决的问题?传统的开发方法有什么不足?目前各个企业又是如何解决问题的?

Aiursoft旨在得到一个方案的实例,那么这个方案显然应该尽可能解决更多在微服务构建上的问题。构建一个从来不会被人参考的架构是没有任何意义的,因此我们在进行构建时一定是经历过充分的调研,归纳出数个非常高频的问题,进而逐一讨论每个问题的解决方案。

分析需求

今天的互联网行业中,市场的客户需求转变速度非常快,往往会在几周内就会有新的市场被开辟。如何快速抓住新的需求,快速构建出解决方案一直是一个难题。强大的软件基础设施往往能够在构建时提供更强大的保障,而强大的开发框架和工具又能带来效率的变革。Aiursoft对需求的分析,包括下面两点:

  • 开发者往往需要什么样的软件基础设施,来保障在新的需求来临时快速扩展
  • 市场往往会带来什么样的需求,需要开发者快速给出解决方案

研究实现技术

Aiursoft的构建目标,是面向云的,也是面向频繁的需求变更的。如何能够快速迭代、高效部署、监控等,都是非常棘手的问题。为了解决这些问题往往需要准备一些实现技术基础和相关工具。

Aiursoft全部采用.NET Core构建,这是因为.NET Core是专门针对模块化的架构而设计,具有自宿主、可裁剪等特性,而非常适合构建微服务应用。而容器技术又提供了非常优秀的伸缩、扩展、维护、监控的特性,本身对于.NET Core又提供了非常优秀的支持。

Aiursoft在构建时,都必须建立在相关技术能够熟练应用的基础上。

设计微服务平台

Aiursoft本身作为微服务的实用实例,在最初构建时就采用了微服务框架。这在一定程度上将各个服务划分到了两层之中,分别是:

  • 用于构建平台本身的各个基础服务
  • 用于面向高层需求的各个应用服务

我们可以将这两层称为“基础设施”和“高层应用”。构建基础设施时必须考虑高度的可重用价值,用于驱动整个平台运行,提供高层应用容易访问的接口,并根据需求分析,将预测到的可能的需求依赖的功能进行完善。

在构建高层服务时,则需要根据具体市场需求。这一部分的构建将主要起到示范作用,演示如何在平台的基础上面向用户构建服务。