软件公司技术选型方案
JAVA技术栈
主要技术:
- 基础:计算机基础/JAVA基础/多线程/JVM(MAT)/IO
- WEB框架:Spring Cloud/Spring Boot/Spring MVC
- 数据库中间件:Mybatis/XXXTemplate
- 校验框架:hibernate-validator
- 权限控制:Shiro/JWT/OAuth2.0
- WEB容器:Tomcat
- 负载均衡:Nginx/LVS
- 脚本语言:Linux Shell
- 前端技术:JavaScript/Jquery/VUE/LayUI/Nodejs/ElementUI
- 缓存:Redis/MongoDB
- 数据库:MySQL/Oracle
- 大数据:ClickHouse/ELK/(后期规划Hadoop)
- 搜索引擎:ELK/Mongodb
- 消息服务:Kafka/rocketMQ
- 版本控制:SVN/Git/Gitflow/SourceTree
- 质量管理:禅道/redmine/(JIRA)
- 沟通管理:钉钉
- 数据库迁移:Kettle
- 构建工具:maven
- 注册中心:zookeeper
- 虚拟化容器:Docker/Kubernates
- 分布式存储:FastDF/Hadoop
- 主备机:OracleDataguard/Heartbeat/Keepalive
- 代码管理: 前端代码拆分、模块化,所有maven模块都可以单独运行
- 开发工具:Eclipse/Idea/VSCode
- 操作系统:CentOS/Ubuntu/Redhat
跨端技术:
- 桌面应用:Electron+Express+nedb (NW.js)
- 桌面应用方案二:PyQT
- 移动应用:Reactive+Native+Android
入门教程:
代码示例、命名规范、日志处理、异常统一捕获和处理、参数校验、缓存、持久化等,用Markdown来写
技术规范
- 编码规范
- 文档规范
运维技术
- HA
- 集群
- 系统、数据库、中间件安装使用
- 自动化部署、自动测试、自动运维
人才培养
- 技术积累
- 技术分解(不同人员专注不同领域核心技术)
技术小组划分
- C/C++
- Java
- WEB
- Android
- IOS
平台架构
一般平台按流程划分可以分为5层
- 运行环境层 linux windows 虚拟主机
- 数据存储层 MySQL Oracle
- 基础中间件平台层 MQ 定时任务 缓存Redis 搜索引擎
- 核心业务平台层 Java业务模块
- 表现层 App(Android IOS) Web Pad 桌面应用(Electron) 微信公众号小程序
架构思路:
- SOA架构
- 微服务架构(通过RESTful交互,配置管理、服务治理、断路器、智能路由、分布式会话和集群管理)
代码文档
Github
Gitlab