【IT168 技术】在互联网行业,基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方案,这不仅仅是因为Linux本身足够的开放性,更因为围绕传统Unix/Linux社区有大量的成熟开源解决方案,覆盖了网站应用扩展的方方面面。
我记得十几年前第一波互联网浪潮的时代,采用Windows平台ASP架构的大型网站是非常普及的,而如今采用Windows平台.net架构的大流量知名网站已经凤毛麟角了。很多采用Windows平台.net架构的大型网站都面临了架构上的扩展问题:
例如国外的SNS网站MySpace网站面临过很严重的性能扩展问题,国内电商网站京东也不止一次受困于架构扩展带来了性能瓶颈。因此,一些Windows平台.net架构为主的网站,不得不考虑“去.net化”,抛弃.net,全面迁移到以Java为主的架构上。
但是大型网站的架构迁移,本身也是伤筋动骨的事情,风险极高,成功案例尚不多见,失败案例俯拾皆是,这是因为:
1.架构迁移是在现有业务系统上进行的,并不是从容的开发新产品,有足够的时间测试和完善,相当于给正在高空飞行的客机换引擎,必须一次切换成功,没有第二次机会,稍有差池,就会机毁人亡。而我们都知道,新开发一个大型系统,没有上线磨合和完善过,无法做到一次100%完美。
2.架构迁移意味着老的研发团队将被淘汰,而往往老团队体系随着公司壮大已经掌握了足够话语权,新架构的团队在公司又根基未稳,出于维护自身利益的本能,新旧团队之间很容易爆发政治斗争,相互排挤,导致迁移失败。
5173“去.net化”的教训
5173网站以游戏装备交易起家,曾经在客户端网络游戏发展黄金时期,迎来了业务爆发性的增长期。此时,用.net架构开发的网站已经不堪重负,由于现有的.net研发团队长期无法解决网站的性能问题,5173决定将网站从.net架构全面迁移到Java为主的架构上。为此,5173花了很大的代价,从淘宝和SUN公司挖了很多工程师,组成了一个六七十人的Java架构研发部门。
新的Java研发部门开发新的5173网站,而老的.net研发部门维护现有的5173网站,两个部门并行工作,两个版本的网站并行运行,这带来了公司内部激烈的政治斗争,新开发完成的Java版本的5173网站从未正式上线过,老的.net研发团队在面临严重生存威胁的情况下,努力解决了一些核心的可用性和稳定性问题。同时随着端游黄金时代的结束,网站性能问题也逐渐显得不再重要。
在围绕新版本网站是否要正式替换老版本网站的问题上,各个利益方争执不下,反反复复拉锯战,而空降而来的女CTO不属于任何派系,态度模棱两可。最终斗争的结果.net利益方战胜了Java利益方,Java研发部门被清洗。
我的.Net系统架构改造的经验和教训
3年前,我刚接手CSDN的产品和研发团队的时候,CSDN的核心系统大约2/3是Windows平台.net架构,1/3是LAMP架构。研发人员当时也很少:只有2个.net程序员,3个PHP程序员,后来还有1个我带过来的Ruby程序员。当时的计划是:网站整体架构改造的方向是Linux架构,逐渐替换掉现有的.net系统。因此不打算继续招聘和补充.net程序员了,现有的.net程序员负责老的核心系统维护工作。