备案 控制台
开发者社区 云原生 微服务 文章 正文

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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 云原生应用脚手架是一款基于 Spring Initializr 项目基础之上,支持多种工程架构、提供代码示例片段、组件更丰富、生态更开放的一款脚手架。其致力于在当下云原生时代,为广大开发者提供更简单、更高效的项目构建体验。

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

image.png


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


云原生应用脚手架

常规的工程构建流程

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


手工构建

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


新建工程

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


image.png


新建新项目总体来说比较简单。按照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/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
  http://www.springframework.org/schema/mvc
http://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 Java 相关项目脚手架,通过点击几下鼠标即可帮你生成一个所需的项目,让项目构建变得让没有经验的小白工程师项目构建起来都毫不费劲。尽管如此,一般企业级项目构建过程还是不得不经历:新建工程、添加配置、编写测试代码和运行测试 4 个环节。


新建工程

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


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

image.png


添加配置

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


编写测试代码

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


运行测试

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


云原生应用脚手架构建

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


新建工程

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


image.png


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


image.png


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


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


image.png


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


image.png


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


运行测试

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


小节

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



拥抱开源

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

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


image.png


未来展望

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

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

image.png



加入社区

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

image.png

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
阿里云微服务引擎MSE
目录
相关文章
兮叶William
|
29天前
|
消息中间件 Cloud Native 开发者
电子好书发您分享《阿里云云原生开源开发者沙龙北京站 PPT 合集 》
**阿里云开源沙龙PPT合集:北京站聚焦云原生技术** 探索云原生领域的深度与广度,[阿里云](https://developer.aliyun.com/ebook/8334/116563?spm=a2c6h.26392459.ebook-detail.5.da096cf6t38G15)分享了北京开发者沙龙的精彩内容,涵盖微服务、消息队列等主题,助力开发者洞悉行业趋势。![image](https://ucc.alicdn.com/pic/developer-ecology/cok6a6su42rzm_67b12f6cad6e4b2786859b3a668b3351.png)
兮叶William
52 3
阿里云微服务引擎MSE
|
29天前
|
监控 安全 Cloud Native
云原生开源沙龙北京站开启报名 | 微服务安全零信任架构
「微服务安全零信任架构」主题技术沙龙将于4月13日在北京阿里中心举行,欢迎报名!~
阿里云微服务引擎MSE
2674 1
云原生开源沙龙北京站开启报名 | 微服务安全零信任架构
东风微鸣技术博客
|
29天前
|
Prometheus Cloud Native 数据库
Grafana 系列文章(九):开源云原生日志解决方案 Loki 简介
Grafana 系列文章(九):开源云原生日志解决方案 Loki 简介
东风微鸣技术博客
170 0
中间件小哥
|
7月前
|
Cloud Native 开发者 Java
邀请函 | 云原生开源开发者沙龙「深圳站」
本次活动,我们将云栖大会上容器和微服务相关的精彩内容带到深圳,与您面对面交流,包括 Koordinator、Higress、eBPF 等开源项目,更有 Spring Boot 升级 Spring Cloud 最佳实践的分享。
中间件小哥
3183 1
邀请函 | 云原生开源开发者沙龙「深圳站」
东方睿赢
|
18天前
|
Cloud Native 关系型数据库 分布式数据库
【PolarDB开源】PolarDB与云原生数据库比较:特点、优势与选型建议
【5月更文挑战第26天】PolarDB是阿里云的云原生数据库,以其计算存储分离、一写多读架构和数据一致性保障脱颖而出。与Amazon Aurora和Google Cloud Spanner相比,PolarDB在中国市场更具优势,适合读多写少的场景和需要严格数据一致性的应用。企业在选型时应考虑业务需求、地域、读写比例和兼容性。PolarDB作为优秀解决方案,将在云原生数据库领域持续发挥关键作用。
东方睿赢
136 1
东方睿赢
|
20天前
|
Cloud Native 关系型数据库 分布式数据库
【PolarDB开源】PolarDB数据迁移实战:平滑过渡至云原生数据库
【5月更文挑战第24天】本文介绍了如何平滑迁移数据至阿里云的云原生数据库PolarDB,包括迁移准备、策略选择、步骤、验证及示例代码。通过需求分析、环境准备和数据评估,选择全量、增量或在线迁移策略。使用数据导出、导入及同步工具(如DTS)完成迁移,并在完成后验证数据一致性、性能和安全。正确执行可确保业务连续性和数据完整性。
东方睿赢
122 1
阿里云云原生
|
21天前
|
自然语言处理 监控 Cloud Native
对话阿里云云原生产品负责人李国强:推进可观测产品与OpenTelemetry开源生态全面融合
阿里云宣布多款可观测产品全面升级,其中,应用实时监控服务 ARMS 在业内率先推进了与 OpenTelemetry 开源生态的全面融合,极大丰富了可观测的数据类型及规模,大幅增强了 ARMS 核心能力。本次阿里云 ARMS 产品全面升级的背景是什么?为什么会产生围绕 OpenTelemetry 进行产品演进的核心策略?在云原生、大模型等新型应用架构类型层出不穷的今天,又将如何为企业解决新的挑战?阿里云云原生应用平台产品负责人李国强接受采访解答了这些疑问,点击本文走进全新升级的阿里云可观测产品。
阿里云云原生
41864 7
阿里云云原生
|
23天前
|
Java Serverless Apache
9 个开源项目、25 个课题可选丨欢迎报名阿里云云原生开源之夏
2024 开源之夏,阿里云云原生应用平台团队开放了包括 Apache Dubbo/Apache RocketMQ/Apache Seata/Higress/iLogtail /Nacos/Sentinel/Spring Could Alibaba / Serverless Devs 在内,涉及微服务、消息、可观测、Serverless 4 大技术领域的 9 个开源项目。
阿里云云原生
1090 1
兮叶William
|
29天前
|
Kubernetes Cloud Native 安全
电子好书发您分享《阿里云云原生开源开发者沙龙北京站 PPT 合集》
📚 阿里云开源开发者沙龙北京站精彩回顾!获取PPT合集,深入云原生安全与微服务实践:[北京站PPT](https://developer.aliyun.com/ebook/8334/116563?spm=a2c6h.26392459.ebook-detail.5.4dc56cf6htj2uT) 🚀 图文并茂探讨微服务安全与K8s监控解决方案。不容错过的云原生学习资源!👇
兮叶William
49 2
阿里云云原生
|
29天前
|
安全 Dubbo 应用服务中间件
活动回顾丨云原生开源开发者沙龙北京站回放 & PPT 下载
4 月 13 日,云原生开源开发者沙龙在北京顺利开展。阿里云一线工程师围绕《微服务面临的安全挑战、趋势与解决方案》、《通过 Dubbo 构建零信任安全体系》、《零信任策略下 K8s 安全监控》、《如何构建零信任的网关》、《RocketMQ ACL 2.0 全新升级》、《Nacos安全零信任实践》6 个当下热门议题与现场的百余位开发者展开交流。
阿里云云原生
491 7
云原生

微服务

热门文章

最新文章

  • 1
    微服务架构的理论基础 - 康威定律
  • 2
    微服务(Microservice)那点事
  • 3
    微服务架构下的事务一致性保证
  • 4
    鹰眼跟踪、限流降级,EDAS的微服务解决之道
  • 5
    微服务一站式解决方案Spring Cloud
  • 6
    微服务架构下分布式事务解决方案 —— 阿里GTS
  • 7
    阿里巴巴微服务开源项目盘点(持续更新)
  • 8
    【直播预告】云栖社区特邀专家卢春梦:Spring Cloud 微服务核心组件集 mica 的设计思路
  • 9
    从 SOA 到微服务,企业分布式应用架构在云原生时代如何重塑?
  • 10
    Java微服务开发指南 -- 使用Spring Boot构建微服务
  • 1
    阿里云微服务引擎 MSE 及 API 网关 2024 年 05 月产品动态
    13
  • 2
    HATEOAS 是什么
    14
  • 3
    解决 Spring 中 Prototype Bean 注入后被固定的问题
    12
  • 4
    Java 虚拟机加载 Java 类的过程
    26
  • 5
    Spring MVC 级联对象参数校验
    9
  • 6
    Spring 中一个事务方法调用另一个事务方法会怎样?
    15
  • 7
    Spring MVC 是如何对对象参数进行校验的
    15
  • 8
    【万字长文】微服务整合Shiro+Jwt,源码分析鉴权实战
    145
  • 9
    自定义 Spring MVC Controller 方法参数处理
    46
  • 10
    给 Spring Security 表单增加图形验证码
    47
  • 相关课程

    更多
  • CNCF Alibaba 云原生技术公开课
  • Kubernetes云原生管理实践
  • 阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
  • ALPD云架构师系列 - 云原生DevOps36计
  • 云开发平台快速开发部署云原生应用
  • 云原生技术架构成熟度模型解读
  • 相关电子书

    更多
  • 安永云原生创新驱动力实践探索
  • 云原生加速数字创新的新质生产力
  • 为创新提速,打造智算时代的云原生应用平台
  • 相关实验场景

    更多
  • 每个IT人都想学的“Web应用上云经典架构”实战
  • 云原生场景自动化响应ECS系统事件
  • 云原生HTAP数据库,让你的交易和分析一库搞定
  • 云原生AI套件:五分钟微调宝可梦风格StableDiffusion
  • 云原生AI套件:一键训练大模型及部署GPU共享推理服务
  • 基于云原生网关MSE-Higress插件实现WAF防护能力
  • 下一篇
    2024年阿里云免费云服务器及学生云服务器申请教程参考

    PHP网站源码崇左网站推广工具价格迪庆外贸网站建设吕梁百姓网标王报价辽阳品牌网站设计报价渭南seo网站推广公司张北阿里店铺运营哪家好南阳模板网站建设大鹏优化多少钱重庆网站改版德宏至尊标王塔城企业网站改版推荐肇庆网站定制报价孝感seo排名公司菏泽网站推广公司防城港网站优化按天收费哪家好梅州企业网站设计哪家好武威建设网站公司保山英文网站建设安阳模板制作公司秦皇岛企业网站设计多少钱泉州企业网站建设哪家好濮阳SEO按效果付费推荐秦皇岛优化多少钱吉林网站推广方案推荐固原网站设计多少钱丽水百度标王哪家好黑河网络营销多少钱企业网站建设报价遵义seo排名报价永新网站优化排名公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化