微服务模板

一个工地要启动项目,前期需要搭建基础设施支撑后续搬砖顺利。比如:脚手架的搭建、安全、监控 等。

对于软件工程也是类似,每个项目的初期都需要搭建基础设施。那么对于一个微服务项目,你有用微服务模板吗?一个简单又可以快速帮助搭建的微服务的模板。自从微服务的潮起,搬砖的工作变成多工地模式,每个工地都需要搭建好一套基础设施。

作为 DRY 原则的信奉者,一切重复劳动都是浪费青春(我的青春还需要留着浪呢)。将重复的抽离出来,构建成模板,然后就是模板规模使用(复制粘贴)。

在软件工程领域,一个工程的初始化,包括:技术选型,工程实践,持续集成,持续交付等。展开来说,包括:

  • 技术栈
  • 代码规范
  • 配置管理
  • 测试策略
  • 应用层
  • 数据管理
  • 集成策略
  • 安全策略
  • 持续交付
  • 运维监控

那么对于一个基于 SpringBoot 技术栈的微服务工程,每个维度如何去落地搭建?

代码规范
  • Checkstyle/PMD/FindBugs/AlibabaJavaCodingGuidelines
  • EditorConfig
  • SonarQube
  • API Normalize
配置管理
  • Version control system: Git
  • Build Tool And Dependencies Management:Gradle、Maven
  • Config Management: Spring Cloud Config
  • Env management: Vagrant/Gradle
    • memory size setup
    • network port link
    • database link
    • related to the envrionment configuration
测试策略
  • Unit Test
  • Component Test
  • API Test
  • Contract Test
  • Integration Test
  • Performance Test
  • Test Coverage
应用层
  • DDD Tactics
  • DIP
  • AOP
  • ORM
  • Asnyc
  • Transactional Management
  • DSL
  • API Design: RESTfuls(Idempotent, Error Handling, etc.)
数据管理
  • Migration: Database schema management: flyway
  • Database: RDBMS
  • Message: Kafaka
  • Cache: Redis、Spring Cache
集成策略
  • API Semantic Versioning
  • Event Driven
  • Service Discovery/Register
  • Service Fallback: Hystrix
  • Load Balance: Ribbon
  • API Call: Feign
  • ….
安全策略
  • Auth: session management、Json web token
  • Permission: Data permission、Feature permission
  • Security: CORS、XSS、SQL Inject
持续交付
  • Pipeline: GoCD/Jenkins(pipeline as code)
  • Containeize: Docker
  • Container Scheduling and Management: Kubernetes、Docker Compose
  • Container management platform: Rancher
运维监控
  • APM: APP Dynamic、Pinpoint、Grafana、Prometheus、Zipkin
  • Logging System: EFK
  • Cerebro

写在最后

具体栗子


持续更新…