于是,小灰去向大黄请教
这是有关未来的故事:
从前,有一个赶路的人路过一片工地,看到三个年轻人在工地上搬砖。
于是,他问其中一个人:
于是,他又问了第二个人:
于是,他又问了第三个人:
十年之后~
曾经说自己在建造城市的年轻人,成为了市长。
曾经说自己在搬砖的年轻人,成为了砖厂老板。
曾经说自己在搭建教堂的年轻人,最没出息,成为了架构师。
什么是架构师?
架构师英文architect,这个词源于建筑学。软件工程当中的架构师和建筑工程当中建筑师有许多相通之处,都是负责「产品」宏观的架构设计。
在一个团队里,架构师充当了技术Leader的角色,不仅要完成项目的整体设计和规划,还要带领技术团队一起解决实际问题,攻克技术难点,使得软件的设计、开发、测试、发布流程得以顺利完成。
下面这张图,表达了一个应用架构师(技术Leader)在团队当中的角色:
需要注意的是,这张图中的架构师只是应用架构师,所以运维和DBA人员没有归入到他的管辖范围。同时,每个公司的具体组织结构也不尽相同。
架构师都做些什么?
1.架构设计
架构师,顾名思义,第一职责就是在软件设计阶段,做好软件「骨架」的设计。架构师需要把产品的需求翻译成软件工程的设计文档,确定各个系统与模块的边界,评估系统的量级。
2.技术选型
从前端到后端,从缓存到数据库,面对为数众多的第三方组件,架构师需要作出合理的选择。
前端页面选择模板引擎还是动静分离?服务端选择Java还是Node.js?
服务治理选择DubboX还是SpringCloud?
消息队列选择RocketMQ还是Kafka?
分布式缓存选择RedisCluster还是Codis?
数据库选择Mysql还是Oracle?
全文检索选择Solr还是ES?
技术没有绝对的好坏之分,关键看是否适用于公司的业务场景。
3.管理非功能性需求
满足需求是项目开发和架构设计的根本,而管理非功能性需求则是项目的升华。
在公司从0到1的创业阶段,开发者更