技术选型
架构需要考虑哪些问题?
前言
架构演进之路,不废话,本文就介绍了架构师需要知道整体内容
一、架构师究竟要考虑哪些问题?
前置:
架构层面是不分任何前端,后端,各个垂直领域,都需要掌握一些。
架构包含为:微观、中观、宏观
工作中:
中观:工具、设计、语言等便中观
宏观:方法论、架构
微观:底层细节
举个例子:
如mysql–
mysql使用如连接,crud工具中观内容
mysql底层如引擎等属于微观
mysql数据量变大,要做一些分库分表设计
二、技术栈选型
1.创业初期,技术栈如何选型?
创业初期,架构特点
目标:
以产品快速交付为目标
单机系统:(all in one)
程序耦合 (all in one )
1.技术栈选型:
比如很多公司是Java。为什么是Java 为什么是MySQL呢?
但比如携程.net体系呢?微博站点层是PHP,服务是Java ,阿里现在站点和服务都是Java
这个时候选我们可能会选会的,熟悉的,但是这个时候要架构师一定要考虑长远,后期业务发展,后是否会容易拆分,建议选择当下比较流行的体系
2.框架组件,用开源还是自研?
早期,人员少,业务不复杂,尽量不要自研,使用开源框架 组件工具,快速迭代
如阿里早期CXF,去AOE
后期,可以适当自研
注意的是,即便使用自研也要控制技术栈,尽量统一
绝对不能想用什么就用什么
否则在后期服务复杂化之后,互相调用时候,跨部门调用会非常麻烦,会重复造轮子,研发、运维、测试投入成本也非常高
3.建议浅浅的封装一层
就是说对于基础组件比如Redis,mem,MQ的客户端工具进行浅封装,以便后续切换过程中,直接切换工具包即可,对调用方屏蔽底层细节,调用方改动很小
4.什么时候需要自研?
在开源组件不满足的时候,个性化需求,只有自研解决个性需求
有站点。监控服务接入,处理时间,自动化发布。自动化运维,服务治理 服务发现, 调用链跟踪。SQL监控。系统层面数据收集
总结
1…对于技术栈:
选熟悉的,但要考虑长远架构可持续性
2.框架选型,是否要自研?
前期不建议自研,选择成熟的框架,但是内部要尽量统一,不能随意选择
后期可以根据业务发展进行自研