服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

阿里巴巴正式开源云原生应用脚手架

日期: 来源:阿里巴巴中间件收集编辑:铖朴、良名

12 月 3 日,微服务 x 容器开源开发者 Meetup 上海站上,阿里云智能技术专家,云原生应用脚手架项目负责人良名宣布阿里巴巴云原生应用脚手架项目正式开源,并在现场做了相关内容介绍。


本次开源的云原生应用脚手架是一款基于 Spring Initializr 项目基础之上,支持多种工程架构、提供代码示例片段、组件更丰富、生态更开放的一款脚手架。其致力于在当下云原生时代,为广大开发者提供更简单、更高效的项目构建体验。


01

云原生应用脚手架

Aliware


01


常规的工程构建流程

接下来,我们通过回顾一下过去数十年间一个后端软件工程师一般是怎么来开发一个新项目的来了解云原生应用脚手架。随着技术的发展,和大量提升研发效能工具的持续涌现,一个后端 Java 企业级项目的创建过程总体上经历了手工构建、脚手架构建等历程。


手工构建


在 start.spring.io 脚手架项目被推出之前,很多后端工程师的项目构建过程都是纯手工的形式进行。那时,Spring 项目是后端新项目构建主要使用框架之一。因此,我们以一个 Spring 企业级项目构建为例进行说明。该阶段新建项目大致可分为:新建工程、添加依赖、添加配置、编写测试代码和运行测试5个步骤,接下来分别进行详细说明。

新建工程


在 Spring 项目盛行的手工项目构建阶段,新建工程一般采用得较多的集成开发工具(Integrated Development Environment, IDE)那个时候用得最为普遍的还是 Eclipse。


新建新项目总体来说比较简单。按照 IDE 的新建项目提示即可快速新建一个相关工程。

添加依赖


由于一个企业级项目一般会依赖于很多外部组件,比如 MySQL 数据库、Redis 缓存,因此需要添加很多第三方组件依赖。这个过程比较繁琐,需要操作的同学了解具体所需的功能与对应的依赖名称,有的功能还可能需要多个组合依赖。当项目所需外部依赖较多时,整个过程会比较耗时。对于一些有经验的工程师,一般都通过留存一些项目依赖模板,在创建新项目的时候通过参考模板来进行依赖添加,这样能稍微加快项目构建进程。

添加配置


Spring 项目构建过程中最为复杂的部分莫过于进行各种各样的配置了,例如下方所示为一个基本的 MySQL 连接配置:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd  http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-4.3.xsd  http://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd "  default-lazy-init="false">  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"    destroy-method="close">    <property name="driverClass" value="com.mysql.jdbc.Driver" />    <property name="jdbcUrl" value="jdbc:mysql://10.0.xxx.xxx:3306/xxxxx?xxxxx" />    <property name="user" value="root" />    <property name="password" value="root" />    <property name="maxPoolSize" value="40" />    <property name="minPoolSize" value="1" />    <property name="initialPoolSize" value="1" />    <property name="maxIdleTime" value="20" />  </bean>  <!--配置sqlSessionFactory -->  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">    <property name="dataSource" ref="dataSource" />    <property name="configLocation" value="classpath:mybatis-xxx.xml" />  </bean></beans>

除了数据库,依赖的外部组件都需要进行手动编写配置文件,完成项目配置,整个过程非常繁琐。就算有参考模板通过拷贝相关文件来做二次修改,也可能稍不留神就出现漏配或者错配一些内容,导致项目运行不起来。

编写测试代码


在完成以上依赖添加和配置设置以后,为了验证项目依赖和配置是否都正确,一般还需要编写一些最简单的测试case来对上述过程进行验证。

运行测试


对于一些经历过多次项目构建并且留有一些自备模板的老司机,按照模板完成上述操作后一般问题就不大,到这里基本上算是完成了新项目的初始化工作。如果是一些新人,之前没有模板参考,或者备用模板无法满足需求的人,到这里基本上还只是噩梦的开始,测试过程中很可能出现各种依赖缺失、依赖冲突、配置漏配或配置错误等问题,需要不断反复修改调试。整个过程耗时费力。

因此,在手工项目构建阶段,为了追求效率,一般新项目工程构建的任务都交给团队内较为资深,有多次项目构建经验的资深工程师来进行,以提高效率。如果在没有模板参考的情况下,很有可能新建一个项目可能花1天时间都不一定能搞定。

脚手架构建


