数百万代码迁移,174个依赖库重译,历时四月的软件迁移

2020 年 7 月 08 日

数百万代码迁移,174个依赖库重译,历时四月的软件迁移

每一家小企业都有一个成为巨头的梦,但成为巨头后也都有自己烦恼的地方,一个典型的问题就是大型项目的迁移。对于巨头企业而言,开放出来商用的项目大多数都需要经历内部研发、内部使用、发展成熟之后才会真正开放商用,但对外商用和自家使用所面临的环境截然不同,这难免就需要大规模的应用代码迁移了。

那么在大规模的应用代码迁移中,究竟应该注意哪些事项呢?华为开放过诸多由内部孵化而出的大型项目,而每一次项目的开放都可能需要大规模的应用代码迁移。此前出于规模化商用目的,华为需要将自家的一个内部项目由原来的 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)备注“华为鲲鹏 + 报名时填写姓名”获取直播通道

超大规模的迁移背后,是技术的体现,也是经验的汇聚。如果你也想体验这种大规模应用代码迁移的风起云涌,点击此链接,开启报名吧!

2020 年 7 月 08 日 09:50 264

评论

发布
暂无评论
发现更多内容

原创 | 使用JPA实现DDD持久化-O与R:两个世界

编程道与术

Java hibernate DDD JDBC jpa

击破技术枷锁与认知迷雾 百度四大杀手锏开启新基建AI风暴

脑极体

LG的“卷轴”柔性屏,技术可期,前景未卜?

脑极体

Vue中使用装饰器,我是认真的

前端有的玩

JavaScript Vue 装饰器

BIGO 实时计算平台建设实践

Apache Flink

flink BIGO

基于 Golang的侵入式 Opentracing实现全链路追踪 ----实践篇

是老郭啊

微软苏州集体抵制来自阿里、华为的跳槽者:请停止你的“奋斗逼”行为!网友:看到 955 不加班的公司名单,我酸了

程序员生活志

加班 程序员生活 996

数据库系统设计概述

码哥字节

数据库 redis mongodb elasticsearch 数据库设计

架构师第九周作业

傻傻的帅

架构师 课程作业

汇付天下与阿里云合作打造企业级移动中台,运营效率提升100%

应用研发平台EMAS

云小课 | IPv4枯了,IPv6来了

华为云开发者社区

IP 公有云 虚拟私有云 华为云 虚拟化

在人工智能时代追逐的“后浪”

华为云开发者社区

AI 开发者 技术社区 程序员成长 华为云

阿里云 EMAS HTTPDNS 联合函数计算重磅推出 SDNS 服务,三大能力获得突破

应用研发平台EMAS

相聚“云”课堂,智微智能“双师课堂”促进优质教育资源共享

DT极客

阿里云移动研发平台 EMAS 助力银行业打造测试中台,提升发版效能

应用研发平台EMAS

阿里云小程序云发布小程序跨平台开发框架,助力开发者一次开发,多端运行

应用研发平台EMAS

厦门航空牵手阿里云打造航空业移动研发中台,研发效率提升50%

应用研发平台EMAS

iOS身份证号码识别

高丰

你问我答:微服务治理应该如何去做?

博云技术社区

微服务 PaaS API 容器云 博云

第九周

hdhdh

秒杀系统问题与方案设计

superman

秒杀 架构总结

华为云GaussDB(DWS)内存知识点,你知道吗?

华为云开发者社区

数据库 数据 大数据处理 内存 华为云

多线程 & 并发架构

石印掌纹

将信将疑,将中台进行到底

郭华

Java字符串拼接,去首尾, 判空, 类型转换

狸猫换太子

Java 类型推断 字符串

区块链标准化很重要吗?

CECBC区块链专委会

区块链 区块链规范

《深度工作》学习笔记(3)

石云升

学习笔记 深度工作 工作哲学

财务分析与主要的模型

松子(李博源)

学编程没人带?推荐10个免费学编程的最佳网站给你

代码制造者

编程 编译器、程序语言、CPU 编程学习 编程网站

第九周作业

方堃

无接触,云办公!5天完成手机淘宝新版本迭代,揭秘阿里工程师协同研发“神器”

应用研发平台EMAS

数百万代码迁移,174个依赖库重译,历时四月的软件迁移-InfoQ