架构师素养及从小菜进阶架构师(2)

支付宝架构师:讲述从工程师到架构师的成长之路- http://blog.csdn.net/Gupaoxueyuan/article/details/79089101

支付宝架构师:从工程师到架构师的成长之路- http://blog.csdn.net/ak47java/article/details/78701226

 架构的技术职责分为三大块:抽象设计;非功能设计;关键技术设计
 具体到对某一个业务的架构设计,又可以区分出业务架构、数据架构、技术架构、应用架构几个不同的视角。业务架构是对业务领域和业务流程的分析抽象,需要提炼出业务的核心领域模型,业务的可变和不变部分,这是架构师和产品经理协同完成的;数据架构基于业务架构提炼的核心领域模型做数据模型和存储模型的设计;技术架构基于业务的性能,可用性,安全等非功能性指标,确定语言、框架、中间件、部署等技术选型;应用架构基于业务抽象设计应用系统的层次结构、系统边界等。
 企业架构匹配商业模式,业务架构匹配业务模式.

  谈到基础架构,不同的人有不同的理解。一般说来,我们将支撑应用研发部署的底层软硬件的集合叫做基础架构。它不仅涉及到IDC、机房、机架、网络、主机、存储等硬件资源,也涉及到操作系统、系统软件、日志管理、应用管理监控等基础软件资源。基础架构支持了分布式服务、大数据、云计算、机器学习等基础领域,也成为IT类企业提升生产力、降低成本的核心。近些年来,随着虚拟化、容器化等新技术的不断涌现和发展,随着应用开发模式从单体应用、MVC、SOA到微服务化,基础架构领域发生了翻天覆地的变化,其对应用的灵活性和透明性不断提升,也显著提升了研发效率,降低了研发成本。

  做为一个合格的架构师必须具备七个重要的素质,包括业务理解、技术广度、技术深度、丰富经验、美学素养、动手能力和沟通能力。架构师的业务素质就是指要懂业务,对业务有足够的敏感度,能够清楚地知道自己的设计能给公司带来多大的业务影响。对技术素质最基本的要求是深度和广度。美学素质是要求架构师有美感和艺术感。
  而是在正常的情况下,架构师应该有足够的智慧和独立思考能力去做出最优的技术与业务判断。

  对普通技术人员成长为架构师,我有五个建议:第一要有高度,培养自己的思维高度,从而对技术和业务有整体的视野。第二要有深度,培养自己独立思考问题,看清问题本质的能力。第三要有广度,拓宽自己的技术和业务范围,从而确保自己不成为井底之蛙。第四要有新度,培养自己的好奇心,对任何相关的东西都感兴趣,并想去了解,不断地学习新技术掌握新技能。第五要有沟通力,培养讲清楚方案的能力,特别是用一句话把事情讲清楚的能力。如何对准目标、设计路径、培养素质、积累经验是每个想成为架构师的技术人员都必须要认真思考的问题。

  软件的架构至关重要,仅仅有较好的代码来完成功能不足以成为一个优秀的解决方案。因为它不仅仅涉及到代码,还有我们所写的各个模块之间如果交互和集成、数据如何存储、我们怎么样来进行开发和测试、以及在引进变动的时候的难易程度等等。

  编程注重的是思想,而非语言。编程语言只是一个工具罢了。
  架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。
一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。
架构师就是确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。
  熟练使用各种框架,并知道它们实现的原理:
jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,连接池,线程池……Java反射技术,写框架必备的技术,遇到有严重的性能问题,替代方案java字节码技术;nio,没什么好说的,值得注意的是"直接内存"的特点,使用场景;java多线程同步异步;java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题。
  越基础的东西越重要,很多人认为自己会用它们写代码了,其实仅仅是知道如何调用api而已,离会用还差的远。如果你立志做架构,首先打好基础,从最底层开始。然后发展到各种技术和语言,什么都要懂两点,要全面且不肤浅。
  而Java学到极致势必涉及到设计模式,算法和数据结构,多线程,文件及网络IO,数据库及ORM,不一而足。这些概念放之一切语言都适用。
  其实最重要的能力就是不断学习。在思考新的技术是否能更好地解决你们遇到的问题之前,你首先得知道并了解新的技术。
  所谓架构师,只是功底深厚的程序员而已。个人认为应该扎扎实实学习基础知识,学习各种规范,架构,需要广泛的知识面,懂的东西越多视野越开阔,设计的东西当然会越好越全面。
 高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等。
 为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适合自己业务场景的高并发处理方案。
 业务从发展的初期到逐渐成熟,服务器架构也是从相对单一到集群,再到分布式服务。
  后台大致需要用到的服务器架构如下:
