职位介绍
众所周知,建筑师是一个待遇优厚的岗位,那么什么是建筑师呢?不同的公司,不同的行业,不同的俱乐部有不同的定位。由于不同公司所处的阶段、商业模式、应用场景不同,对架构的要求也不同。
初创企业野蛮生长阶段,业务场景和需求边界难以把握,存在基本不需要架构师,产品需要快速迭代实现,需求频繁更新的时刻。此时此刻需要的是迅速实施。
在公司的稳定增长阶段:商业模式和应用场景的边界已经有了明显的对比。此时此刻,建筑师是最需要的。他们需要对在线业务模块进行划分,对系统进行拆分和重构,并采取相关的高可用性措施来保证系统的稳定、安全和高效运行。
不同行业对架构师的要求不同,比如电商业务,AI领域。从架构到业务场景,完全是两个物种。
架构师是一个团队指导义务,需要掌控整体,了解局部瓶颈,根据详细的业务场景给出解决方案。具体来说,它是一个工匠,确认和评估系统需求,给出开发规范,构建系统实现的重点框架,澄清技术细节,清理主要难点。主要关注系统的“技术实现”。因此,架构师应该精通特定的开发平台、语言和工具,并能立即针对常见的应用场景给出最合适的解决方案。同时,他应该对他的开发团队有足够的了解,并且能够评估他的团队实现特定效率需求所需的价值。
架构师尽力设计整个架构,从需求到设计考虑每一个细节,掌握整个项目,让设计出来的项目高效、易开发、维护方便、升级简单。
架构师其实是软件的总设计师,是在工程实践中培养出来的,而不是参加几个培训班,读几本书就能培养出来的。
责任
系统架构师的职责是设计公司的基础设施,并就如何建立和维护系统提供指导。详细来说,系统架构师的职责主要体现在以下几个方面:
1.在公司系统的架构设计和研发上下功夫;
2.担负起从商业向工艺转化的桥梁作用;
3.协助项目经理制定项目设计,控制项目进度;
4.协助和指导SA开展设计工作;
5.努力组织工艺研究和攻关;
6.努力组织和管理公司内部的工艺培训;
7.努力组织和带领公司内部员工学习与项目相关的新技术;
8.管理技术支持团队,为项目和产品开发实施团队提供技术支持;
9.了解系统的业务需求,制定系统的总体框架(包括:工艺框架和业务框架)。
10.进行系统框架相关技术和业务的培训,指导开发人员进行开发;解决系统开发和运行中出现的各种问题。
系统架构师的目的:在系统层面掌握系统的复用性、扩展性、安全性、性能、可扩展性和简洁性。系统架构师的任务是为不同的情况筛选出最佳的技术解决方案,而不是专注于详细的实现细节。另外,系统架构师是培养不出来的。一个好的系统架构师不一定是一个优秀的程序员,但他不能不了解技术之间的差异,技术的增长趋势,接受技术的当前成本和后续成本,技术和详细应用之间的重合度,他可以分配的资源的状态,他在研发中可能遇到的风险,以及如何规避。这些都是建筑师需要思考的主要内容。
建筑师分类
按照视点分类,可以分为
软件架构师:职责是在一个软件项目的开发过程中,将客户的需求转化为标准的开发设计和文本,制定项目的整体框架,指导整个开发团队完成设计。领导系统的总体分析、设计和实现的工作人员,在软件架构和关键技术决策方面努力工作。比如这些架构师的头衔可能是JAVA架构师、Python架构师、LAPM架构师等等。
网站架构师:是网站系统、功能、模块、流程的设计者。
根据公司规模和体制,可以分为
解决方案架构师:与客户讨论业务需求,结合业务、市场、技术和产品,为客户提供满足其需求的解决方案。比如阿里云有大客户的解决方案架构师。
系统架构师:最终确定并评估系统需求,将业务转化为工艺,为RD员工制定重点框架和工艺规范,阐明工艺细节,并为RD扫清工艺障碍..服务器负载、可靠性、可伸缩性、扩展、数据库分段、缓存应用
平台架构师:这里的平台确实包括两个平台,一个是系统平台,即试图构建一个集成多个系统的系统应用平台;另一个真的是基础平台,致力于搭建基础工艺平台。
业务架构师:业务架构确实是第一个脱离技术层面的,但是它需要架构师有跨多个系统的全局观,来整合和组织不同系统的技术平台和交互模式。其实这个职位的未来就是CIO。主要内容:了解业务,梳理模型,设计模式,接口,数据交互。
营业执照三证是什么,三证合一的流程和所需资料?
网络架构师:在过去,我们听网络工程师说得最多的大概就是。是的,一个优秀的网络架构师必须有足够的网络技术基础,其重点也是系统的基础设施。比如如何搭建和优化集群环境,如何搭建基于云计算的系统应用和部署等等。对于淘宝、腾讯这样的互联网公司来说极其重要。
移动架构师:随着移动互联网的快速增长,许多新的职责和岗位被横向和纵向细分。移动架构师的职责和作用越来越重要,不仅要考虑整个前端和后端软件系统架构,还要关注移动客户端架构设计的各个方面;既要有跨平台的胸怀,又要把握好原生和混合开发的尺度。此外,由于移动应用的特点,移动架构师必须比传统的系统架构师更加关注非功效质量属性。
前端架构师:这里的前端是指网站开发中的前端,主要考虑前端外观层的设计(HTML/CSS/JS/AJAX/RIA/…),跨浏览器设计等等。
大数据架构师:就像有些公司做大数据处理,需要了解业务,并通过大数据相关技术实现。
工作要求
1.8年以上软件行业工作经验;
2.具有4年以上C/S或B/S体系结构软件产品的开发、架构和设计经验;
3.有3年以上编码经验;
4.具有扎实的大中型开发项目总体规划、方案设计和技术团队管理经验;
5.对相关的工艺标准有深刻的理解,对软件工程标准和规范有很好的掌握;
6.具备面向对象的分析、设计和开发能力(OOA、OOD、OOP),在UML和ROSE中表现抢眼,熟练使用Rational Rose、PowerDesigner等工具进行设计和开发;
7.Oracle、Sql Server等大型数据库的发展引人注目;
8.对计算机系统、网络与安全、应用系统架构、项目治理理论和实践基础有透彻的理解;
9.在应用系统开发平台和项目管理方面有较深的基础,有大中型应用系统开发和实施的成功案例;
10.优秀的团队意识和合作精神,较强的内外能力。
邮政技术
架构师是一个写过好代码,画过UML/ prototype,写过craft文档的综合型人才,可以让项目的关键技能翻倍。架构师=前端工程师+后端程序员+系统分析师+关键技术解决方案+各种技术搭配+设计模式+部署优化+其他。由此可见,建筑师是多才多艺的,在项目中扮演着邻治和项目成员的主要角色。所以,在通往伟大架构师的路上,你需要了解需求、设计、代码、部署、架构、服务器、运维、调优等等。
一个能够承担企业级应用的架构师,往往会想到这些词:负载均衡、集群、分布、高并发、高可用性、易治理等。一般来说,他应具备以下知识和技术:
(1)数据层:重点是聚类方案的选择,比如MySQL聚类。集群方案很多,需要选择符合业务的方案,比如多主、主动备用、分散读写等等。是否还需要高可用,也就是用lvs,还是zookeeper,是否需要mycat之类的中间件来管理数据库或者做数据分片等等。
(2)服务层:时尚一点,选dubbo。微服务使得团队开发的耦合度没有那么高,各自打理自己的模块,以服务的形式发布。传统上使用springmvc+restful。对于低并发的系统,没有必要使用dubbo。缓存的选择涉及到文件缓存和数据库缓存,可以使用memcached、ehcache和redis。
(3)应用层:框架太多,如ssh、ssm、jfinal等。,并选择适合项目组的框架;UI界面h5很优雅,但是对浏览器的兼容性让开发者哭了。可以选择成熟的ext或者easyui。
(4)网络层:大部分开发者不用打交道,懂f5之类的就行。
(5)部署:需要用docker部署吗?开源的docker容器使得部署变得轻量级,很容易扩展一个节点,可以用于高并发、高可扩展性需求的场景。docker的出现完全可以实现一键部署。是否需要负载均衡,可以选择硬负载(前面提到的f5)或者软负载(nginx)。软加载的简单方案可以是apache+tomcat,需要考虑会话复制,大的选择lvs+haproxy。打包发布,熟练使用maven,可以建立自己的maven私有服务,可以指导项目成员使用maven打包发布。
(6)和平:大部分和平是在网络层解决的,但是应用的安全性也不能忽视,比如需要考虑SQL注入和授权认证。这些现有的框架都可以解决。关键的安全问题来自框架本身,大部分应用选择框架都是开源的。如果团队无法修复缺陷,就只能等待更新。
(7)其他方面:测试(自动化测试)、版本管理(git或svn)、大数据(极热)、人工智能(高精度)等等。
建筑师的基本素质
作为一名合格的建筑师,必须具备八大主要素质:业务理解、手艺广度、手艺深度、履历扎实、同人能力、动手能力、审美素养。
业务素质就是懂业务,对业务足够敏感,能够清楚的知道自己的设计能给公司带来多大的业务影响。对手艺最基本的要求是深度和广度。审美素质要求建筑师要有美感和艺术感,所以有些公司经常会安排工匠去听音乐会,看艺术表演,因为艺术和设计是相通的。启动能力是指架构师能够适时启动实际操作,需要手写代码,尤其是底层的关键代码。同样能力也是极其重要的。因为建筑师的水平再高,如果同样的能力很差,花半天时间把他的方案解释清楚,那么再好的方案又有什么用呢?
工资和增长
随着互联网、PC互联网时代、移动互联网时代、IOT物联网智能时代的发展,在万物互联的人工智能时代,数据信息爆炸,并发越来越具有挑战性,对系统可用性、扩展性、易用性提出了更高的要求。于是,有专业能力的互联网系统架构师很受重视,月薪照常2-6周。对于有一定背景RD经验(尤其是3-5年以上)的程序员来说,成为架构师不仅是大势所趋,也是个人职业价值的追求。