随着 Spring Boot 慢慢成为新项目构建的主流选择,其提出的“约定优于配置”的设计,通过为组件提供默认配置以及通过 starter 依赖的方式极大的简化了手工构建时期的配置繁琐问题,做到了让一般的常规项目达到开箱即用的效果。另外,来自 Spring 社区的 start.spring.io[1] Java 相关项目脚手架,通过点击几下鼠标即可帮你生成一个所需的项目,让项目构建变得让没有经验的小白工程师项目构建起来都毫不费劲。尽管如此,一般企业级项目构建过程还是不得不经历:新建工程、添加配置、编写测试代码和运行测试 4 个环节。

[1] start.spring.io

https://start.spring.io/


新建工程


相比于手工项目构建时期的 Eclipse IDE,新阶段也有了新的更好用的 IDE——IntelliJ IDEA。相比于 Eclipse 单一的白色界面。IDEA 提供了炫酷的暗黑模式,让大量长时间写代码的工程师们缓解了用眼疲劳问题。由于 start.spring.io 工程脚手架的出现并与 IntelliJ IDEA 进行了整合。在 IDE 中新建工程、添加依赖仅需通过点击几下鼠标即可帮你生成一个所需的包含特定依赖的项目。

在 https://start.spring.io 网站上进行工程创建:


添加配置


虽然通过 start.spring.io 脚手架可以帮助用户很好地解决依赖添加问题,但其创建项目过程无法为用户创建示例代码和相应的参数配置示例,在该阶段用户仍然需要自己手动编写或者 Copy 一些模板配置来进行二次修改。

编写测试代码


市面上主流的脚手架工具在创建项目过程中也无法为用户创建示例代码,在该阶段用户仍然需要自己手动编写或者 Copy 一些模板代码来完成测试验证代码的补充。

运行测试


由于有脚手架帮助进行项目创建,脚手架本身会帮助用户保证所选依赖之间具备兼容性,所以一般通过脚手架工具生成的项目一般都没有问题,因此,只要保证编写的测试代码本身正确无误一般运行测试阶段象征性的测试一下运行无误整个项目创建就完成了。

云原生应用脚手架构建


本次开源的云原生应用脚手架基于 Spring 开源的 intializr[2]项目进行构建。相比于 start.spring.io 脚手架,云原生应用脚手架不仅可以帮助用户管理依赖,其更为重要的是帮助用户生成测试或者可以直接使用的代码片段,可让用户创建完工程就可测试,测试完就可以基于示例代码进行项目开发。因此,基于云原生应用脚手架构建项目仅需完成:新建工程和运行测试即可,大大提高新建工程的效率。

[2] intializr

https://github.com/spring-io/initializr


新建工程


与 start.spring.io 脚手架一样我们也提供了 2 种帮助用户直接构建应用的访问方式,用户既可以在IDEA中通过在项目构建时选择所需的依赖进行项目构建:


用户也可以在官网。start.aliyun.com[3]中进行项目构建后,再将项目导入到本地开发环境:

[3] start.aliyun.com

https://start.aliyun.com/



通过云原生应用脚手架构建的项目,不仅具备了依赖、配置还有相关的示例代码,构建完成即可进行项目测试。


下图是一个 Spring Cloud Alibaba 工程使用 Nacos 作为注册中心,服务消费者项目构建过程中提供的示例代码:



下图是一个 Spring Cloud Alibaba 工程使用 Nacos 作为注册中心,服务消费者项目构建过程中提供的注册中心连接示例配置:


另外,针对云原生场景下的,大量企业级用户的用云述求,我们为用户提供云厂商所提供的云服务客户端连接所需的依赖添加能力,帮助外部用户更好地在云原生时代基于云构建可生在云上,长在云上的云原生应用。

运行测试


由于有脚手架帮助进行项目创建,脚手架本身已经帮助用户保证所选依赖之间具备兼容性,并且已经给出配置示例,用户仅需比如修改配置示例中的注册中心链接地址等信息,即可使用示例代码进行功能测试。整个过程实现了开箱即用的效果,用户再也不用关心如果新构建的项目依赖是否兼容、配置是否正确、示例代码如何编写等问题。帮助工程师们扫除一切项目构建阶段的障碍。

02


小节

最后,由于手动构建方式无论什么内容都需要用户手动设置或者添加,跟脚手架方式比不具备优势。因此,我们仅小节对比一下一般脚手架构建和云原生脚手架构建项目之间的区别和差异:



