架构师的领导艺术的关键,是平衡产品和人的关系。对于架构师来说,在对系统架构负责的同时,还要让项目团队严格遵守架构决策。
如何让大家遵守吗?前提有两个,一个是在架构决策前的充分的内部沟通,另一个是,让项目的参与者感受到自身对架构设计的贡献,并由此,让大家在开发的过程中承担应有的、甚至更高的责任。
这其实就是构建蓝图的原因,架构师应该树立起一个团队共同奋斗的目标。
那么什么是一个好的蓝图呢?
蓝图应该对如下问题有清晰的描述。要达成什么样的目标、产品要实现哪些功能、不会涉及哪些功能。
用简单的语言、形象的在团队内部传达出:我们的产品会为用户创造什么价值,它最终的形态是什么样子。
有了蓝图,架构师在项目过程中就有了明确的指针。对任何偏离蓝图的设计保持警惕,当发生错误的时候,及时的纠正,并通过讨论来获得大家的认可。整个团队保持对目标蓝图的专注,就一定会有良好的产出。
在关注产品的同时,也要关注人。
一群优秀的人做共同热爱的事情,是最美妙的。项目软件管理,不只是对成员进行简单的激励和惩罚,更应该激发出每个成员的潜能,共同在开发过程中,实现对自我的超越。自我驱动是最强大的驱动。
一个好的架构,应该具备如下特点。
第一是可用性。主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份。任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失。
第二是性能。作为最重要的一个指标,它关系到用户的使用体验。在浏览器端、服务器端、代码层面和数据库服务器端,都有很多可以改善性能的方法。
第三是扩展性。网站可伸缩架构的主要手段是事件驱动架构和分布式服务。一些大型网站还会吸引第三方开发者,来扩展业务板块。主要途径是提供开放的平台接口。
第四是安全性。安全是一切的根本,一个好的架构要保护网站不受恶意访问和攻击,同时保护网站的重要数据不被窃取。