每一家小企业都有一个成为巨头的梦,但成为巨头后也都有自己烦恼的地方,一个典型的问题就是大型项目的迁移。对于巨头企业而言,开放出来商用的项目大多数都需要经历内部研发、内部使用、发展成熟之后才会真正开放商用,但对外商用和自家使用所面临的环境截然不同,这难免就需要大规模的应用代码迁移了。
那么在大规模的应用代码迁移中,究竟应该注意哪些事项呢?华为开放过诸多由内部孵化而出的大型项目,而每一次项目的开放都可能需要大规模的应用代码迁移。此前出于规模化商用目的,华为需要将自家的一个内部项目由原来的 x86 平台迁移到基于鸿蒙处理器的平台之上,这场迁移的工程量便超乎太多人的想象。要知道,x86 处理器和华为鲲鹏处理器所使用的 CPU 指令全然不同,x86 的指令是变长的,包括 24 位和 16 位的指令,而鲲鹏上的指令则是定长 32 位。并且,二者所用的寄存器也不一样,因此在这场迁移中不仅需要迁移主体业务,连代码和依赖库都需要改变。
此次迁移主要经历了 5 个迁移步骤:
迁移准备:收集软件栈信息,以便于后续迁移计划和策略制定的输入,这其中包括了当前使用的芯片、服务器信号等硬件信息,以及OS、中间件、各类软件等软件信息;
迁移分析:根据迁移的软件种类,如开源软件、自研软件、商用软件等进行分析,敲定运行环境并准备迁移环境;
编译迁移:这其中主要包括代码迁移和软件包迁移,其主要内容在于软件的编译打包和验证基本功能,这是迁移的核心,也最为耗费时间;
性能调优:在经过综合评估后建立调优目标,通过压力测试记录数据变化,探知到测试瓶颈后,根据瓶颈点进行针对性的优化并记录,最终完成后重启压力测试并监测优化效果;
测试与认证:当完成了以上几步之后,便可以进行层层测试,以保障业务高性能稳定运行。
华为在此次的迁移代码规模巨大,包括了 C/C++代码 272 万行、Java165 万行、Python 17 万行和 JavaScript10.8 万行 ;同时,140 个 Java 及 C++的依赖库也需要全部迁移,其中 C/C++语言相关的 34 个;迁移的同时还需要对原有的部分内容进行修改,此次迁移过程中 174 个依赖库进行了重新编译,实现代码归一和构建脚本归一。此外如汇编指令替换、编译选项修改、数据类型修改等更是不计其数。最终在四个月的忙碌过后,华为的这一项目终于在基于鲲鹏处理器的平台中成功实现商业化。
这场迁移背后,还有太多的故事。而 7 月 11 日,华为《 DevRun 开发者沙龙 :18 城鲲鹏创新中心开发者创享日贵阳专场》会将这些故事与开发者共同分享。本次沙龙中,你还可以通过华为技术专家的讲述,了解相关技术原理、实践经验和对应方法论。通过华为的技术案例来提升自己的开发效率,最终在 ARM 架构鲲鹏处理器的基础上打造更出具优势的商业化价值解决方案。
课程内容
本次课程包含 5 个子章节:
软件迁移概述
C/C++代码迁移
Java/Python代码迁移
Maven软件构建
RPM软件迁移
参会收益
从企业应用到开发者实践,全方位了解华为鲲鹏在产业各领域下的产业布局;
通过了解应用代码迁移相关技术原理、实践经验和对应方法论,能够快速实现业务迁移;
丰富的案例讲解和落地经验分享,能够帮助开发者在ARM架构鲲鹏处理器的基础上,打造更具优势的商业化解决方案;
熟悉鲲鹏软件调优工具套件的使用,能够先人一步快速发挥出鲲鹏先进算力的真正力量;
奖金丰厚,机会超多的华为鲲鹏开发者大赛即将开启,参与者将提前了解大赛详情。
温馨提示
观看方式:线上直播
直播时间:2020 年 7 月 11 日 14:00~16:25
直播链接:添加小 Q(微信:infoq123)备注“华为鲲鹏 + 报名时填写姓名”获取直播通道
超大规模的迁移背后,是技术的体现,也是经验的汇聚。如果你也想体验这种大规模应用代码迁移的风起云涌,点击此链接,开启报名吧!
评论