本文简单介绍Jhipster是什么,为什么用Jhipster,怎么用Jhipster。
WHAT - 技术栈
JHipster是什么
JHipster是一个开发平台,用于生成,开发,部署Spring Boot + Angular/React Web Application和Spring microservices。
JHipster能做什么
JHipster可以自动化生成一个完整和现代的Web应用程序或微服务架构。
基于Spring Boot框架的服务端,具备高性能和高可用的Java技术栈;
基于Angular,React和Bootstrap的时尚,现代,移动优先的前端;
基于JHipster Registry,Netflix OSS,ELK堆栈和Docker的强大的微服务架构;
使用Yeoman,Webpack和Maven/Gradle构建应用程序的强大工作流程。
JHipster开发效率
以10个微服务,每个微服务包含1个数据表和4个UI界面(基本CURD界面)的开发规模为例:
工作项 | 人工开发(人天) | JHipster开发(人天) |
---|---|---|
数据库建表 | 1 | 0 |
项目创建及配置文件编写 | 2 | 0 |
开发CURD代码 | 5 | 1 |
开发前端UI | 10 | 1 |
合计: | 18 | 2 |
在实际项目中因为定制化工作的需要,开发效率的差距会比这个小,但正常情况下减少一半以上的工作量是可以达到的。
前端技术栈
Angular 5和React
Bootstrap响应式网页设计
HTML5
国际化
CSS的Sass
WebSocket
使用Yarn安装新的JavaScript库
使用Webpack构建,优化和实时加载
使用Jest和Protractor进行测试
支持Thymeleaf模板引擎
后端技术栈
Spring Boot
Maven和Gradle
Spring Security
Spring MVC REST + Jackson
Spring Websocket
Spring Data JPA
Liquibase
Elasticsearch
MongoDB和Couchbase
Cassandra
Kafka
微服务技术栈
使用Netflix Zuul或Traefik作为HTTP路由
使用Netflix Eureka或HashiCorp Consul作为服务发现
使用Spring Cloud Config作为统一配置
CI/CD支持
Jenkins
Travis CI
GitLab CI
Circle CI
部署环境支持
使用ELK堆栈进行应用指标监控
使用ehcache,hazelcast或Infinispan进行缓存
优化的静态资源(gzip过滤器,HTTP缓存头)
使用Logback进行日志管理,可在运行时进行配置
使用HikariCP连接池以获得最佳性能
构建标准WAR文件或可执行JAR文件
完整的Docker和Docker-Compse支持
支持所有主要云提供商:AWS,Cloud Foundry,Heroku,Kubernetes,OpenShift,Docker等
哪些公司在用
WHY - 方法和实践
复杂架构设计的思路
业界对JHipster的评价
- DDD(领域驱动设计)的最佳实践
- 微服务架构的最佳实践
- 敏捷开发的最佳实践
- DevOps的最佳实践
HOW - 应用场景
标准化的数据访问服务
- 场景:通过JHipster生成标准化的数据访问微服务(简称DAMS),DAMS与数据库直接交互,提供Restful API给上层业务微服务调用。
- 效果:工程代码规范的标准化,标准代码开发的自动化,隔离业务逻辑和数据访问逻辑。
- 实现:现有JHipster功能即可满足。
客户项目的定制开发
- 场景:定制化开发工作,通过JHipster自动生成骨干代码,后期数据库设计变更,也可通过JHipster自动化更新代码。
- 效果:提高开发效率和代码质量,降低项目成本。
- 实现:现有JHipster功能即可满足。
开放平台和应用市场
- 场景:开发人员编写业务领域模型,JHipster自动生成后端微服务和前端UI。
- 效果:作为一种PaaS服务能力提供给开发者。
- 实现:需定制化JHipster源码。
GOAL - 目标和价值
参考资料
Web Site:www.jhipster.tech
JHipster Online:start.jhipster.tech
Github:github.com/jhipster/generator-jhipster
Docker:store.docker.com
相关文章
JHipster生成微服务架构的应用栈
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。