现代APaaS是由哪些技术栈构成的?

文/明道云CTO金可伟

从PC时代到移动互联网时代,软件技术架构得到了充分的发展,尤其是互联网企业助推了一大波的技术拓展与变革,因为他们所面临的用户量、交易量、数据量并非传统架构可以解决,比如早年的阿里去IOE化,现在的数据中台战略等就可一窥究竟。随着业务的深入,他们对技术栈以及软件架构提出了更多的诉求,软件技术领域蓬勃发展,随之产生了非常多的现代软件架构理论与开源项目。

现代软件架构领域的变革之路,主要包括单体应用、SOA、微服务以及云原生应用

  • 单体应用

软件发展早期通常都是单体应用,将前端界面、业务逻辑、数据存储逻辑等都放在一个war包或者一个工程里面,没有专业的技术分工,大家共用一个工程,要求开发人员具备前后端的能力。对于轻量级的应用采用这种架构无可厚非,测试与部署便捷,比如现在主流的Wordpress、Drupal,但对于现代互联网应用,比如APaaS这类复杂应用来说就显得力不从心了。单体应用耦合度太高,前后端混用,强部署依赖性(改个文案还要连带后端一起部署),根本无法满足现代互联网应用在迭代速度、系统扩展性、资源利用率优化上的要求。

  • SOA(面向服务的架构)

由于单体应用无法满足现代复杂应用,对单体应用的拆分便应运而生,通常来说根据业务模块的诉求进行拆分,不同的业务通过消息总线进行通信与集成。虽然SOA架构对服务做了拆分,但SOA的组件一般比较大型,发布版本一般更加复杂,统一通过消息总线管道来处理不同业务之间的逻辑,导致消息总线也变得异常复杂,且不同业务之间严重依赖消息总线。

  • 微服务

微服务架构和SOA架构非常类似,但微服务架构更强调“业务模块彻底的组件化、服务化以及去中心化“的原则,它去除了消息总线中心化的机制,各个服务之间在需要的情况下可相互调用,通常以Http Rest API或者RPC方式进行通信。服务自治是微服务架构最大的特点,每个服务可由独立的团队来负责开发,可独立部署扩展而不影响其它服务,也可采用不用的技术栈来实现业务。现代互联网产品特别是平台类产品是异常复杂的,通常采用微服务架构以及混合型语言进行开发迭代,由擅长不同领域的工程师各司其职。

  • 云原生应用

随着云计算的普及,过去昂贵的IT资源变得像水电一样,我们仅仅只需要数分钟乃至数秒钟时间即可获得一台云主机,相比传统的服务器数据中心上架那可是指数级的效率提升。云时代需要需要新的技术架构,来帮助企业更好地利用云计算优势,充分释放云计算红利,帮助现代软件快速,持续,可靠,规模化地交付。云原生应用正是如此,一旦开发完成便可部署到任意公有云、私有云乃至跨云数据中心上,可便捷地跑在容器服务、Kubernetes服务、云主机上亦或无服务计算环境上。云原生应用以微服务作为基础要求,采用DevOps和容器为代表的基础架构组成。

现代APaaS是一个复杂的应用门类,一个完整的APaaS应用应当包含复杂健壮的数据模型、基于角色的管理权限体系、丰富的前端视图布局与自定义界面能力、稳定且可扩展的自动化流程引擎、强大的报表可视化以及分析能力、插件化扩展集成能力和充分的开放体系。

为了支撑以上能力,APaaS应用通常会使用微服务的架构模式,并且迎合云计算更多地实践云原生理念,使用云原生生态工具,同时APaaS会大量采用开源软件框架,并组合使用多种技术栈。

  • 主流的技术框架

采用主流的技术框架体系,如Springboot、Dubble、.Netcore 跨平台方案、NodeJS Express、LAMP,前端主流三大框架Angular、React、Vue,RPC框架如gPRC、Thrift等。这些框架往往具备完整的文档,丰富的应用场景,活跃的社区生态,来满足软件快速高效迭代的工程诉求。

  • 自动化流程引擎

APaaS应用通常会包含业务流程自动化的特性,这部分业界也有比较成熟的BPM开源方案,如Activiti,JFlow等,但以上技术框架往往比较复杂与臃肿,因此也有不少厂商会采用自研的方案。明道云的工作流就是完全自研的引擎,并通过消息队列引擎来进行拓展,如Kafka、RabbitMQ、Redis等。

  • 消息队列

