互联网行业相对其他行业有个特点,就是快速变化以应对市场的需求,商业模式/盈利模式是第一位的。针对小型应用,PHP开发相对简单(或者公司的PHP工程师较多),很多互联网公司刚开始都是用LAMP来搭建技术平台。随着业务的快速发展,网站需要应对大并发量,大数据量,日常发布频繁,特别是电子商务网站,对于在线率有特殊的要求(99.99%以上),PHP的开发模式(很多采用单包发布模式),PHP重量级线程,脚本语言可读性差等因素,不能满足大型网站的技术发展需求。因此,很多互联网公司就需要进行平台迁移(淘宝,九城,盛大,5173
etc.)。根据自己在技术平台演进中的实际经验,浅谈平台迁移中的一些关注点。
一、技术范畴
1.1 应用分级
由于开始业务逻辑比较简单,开发工程师较少(几个人),所以基本采用单包开发,随着业务扩张和外围应用的扩展,代码量急剧扩大,几十个开发人员围着一个包开发和发布已经不能满足互联网快速应该变化的需求了。应用的拆分在所难免。
应用需要分级,核心应用和非核心应用,这有利于未来的优雅降级,提高整个网站的在线率。
1.2 技术选型
J2EE领域的一个特点,就是有大量的开源组件和解决方案,选择一个适合自己公司的技术组合,有利于人员的招聘和技术传承。技术本身的先进性和稳定性需要权衡,还需要考虑技术团队当前的技能情况。
根据业界的技术情况(淘宝,5173
等),再结合本公司的实际技术情况,我做个如下技术选型:
u Struts2+Spring+Ibatis
组成了基本的开发框架,前端用JSP + Freemark。
u 集中式缓存用MemCached,本地缓存用ECach,
u 数据库用MySQL。
u 分布式文件系统MogileFs.
u 版本管理 SVN。
u 构建工具Maven。
u ......
1.3 技术组件研发
由于应用做个拆分,每个应用集群部署,各个应用组成大集群。单包发布可以采用本地调用模式,多包发布需要采用远程调用的模式,所以通信中间件的研发摆在首位,要能解决远程调用,软负载均衡,容错。数据库采用了多库多表的形式来满足DB的并发处理能力,所以需要有个数据路由中间件来屏蔽技术细节。异步的消息机制也是需要解决的。在资源充沛的情况下,分布式数据文件等也可以作为研发方向,这些刚开始并不是很迫切。
二、人员范畴
将技术平台从一种体系向另一种体系过渡,人员也需要进行相对调整,由于老一批工程师对公司的业务相对比较熟悉(互联网公司文档少),所以他们是宝贵的财富,需要采用一定的措施来保证人员的平稳过渡。
2.1 培训机制
公司需要投入人力和物力进行老员工的培训。针对基础的语法,可以请外部培训机构进行外训,一些特殊的框架和中间件可以组织公司的资深工程师进行内训。给老员工提供多种培训机会。Java团队应该多做分享,让一些解决问题的思路能够传播开去。
2.2 项目参与
由于老员工的业务比较熟悉,对于有项目管理能力的员工,可以让其作为PM进行某个小业务的迁移(Java成员大力支持),在实际迁移项目中来熟悉Java的开发流程和规范,熟悉语言,有利于老员工的成长。
2.3 新人招募
迁移需要一批Java好手共同参与并且引导老员工做好技术转型。需要这批新生力量,能够独挡一面的架构师,资深工程师是做好平台迁移的人力资源保证。这方面需要加大投入。
三、迁移路线切入点
技术和人员逐步准备好了,如何切入,控制好这个迁移节奏也是一门学问,这关系到平台技术迁移的成败,当然,每个公司的实际情况并不一样,我只是在方法论上给予说明。
3.1 双平台
由于老系统在线上运行,出于稳定性考虑,老的技术平台不做迁移,只对新应用采用新的技术平台。如果新的业务发展很快,并且公司的异构系统整合能力比较强,相关的技术人员也比较众多(满足两套技术路线),这种切入模式也是个不错的选择。
3.2 单平台
如果新的业务发展不快,并且老的系统在架构方面存在扩展问题,那么老的平台需要迁移到新的技术平台上来。并且某些公司不能同时承受两套不同技术路线团队人力资源成本,所以最终都需要迁移到一种技术平台。
3.3混合平台
由于原先业务采用了PHP/.Net
实现,长期开发运营,技术人员对老的技术平台比较熟悉。迁移可以从核心应用做起。将应用横向拆分,前端应用(Web应用层)采用PHP/.Net实现,核心基础应用(通用,共用)采用Java平台实现,核心应用暴露出
Service给前端应用远程调用。这种混合平台新老技术路线可以共存,老的技术人员仍然可以专注于PHP/.Net技术,并且将一些公用的服务剥离,采用Java实现。根据长期业务的发展,再逐步将前端Web应用转换成Jsp/Velocity/Freemark。
四、组织架构保障
由于迁移涉及到开发,架构,运维,测试,相关的技术,环境,流程,规范都需要演进,从迁移方案的确立,资源调配,进度控制,人员招募等需要统一协调。主导迁移的工作需要有相关的组织保障,理论上来说,需要在层级上高于协作单位(开发,测试,架构,运维),并且有相关的绩效关系。仅仅靠各单位的自觉行动难以做到令行禁止,不利于统一部署。
五、总结
平台迁移是相对复杂的系统工程,需要相对长期的过程和资源投入,在做迁移的时候,决策层要考虑到成本因素,公司目前的发展阶段是否能够支撑这些成本。平台迁移的本质还是业务和客户体验驱动,决策层需要有战略决心,并且在资源,组织架构保障上给予倾斜,因为面对变革,会遇到方方面面的问题。没有资源和组织结构的支持,迁移将会是缓慢和无序的。
如果企业的发展是有目标,有节奏,有计划的,当意识到目前的平台不能满足长期的发展,这种演进和迁移需要尽早的进行,越早越好,到了后期去做迁移,成本将是亿万计,而且系统切换中的不稳定因素将会影响用户体验。纵观互联网企业的平台技术演进(淘宝,九城,5173,盛大等),成功和失败的经验值得大家去深思,技术平台演进对于每个公司来讲都是大事记,有着里程碑意义,希望博文对正在或者考虑技术演进的公司有参考意义。
【原创】转发请注明出处:http://xuezhongfeicn.blog.163.com/blog/static/2246014120112392829230/
分享到:
相关推荐
将经分A库的Oracle RAC 从HPUX平台迁移到IBM AIX 平台。目前经分A库Oracle RAC 建立在基于Symantec SFCFS的四台HP节点系统上,数据文件建立在VXVM 的裸设备上,数据库容量110TB 。 由于Symantec VXVM采用的是跨...
利用RMAN Convert database特性,将WINDOWS平台上的oracle数据库跨平台迁移到LINUX平台,当前LINUX平台只装数据库软件,不建库
[Packt Publishing] HTML5 & CSS3 技术平台迁移教程 (英文版) [Packt Publishing] Instant Migration to HTML5 and CSS3 How-to (E-Book) ☆ 出版信息:☆ [作者信息] Dushyant Kanungo [出版机构] Packt ...
使用RMAN工具跨平台迁移数据库
Cloudera大数据平台迁移方案.docx
Oracle跨平台迁移技术详解,文档详细概述了oracle与oracle不同版本之间,oracle与不同异构数据库直接跨平台迁移技术详细解说,一书在手,数据库迁移不是问题!
在不同平台间,对oracle数据库进行迁移
oracle跨平台数据迁移,convert,rman
Oracle 是一款非常优秀的 DBMS 软件。它可以运行在多种操作系统平台上,如: Windows、Linux、AIX 和 Solaris 等等。很多时候,由于各种各样的原因,我们需要在一同 ...何利用 RMAN 进行 Oracle 数据库的跨平台全库迁移
云平台&数据平台迁移方案合集,共21份。 Elasticsearch数据迁移与容灾实践 云计算业务迁移实验指导 kubernetes容器云平台迁移实践 Oracle数据迁移技巧和优化思路 ...云时代数据库迁移 & 容灾技术新进展与应用
EAS中间件从LINUX环境迁移至Windows平
oracle迁移跨平台的4种方式,数据泵,tts,xtts,ogg
基于虚拟机动态迁移技术的分析和研究,并对对Xen代码进行了分析和研究。
最近学习了一下oracle数据库启动原理,突然想我在linux创建的数据库想把移植到windows用经过一翻思考,动手把linux下的数据库直接通过原文件复制到windows下启动起来了。
ORACLE数据库跨平台迁移技术的研究.pdf
oracle迁移(windows平台).mht
研究了基于传统互联网架构、覆盖网技术的现有服务迁移技术,解决了网络拥塞问题。现有服务迁移技术存在网络不可达、额外交互流量大和服务响应效率低的不足,结合网络用户行为和服务类别的特点,提出了基于服务计算的...
DB2数据库是一个广泛商业应用的关系数据库,在实际应用过程中,常常需要进行跨平台的迁移,这份文档对DB2的跨平台迁移进行丽丽详细的介绍
10电子政务政务云平台政务云迁移设计方案
二期运维平台迁移计划报告.pdf