昨晚又失眠了,什么是系统架构师?
filed in Mood Diary, Reading on Nov.22, 2008
昨晚又失眠,躲在被窝里用手机上网,搜索什么是系统结构师,思考想成为一名系统机构师需要掌握哪些技能。发现自己非常喜欢系统机构师的工作。在网上正好看到一篇非常有价值的文章,今天把他转过来,以便以后常看看…
注:转自IBM中国:http://www.ibm.com/developerworks/cn/webservices/ar-itio3/
什么是最有价值的 IT体系结构技能,如何学习?
2006 年 1 月 24 日
IBM 专家将提供各自的个人观点,以推动 IT 体系结构实践方面的发展,从而帮助您更好地担当架构师这一职责。
引言:IT 体系结构不像电视节目
我希望能有电视节目展示 IT 架构师的生活。但您知道在电视上的样子。人们都很了不起,通常长得很好看,手边有所有需要的东西,他们都异常的聪明——而且所有部分都非常轻易地就整合到 一起了。您可能看着这样的节目,而忘记了他们的实际工作有多困难。暂时逃避一下现实。而且,每周您都有机会假装这就是真实的生活。
我们都知道,和生活一样,IT 体系结构并不是这样的。(真是的,撰写这个专栏甚至也不那样简单,只是纯粹说说才很简单。)需要进行培训,需要努力工作,需要使用技能技巧,会犯很多错误,而且需要很多的耐心。当然,说需要一定天分也未尝不可。
知道了成为一个成功的 IT 架构师需要投入多少工作后,我们就想知道哪些因素对成为一个不错的架构师起决定性作用。因此,我们向专家组提出了这样的问题:“什么技能对 IT 架构师最有价值,架构师如何学习这些技能?”
可以在很多地方找到成为好的架构师所需的技能列表——书上、培训课程、大学、有关体系结构的其他网站上等等。例如,IBM 的内部专业提高网站就提出以下几点 IT 架构师的理想特征:
设计体系结构的技能和经验
有序的以方法为驱动源的任务执行
完整生命周期经验
行业部门经验
领导能力
很强的沟通和专业技能
和可能看到的很多其他列表类似,这个列表相当泛泛,可能并不如您所期望的那样有可操作性。而这正是我们询问前面的问题的原因所在:帮助您确定一个明确的方向。
我们希望对此问题的讨论能为您提供帮助。我们鼓励您在 IT 体系结构讨论论坛发表您对这些观点的看法。如果您有任何问题希望我们的专家进行答复,请与我联系。充分利用专家资源——他们非常乐意为您提供帮助,非常愿意能推动 IT 体系结构方面的实践。
Paul Dreyfus,编辑
developerWorks SOA and Web services
pdreyfus@us.ibm.com
另,为了避免对我们的排序方式的意见,我们已根据专家的名字按字母顺序对专栏进行了排序。不过,请一定阅读全文;您肯定不希望漏掉 Walker Royce 的连珠妙语。
回页首
权衡各个相互冲突的需求
架构师必须 学习权衡各个相互冲突的需求的技能。在调和体系结构的各个组成部分时,我们必须对各个看起来截然相反的事项进行权衡,如下面这些事项:
““我需要一个全新的体系结构来支持一个新业务需求;所有项目必须在 2 年内完成,而我们希望您能在 1 年内完成下一个项目。””
“资金有限,但我们希望能提供所有功能。”
分析瘫痪与“直接编码”
灵活方法与复杂方法
用户期望与技术可实际提供的功能
业务与 IT
您的工作负担和享受生活
管理活动(时间计划、支出)与“真正的”项目工作
无论从技术角度出发,还是就业务角度而言,我们都需要对经常冲突的各种考虑和各个侧面进行权衡。在看起来似乎无法解决的情况下进行正确的权衡是架构师成功的关键。
这经常意味着要首先确定有哪些约束,理解这些约束为何存在冲突,并确定如何在问题空间对这些考虑进行权衡,从而解决所面临的问题。
回页首
了解各个相关部分以及它们彼此如何结合
我 还记得我第一次感觉像个架构师时的情况。他们要求我开发一个新的应用程序,突然我发现这个应用程序并不是一个单体,而是由多个专门化的部分组成的,其中的 每个部分都在专门的服务器上运行,所有部分一起协作,形成一个应用程序。数据由数据库服务器承载和提供,长时间运行的流程在工作流服务器中执行,遗留集成 会通过消息传递服务器进行操作,而自定义代码在应用服务器上运行,负责将所有这些部分粘合到一起。
这就是体系结构:专门化的彼此不同的部分一起协作,形成完整的应用程序。IT 架构师知道如何将问题划分为专门化的各个部分,并使其作为整体一起协同工作。
那么,什么是对 IT 架构师最具价值的技能呢?就是要了解这些不同类型的服务器以及其提供来帮助解决问题的不同功能,并要了解如何将它们一起使用来开发和部署应用程序。成为一 个引擎方面的专家也非常诱人,如数据架构设计人员、规则专家、J2EE 开发人员。团队也需要这样的人员,但他们不是架构师。IT 架构师至少对所有这些方法都有所了解,了解哪个引擎适合用于执行应用程序中的何种任务,知道如何将应用程序分解成各个专门化的部分以及如何使这些部分一起 工作。
实际上,这是 IT [...]