消息队列在现代软件中使用非常广泛,它可以覆盖到非常多的场景,典型的比如业务的异步处理、消息通知、自动化流程、日志处理、用户活动跟踪、运营指标、流式处理等。目前现代软件使用最多的是Kafka、RabbitMQ、RocketMQ与轻量级的Redis队列,合理的使用消息队列,不仅仅可以提高系统吞吐量,也可以有效降低系统耦合度减小复杂度,消息队列目前被广泛的运用在APaaS应用中。

  • NoSQL

相较传统软件,现代APaaS通过SaaS模式向大量用户提供公共服务,动辄数万乃至数十万的流量是非常普遍的。因此,系统吞吐量从系统一开始设计的时候就被列为重要指标,一个健壮的APaaS服务应当是可以随时弹性扩展的。在这个约束下,传统的RDS难以为继,系统往往会引入NoSQL的缓存以及存储设计方案,提升系统性能,比如使用基于Key-Value的缓存体系如Redis、Memory,使用文档型数据库做数据存储如MongoDB,甚至使用列式数据存储来做数据存储如Cassandra、HBase等,这类NoSQL方案往往天生具备了集群部署、分布式存储的特征,大大简化了在系统架构设计上所面临的问题。

  • 分布式存储

现代APaaS应用也面临着存储上限的问题,这里包括了结构化及非结构化的数据存储,这个问题主要是由于物理设备的容量引起的。为了规避以上问题,目前业界通常使用公有云的云存储服务,比如阿里云、腾讯云、七牛云、又拍云对象存储方案。当然也有使用自建方案,通常使用HDFS、FastDFS、Ceph、Minio等开源方案,这些方案不仅仅解决了存储上限的问题,多副本的架构设计同时解决了文件丢失与恢复的问题。

  • 容器化与编排

现代APaaS应用都应当以微服务化为基础架构准则,基于微服务的应用方能引入容器化以及容器编排标准Kubernetes。容器以及使用编排工具带来的技术与运维优势是显而易见的,它带来了高效的资源管理,无缝的服务扩展,高可用的服务,以更低成本和大规模的运营,以及高效的跨云管理等。明道云的私有部署版本主要基于容器技术运行,也提供Kubernetes的部署版本,SaaS版本运行在Kubernetes集群下。它能够和SaaS版本保持核心代码一致,但满足了不同类型的客户需求。

  • 云服务

云计算不仅为我们提供了云主机服务,还提供了多样的计算、存储、数据、文件等PaaS类服务。在此基础上,我们可以充分使用云计算服务,我们只需要关注我们应用上层逻辑,无需更多关注运行环境、运维保障等非工程事务,如我们可以使用云计算环境下的负载均衡、容器服务、RDS、消息队列、云函数等服务,充分发挥云计算给我们带来的技术红利。

以上所列技术栈是现代APaaS通常采用的方案,相信随着云计算的发展与深入,以及物联网、5G的发展,未来会有更多的技术栈与社区涌现出来!明道云作为现代APaaS服务的典型代表,也一直关注着技术前沿,也保持着技术栈的迭代与升级,我们也希望通过技术升级来提升用户体验与产品的可靠性。

关于明道云

明道云是一个创新的超级应用平台,可以帮助用户零代码构建企业应用,用户不需要代码开发就能够搭建出用户体验上佳的销售、运营、人事、采购等核心业务应用,打通企业内部数据。明道云还具备超自动化引擎,可以全面自动化复杂和重复的业务流程。运用明道云的集成中心与完整的API对接能力,用户可以轻松地将明道云与外部系统集成。除此之外,明道云超级应用平台还具备很高的可组合性,国际化支持,并支持云原生架构,实现了多云部署能力。通过插件架构,明道云正在逐步建立起繁荣的实施与开发生态。

明道云可以帮助企业大大节省软件费用、降低定制开发的成本和时间,拥有一个极度灵活和易用的数字化平台,是企业数字化建设的重要工具。目前已有上百万用户使用,付费企业超过4000家,包括可口可乐、复星集团、中国移动、中国联通、中国电信、中铁集团、北京地铁、佛山铁路、华夏银行、民生银行、迪卡侬、艾默生电气、泰科电子、四川航空、东方证券、万豪酒店、洲际酒店等知名客户。

2021年5月,明道云获得海纳亚洲近亿元投资。公司目前有超过130名员工,产品研发团队过半,总部位于上海漕河泾开发区,在北京、广州、深圳、成都、郑州、武汉、西安和宁波设有分支机构。公司为高新技术企业,上海市专新特精认定企业。