03


拥抱开源

云原生脚手架的前身——Aliyun 工程脚手架,于 2020 年初正式发布上线,在过去的 2 年多时间,其为外部用户构建了数百万个新项目,为广大开发者带来了实实在在的便利和价值!


在服务外部用户 2 年多个时间里,我们一方面收到了很多用户对脚手架的开源诉求,另外一方面考虑到脚手架长期的发展,如今,通过开源的方式,希望能聚集一批开发者一起共同建设云原生时代更加好用,生态更加繁荣的项目构建工具,未来,我们会在当前所提供的能力基础之上,在以下方面进行持续建设:


02

未来展望

Aliware

云原生应用脚手架是站在 Spring 社区的 Initializr 基础工程和 start.spring.io 脚手架巨人的肩膀上构建而来,能有机会在过去2年服务大量用户并在如今有机会开源出来,首先需要向前辈致敬!

云原生应用脚手架项目在未来计划建设为一个功能强大,社区生态丰富的应用构建工具,为大量需要构建云原生微服务应用的用户提供便利,社区未来的相关规划如下图所示:


03

加入社区

Aliware

目前,国内外云原生应用相关的构建脚手架领域基本处于空白状态。阿里巴巴云原生应用脚手架今天开源了!欢迎加入社区,一起来参与来构建一款服务广大开发者的云原生应用脚手架工具。钉钉群号:32268357



点击阅读原文,进入 GitHub 链接: https://github.com/alibaba/cloud-native-app-initializer

相关阅读

  • 闲话 dubbogo 社区

  • dubbogo 社区发展 7 年多,dubbogo 登记用户已达 63 家【详见 https://github.com/apache/dubbo-go/issues/2 】,真实用户应该更多。于某在支持某 dubbogo 用户时,曾提议让他们
  • 长春2023年城建重点项目集中开工

  • 今天,长春27个城建重点项目集中开工,年度投资267亿元,标志着长春新一轮城市建设全面铺开。本次集中开工的项目包括长春经济圈环线高速、世纪大街快速路、轨道交通等重大城市交
  • 加强部门合作交流 合力开展科研项目申报

  • 为扩展2023年科研项目申报思路,推动部门间合作交流,2月22日上午,危化品安全研究所、分析测试部与安全工程研究所共同开展了科研项目申报交流会,各部门负责人及技术人员参
  • 跨境机遇涌现,品牌出海正当时

  • 近几年,人们目睹电子商务渗透率在全球市场不断攀升,跨境电商行业经历了爆发式的增长。受全球疫情影响,“宅经济”开始搭台唱戏。电商平台快速取代线下消费场景,一跃成为消费者购
  • 2022年杭州共对2984个物业管理项目进行考核

  • 物业管理近日,2022年度杭州市物业管理项目考核评价情况公布,全年共对2429个住宅小区物业管理项目、555个非住宅项目进行了考核评价,并建立了新的考核机制,一起来看看有什么变化
  • 红队视角下的Windows RPC

  • 更多安全资讯和分析文章请关注启明星辰ADLab微信公众号及官方网站(adlab.venustech.com.cn)0x00 前言本文将介绍Windows RPC服务,在红队(Red Team)视角下的一些利用方式,并不会产

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 阿里巴巴正式开源云原生应用脚手架

  • 12 月 3 日,微服务 x 容器开源开发者 Meetup 上海站上,阿里云智能技术专家,云原生应用脚手架项目负责人良名宣布阿里巴巴云原生应用脚手架项目正式开源,并在现场做了相关内容介
  • 如何使用 rust 写内核模块

  • 近年来,Rust 语言以内存安全、高可靠性、零抽象等能力获得大量开发者关注,而这些特性恰好是内核编程中所需要的,所以我们看下如何用rust来写Linux内核模块。01Rust 与内核模块A
  • 闲话 dubbogo 社区

  • dubbogo 社区发展 7 年多,dubbogo 登记用户已达 63 家【详见 https://github.com/apache/dubbo-go/issues/2 】,真实用户应该更多。于某在支持某 dubbogo 用户时,曾提议让他们
  • 极氪汽车 APP 系统云原生架构转型实践

  • 前言Aliware新能源汽车已经成为我国汽车市场再次崛起的关键支柱,随着新能源汽车市场的快速发展,不同类型的品牌造车厂商呈现出百花齐放的态势。极氪汽车是吉利控股集团旗下高