一个公司技术栈大概包括 4 个层面的内容:
语言/开发框架:前端后端用了哪些开发语言和框架,如:C++/Java/Go/PHP/JS 等等;vue/spring等等
组件:用了哪些组件来处理数据,如:网关组件、缓存组件、消息队列组件,数据库组件,全文检索组件,监控组件等等;
流程规范:涵盖软件生命周期所有阶段的流程制度和管理规范,如:需求管理流程、产品设计流程、项目开发流程,项目管理流程,项目测试流程,发布/实施流程,监控告警流程,以及产品设计规范、代码开发规范,测试规范、运维规范、数据库规范等等;
支撑系统:上面的流程规范需要有支撑系统,如:项目管理系统、问题管理系统、产品发布系统,代码管理系统等等;
下面梳理了一下java技术栈,供参考。
1、网关
Nginx、Kong、Zuul、Gateway
2、缓存
Redis、MemCached、OsCache、EhCache
3、搜索
ElasticSearch、Solr
4、熔断
Hystrix、Sentinel、resilience4j
5、负载均衡
DNS、F5、LVS、Nginx、OpenResty、HAproxy
6、注册中心
Nacos、Eureka、Zookeeper、Etcd、Consul
7、认证鉴权
JWT、SpringSecurity
8、消息队列
RabbitMQ、Kafka、RocketMQ、ActiveMQ、Redis
9、系统监控
Grafana、Prometheus、Zabbix
10、文件系统
OSS、NFS、FastDFS、MogileFS
11、RPC框架
Dubbo、Motan、Thrift、grpc
12、构建工具
Maven、Gradle
13、集成部署
Docker、Jenkins、Git、Maven
14、分布式配置
Disconf、Apollo、Nacos 、Spring Cloud Config、Diamond
15、压测
LoadRunner、JMeter、AB、webbench
16、数据库
MySQL、Redis、MongoDB、PostgreSQL、Memcache、HBase
17、网络
专用网络VPC、弹性公网IP、CDN
18、数据库中间件
DRDS、Mycat、360 Atlas、Cobar
19、分布式框架
Dubbo、Motan、Spring Could、Spring Could Alibaba
20、分布式任务
XXL-JOB、Elastic-Job、Saturn、Quartz,Hangfire
21、分布式追踪
Pinpoint、CAT、zipkin
22、分布式日志
ELK: elasticsearch、logstash、Kibana
23、项目管理、问题管理
jar、禅道
24、版本库工具
Gogs、SVN
25、版本发布
版本:主分支
------------------------------------------------------》主分支
| | |
开发分支 测试分支 正式版本
开发分支:从主分支上拉开发分支,完成需求功能开发、bug修复等 ,自测无误则合并到主分支。
测试分支:从主分支上拉测试分支,完成测试。(支持测试分支问题修复,而后合并到主分支)
正式版本:测试ok后,从主分拉正式版本分支,并打包发布正式版本。(支持正式分支问题修复和功能点更新,而后合并到主分支)
蓝绿部署、A/B测试、灰度发布/金丝雀发布