我们认为微服务是一种很抽象的概念和技术。您可以使用任何语言或技术来构建微服务。但后续的维护和实施支撑可能会抵消掉这种系统架构设计带来的一切优势。
GeneXus的理念是创建、维护和演进前所未有的软件解决方案。我们一直致力于在许多方面演进GeneXus产品,以便通过GeneXus能够去创建未来的系统,尤其是使用微服务架构设计的系统。
我们相信使用GeneXus在面对这些挑战时,解决的唯一方式是通过基于知识库的设计,充分了解所有的服务内容,并且掌握维护和演进它们的方法。
为什么通过GeneXus来实现微服务是一个不错的选择?
⬛ 微服务所有的内容必须由一个小团队来完成
当您有一个非常完整的团队架构时,一些工作很有可能会被安排给好几个不同的团队来完成。例如,后端服务团队,安全团队,数据建模团队,前端开发人员等等。
而当您在一个微服务体系架构中开发时,您应该聚焦在业务场景。您的团队一般来说是一个小团队,但又必须能完成微服务所有层面的工作内容。
而这对于GeneXus开发人员是非常好的,因为GeneXus自一开始就是以这种方式工作的。
在开发微服务时,你必须考虑到服务的各个架构层都需要编程(用户界面层,数据层,业务层)。如果你是使用GeneXus的话,这些工作则会变得简单且更高效。
在这方面,我们在GeneXus 16中加入了更多的特性,能够让一个小团队使用微服务架构实现一个业务场景的完整功能。
我们加入了UX、集成和安全等方面的一些特性。就GeneXus的UX而言,一个小团队就可以使用人工智能创建智能终端,也可以为我们的业务场景开发移动APP,Web以及聊天机器人等多体验的终端应用。
⬛ GeneXus可以解决数据演变和共享所面临的挑战
数据共享、原子数据、事件溯源等这些问题都可以通过GeneXus来解决。
GeneXus为所有微服务的数据模型演变提供了最佳的解决方式。这些都可以在GeneXus知识库中通过我们的方法完美实现。
但是对于微服务架构,为了将多个服务隔离开,您可能会有多个知识库。
GeneXus 16整合了新的数据存储,这些数据存储能够完美匹配一些实现模式(如事件溯源)。我们已经集成了对Kafka、DynamoDB的支持,之后还将继续添加新的数据源,例如Hyperledger Blockchain,以及更多能够支持不同实现模式的数据源。
我们每两个月就会发布一个新的版本,很快我们即将发布的版本会实现用更高层级的抽象方式来处理以下几个微服务模式:
●事件溯源(EVENT SOURCING)
即使在现在的GeneXus版本中,您也可以通过使用例如Serverless和Kafka或DynamoDB或者其他的DBMS来实现此模式。我们正努力实现将事件建模抽象到更高一个层次的方法。
●API演变分析(API Evolution Analysis)
如今,微服务演变的主要关注点之一就是API的演变。对于GeneXus而言,这些工作和数据演变一样,都能够自动完成。
●封装(Encapsulation)
我们正致力于使用知识矩阵(Knowledge Matrix.)来增强模块(Module)的功能,以及模块共享的方式。通过其他几个特性之间的知识矩阵,团队会具备发现、共享和发布服务的能力。该矩阵将会有一个在线版本和企业内部安装版本。我们要时刻谨记,微服务的一个主要挑战就是避免相依性地狱(dependency hell)问题。所以我们将整合几个工具,以便更广泛得了解系统是什么。
●观察(Observable)
当有很多服务时能够使扩展性得到更大的效果,但每个服务都应该能通过日志或者相关的消息来观察。
在GeneXus 16中,我们集成了新的日志API,它可以与Elastic Stack(Logstach, Elastic Search 和Kibana)结合使用,以便收集和分析操作信息。
⬛ 使用BPM整合微服务
人工智能和工作流是任何行业打造未来系统中最重要的技术。人工智能是当今最热门的话题话题之一,为了能够在服务中使用,GeneXus已经集成了一个GeneXus AI模块。同时我们相信BPM是整合微服务最重要的工具,为此,GeneXus已经内置了一个工作流工具。
BPM仍然在不断的演进,以解决更复杂的模式,例如SAGAs服务。在微服务架构中,GeneXus有很强的业务流程建模、执行和监控方面的基础。
⬛ 通过GeneXus能够实现完全的自动化发布
团队和服务都应该使用自动化技术,这样才能保证管理和运维的高效。自动化是GeneXus的基础理念。
如果您不能引入各个开发方面的自动化,那么使用大量的微服务反而会变得一团糟。
GeneXus Server
将开发流程进行pipeline管理方式,最简单的开始方法是通过GeneXus和GXserver为项目建立分支/版本模型。
GXserver提供了SCM和PipeLine控制(开发、构建、SCA、测试、原型和发布)
开发/构建 ---> Jenkins Plugin + MSBuild Tasks
SCA ---> KBDoctor and Security Scanner
测试---> GXtest V4
原型和发布--> Docker容器和发布到PaaS或Serverless
持续集成(CI)