服务器;均衡负载(如:nginx,阿里云SLB);资源监控;分布式;数据库;DBA 表优化,索引优化,分布式; nosql;主从分离,集群 主从分离,集群 主从分离,集群;redis mongodb memcache ;cdn ;html css js image
  消息队列:秒杀、秒抢等活动业务,用户在瞬间涌入产生高并发请求,如定时领取红包

  静态化数据:对于更新频繁度不高,并且数据允许短时间内的延迟,可以通过数据静态化成JSON,XML,HTML等数据文件上传CDN.

---------------------------------

从普通JAVA程序员到阿里架构师,他用了六年- http://blog.csdn.net/yalin7076/article/details/78930857
 我认为框架是一个库(注:个人不太同意这个说法),它定义了每一个方面或层的结构,使创建应用程序的任务变得更容易。从层上说,我指的是数据库、模型、控制器、视图、表现层、网络,等等......
 框架尝试去解决在应用中经常遇到的绝大多数大且已知的问题。它们内置了许多你不需要关心的设计决策,它们同样也有精心制定的指导方针。
 好的框架有巧妙的默认值以及遵循约定而不是配置的概念,在这方面做得好的是 Ruby On Rails 框架,同时也是我最喜欢的框架之一。在 JavaScript 领域,头牌 JavaScript 框架是 Angular 和 Ember。

优秀产品经理最重要的三个特质是:逻辑思维能力;对数据敏感;不错的语言和文字表达能力;当然如果能写点儿代码就跟好了。

全栈工程师的素质:首先要有好的学习能力,对新的技术能够摒弃偏见,快速了解它解决的问题以及如何解决的;其次要对技术保有好奇心;最后是有极强的动手能力,不拖延,说干就干。

优秀 CTO 最宝贵的品质是:
 广阔的技术视野,让先进的技术解决实际的问题;
 熟悉所在的业务领域,根据所在领域的实际情况确定系统架构和系统容量;
 团队管理能力,构建团队人才梯队,打造一个技术型团队。

设计师,有产品思维,能够和产品经理一起确认交互细节甚至产品方向的设计师。

给JAVA的软件工程师 3 条建议:
 重视基础知识(算法、操作系统、网络等等)
 拓宽技术视野。多去参加技术沙龙,看看别人的牛逼是怎么吹的;多关注感兴趣的开源项目
 保护好颈椎和腰椎(⊙o⊙)…

你当时是怎么学习的?
答:架构师是一个充满挑战的职业,知识面的宽窄往往决定着一个架构师的架构能力,所以在这一点上我比较赞成你的学习方式,就是要阅读大量的技术书籍,但我希望你不要仅限于软件相关的书籍,经常泡技术论坛,一方面可以结交朋友,一方面可以增加自己的知识面,还可以加入一下技术博客,还可以加一个架构群交流。
初级Java程序员的重心在编写代码、运用框架->中级Java程序员重心在编写代码和框架->高级Java程序员技术攻关、性能调优->架构师 解决业务和技术问题。
中级后端程序员提升薪资的重要点在于:
1.项目经验:支付,通知,IM,短信等公用模块快迅实现。
2.代码质量:抽象封装,日志规范,发布流程,快速定位。
3.性能优化:服务器的内存,硬盘,数据增长量,带宽,系统中最消耗性能的地方,一个请求需要调用哪些服务,每次访问DB的时间是多久。
4.架构能力:分布式,负载均衡,读写分离。
5.选型能力:JMS,SOA/SCA/微服务,MongoDB/Redis/Memcache,Java/Go/NodeJS等。
6.管理能力:团队技术分享组织,项目风险控制,任务和工作的分配
7.需求评审能力:很快给出反馈建议,多长时间能够完成,技术风险点在哪,有没有花费时间长,又不重要的需求。

8.Geek能力:对某一个技术点研究的特别深入,比如说Nginx的配置,设计,构架。ElasticSearch的设计,优势。


  企业IT项目开发之七宗罪:
第一宗罪:重业务不重技术;
第二宗罪:编程开发人员沦为业务开发人员、沦为码农;
第三宗罪:IT市场沦为自由市场、小菜场一样的叫买;
第四重罪:技术无用论的诞生;
第五宗罪:闭门造车,与实际脱节,完全抛弃业务;
第六宗罪:消极怠工 ;
第七宗罪:不思进取;

  五级工程师和职业发展:
第五级:能独立解决问题,完成工程工作;
第四级:能指导和带领其他人一同完成更有影响力的工作;
第三级:能独立设计和实现产品,并且在市场上获得成功;
第二级:能设计和实现别人不能做出的产品,也就是说他的作用很难取代;
第一级:开创一个产业。

   个人的核心竞争力是他独特的个性知识经验组合。这种组合:1)绝无仅有;2)在实践中有价值;3)具有可持续发展性。
    具体到工程师来说:1. 专业领域技能;2. 跨领域的技能;3. 学习能力;4. 性格要素。
    把码农大的可以分为两类:一类是为码农服务的码农,如中间件、框架、语言的开发者,这个是纯技术流;另一类是通过技术手段满足特定的业务目标,这个是业务开发流。99%的码农都是业务开发流。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值