目前互联网飞速发展,各种编程语言不断出现,越来越多的互联网创业团队选择这些具有高效开发效率语言,如Ruby、PHP、.Net等,而Java这种看起来比较笨重的语言似乎在互联网领域越来越落寞。
然而随着公司的发展,特别是开发人员几十人、几百人甚至上千人的时候,这么多人维护一个项目将是一个噩梦,拆分在所难免。这个时候就要回过头来重新审视初始选择的语言及系统架构了,看这种语言能否应付大团队系统作战,是否有成熟的大型分布式解决方案,甚至是否会影响公司上市后的股价,于是架构升级开始进行。
架构升级有三种,一种是在原有语言上进行升级,一种是前台继续沿用老的语言,后台转向更规范的,更能适应大团队作战的,有更多成熟解决方案案例的的语言,比如Java,还有一种是彻底的所有系统都转向某种语言。至于采用哪种策略,各个公司会根据投入和产出作出取舍,这里不是讨论哪种方案是最好的,没有最好的,只有最适合的。但不管采用哪种语言,业务拆分是在所难免的。
先从编程语言方面来讨论一下架构升级,由于这里Java的社区,就将被转向的新语言定为Java,实际上有不少公司也确实是转向了Java。目前使用Ruby开发遇到瓶颈的公司应该不太多,但使用PHP和.Net做前期开发语言,中期遇到瓶颈正寻求突破的中型公司应该有一些。这些公司中有的进一步和相对封闭一点的语言(如.net)捆绑在一起,在老语言的基础上实现分布式架构;有的前端Web部分仍用老语言,后端核心业务被抽出用Java语言实现,同时引入Java基础框架和中间件来做底层支撑技术;而另一部分则彻底的完全倒向了Java系统。
这三种方式有各自的好处和不足,大中型系统转向Java系统技术上不存在什么问题,毕竟已经有很多成熟的方案在大公司已经被多次证明是可行的,而且还有大量的开源组件来支持。语言的转变最大的问题来自于人,一批辛辛苦苦把网站一点一点做起来的、眼看着自己的劳动成果已经获得了用户的认可的、公司快要上市自己也将要收获果实的老开发人员,他们对这套系统有很深的感情,也有很大的利益,抛弃了老的语言,也就是抛弃了他们的劳动成果,也阻断了他们在这个公司的前途,甚至影响了他们即得的利益。这个时候他们面前只有两条道路可走,一条是离开,但辛辛苦苦熬了那么多年,眼看就快要上市了,此时离开肯定心有不甘;另一条就是向Java转变,但面对大批的空降而来的Java方面的高端人才,他们的优势是什么?也许你会说是业务,是的,是业务,他们本该拥有技术和业务两种优势的,现在就变成了一种,而这种优势又成了博弈的砝码,向左转可以结合Java的技术的优势使公司更上一层楼,但向右转就可以阻止Java技术来实现本公司的业务,使业务迁移失败,使公司被迫再次走上老语言开发之路,使自己重新获得技术和业务上的双重优势。
实际上大部分转型公司的大部分人都会走上抵制新语言之路,这不是这些人有多么恶劣,这是人之常情,是利益所在。用Java每迁移成功一个项目,就等于埋葬了别人的一个成果,就阻断了别人的一块利益,是人都会有抵触情绪的。这时就要看公司对这些人做出怎样的补偿了,或升职加薪给期权,或使公司业务更快发展,新的业务的开拓可以减轻老员工的失落感。
这时候公司通常会采取上面的三种策略方式,如果公司在原来已经有了大量技术上和高端人才上的积累,而且对在老语言上进行架构升级也比较有信心,那么公司一般会采取这种最稳妥的方式--在老语言的基础上进行架构改造。如果对老的语言进行大型分布式架构升级没有太大的自信,但又怕老开发人员产生大的阻力,同时对Java语言也没太大信心的话,就会对前端业务不动,先从后端改造开始,比如引入一些Java中间件产品,抽出一些稳定的核心应用用Java实现,后期再看是将所有系统都改成Java语言还是前后端采用两种语言。最后一种是由于本公司本来就没有什么基础技术的积累,对老语言的将来没多大信心或者觉得会影响公司将来的发展,那么公司将会下大决心将语言转变进行到底,为公司后期告诉发展打下良好的基础。
分享到:
相关推荐
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
1. **开发语言**:Java,作为一种广泛应用的编程语言,具有跨平台性、面向对象等特点。 2. **框架**:Spring Boot,简化了Spring应用的初始搭建以及开发过程,支持自动配置、外部化配置等特性。 3. **架构模式**:B/...
- 从面向对象编程到面向服务编程的转变,强调服务的提供而非具体对象的实现。 4. **IT架构的发展推动**: - 传统架构:基于消息传递的点对点模式,耦合度高。 - 过渡架构:企业应用整合(EAI),通过中心化的...
VB(Visual Basic)是一种由微软开发的面向对象的编程语言,它以其简单易学、开发效率高而受到许多初学者和专业开发者的喜爱。ACCESS则是微软的桌面数据库管理系统,提供了强大的数据存储和管理功能,特别适合小型到...
2. **编程语言与框架**:如Java、Python、Node.js等,以及对应的Spring Boot、Django、Express等开发框架。 3. **分布式系统**:理解CAP原理、一致性哈希、分布式锁等,以及如何设计高可用、容错的分布式系统。 4....
- Uber最初的架构是一个单体结构,从2009年开始逐渐转变为微服务架构,编程语言从Python/JavaScript转向Golang/Java,数据库从MySQL升级到Cassandra。 - Uber Eats的起点是基于微服务、Golang和Cassandra,但随着...
- **B/S架构**(Browser/Server):随着互联网的发展,B/S架构逐渐兴起,用户通过浏览器访问Web应用,无需在本地安装软件,降低了部署和维护成本。ASP.NET便是构建B/S应用的重要工具,它可以生成HTML响应,通过HTTP...
【C#.NET 开发者指南】是一份针对C#.NET编程的详细教程,该文档包含了对.NET平台的全面介绍和C#编程语言的解析。文档的前言指出,.NET平台自发布以来受到了广大开发者和业界的高度关注,全球范围内有大量的开发者...
随着互联网技术的迅速发展,用户对于网站的需求已经从简单的信息展示转变为更加个性化、交互式的体验。为了满足这些需求,传统的静态网页已经逐渐被动态网页所取代。动态网页能够根据用户的输入或服务器的状态变化...
- **Microsoft.NET**:这是微软在2000年提出的一项战略,旨在推动互联网向一个更加统一、高效、安全的组件交互平台转变。.NET不仅仅是技术上的革新,更是对现有软件架构的一次颠覆性升级,它让软件不仅限于传统的...
- 图书管理系统通常由CS(Client-Server)架构向BS(Browser-Server)架构转变,以适应互联网的广泛使用和信息交流的需求。 - Oracle数据库被选中,因为其高效的数据检索能力、稳定性和良好的性能,适合处理大量...
1. **新环境和新技术出现迫使软件升级**:科技的进步催生了新的操作系统、编程语言和开发工具。例如,云计算、大数据、人工智能等新兴技术的发展,要求软件能够与这些新技术兼容,提供更高效的服务。同时,移动...
它采用了面向对象的编程语言ActionScript 3.0,该语言内置了支持E4X(ECMAScript for XML)的XML操作类,使得Flex编写的客户端程序能够简单且高效地处理XML数据。Flex还提供了一个强大的用户界面组件库,使开发者...
随着互联网技术的迅猛发展,信息管理需求已经从简单的数据浏览与发布,向更加高效、便捷的服务转变。在此背景下,企业对固定资产管理提出了更高的要求,迫切需要通过信息化手段,提升固定资产的管理效率,降低管理...
开发语言C#是.NET Framework的核心语言,具有现代编程语言的特性,如面向对象、类型安全和垃圾回收机制,使得代码编写更加简洁、高效。同时,C#与ASP.NET结合,为开发在线答题系统提供了强大的后盾。 数据库方面,...
JSP(Java Server Pages)技术作为服务器端编程语言,以其与Java语言的无缝集成和动态网页生成能力,为系统的开发提供了便利。同时,数据库选用MySQL,这是一种高效、稳定的开源关系型数据库管理系统,能够有效地...