【案例学习】传统应用程序上云的经典案例,欧洲两家领军企业的落地实践

本文主要是介绍【案例学习】传统应用程序上云的经典案例,欧洲两家领军企业的落地实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(一)法国兴业银行:有状态的传统应用程序也可以容器化

基本背景

法国兴业银行(Société Générale)是一家拥有153年历史的法国跨国银行,这家银行坚信技术和创新是丰富客户体验和推动经济发展的关键因素。几年前,该银行启动了一个项目,该项目定义了它们的下一代应用程序平台,就是在2020年前将其应用程序的80%上传至云端运行。法国兴业银行选择了Docker企业版(Docker EE)作为其应用程序的基础平台,并在15个月前开始与之合作。今年在DockerCon欧洲大会上,DevOps架构师Stephan Dechoux 和中间件专家Thomas Boussardon分享了他们将Docker企业版(Docker EE)集成到法国兴业银行IT系统的经历。

技术概况

法国兴业银行拥有多种应用程序组合,其中包括许多不同类型的应用程序,如传统的单一应用程序(monolithic apps),SOA,分布式应用程序和REST API。该银行也是一个在全球范围内拥有团队和数据中心的全球性组织。它的主要目标是提供新的应用程序平台,以加快产品上市时间并降低成本,同时加速创新。最初,法国兴业银行考虑了现成的PaaS解决方案,但是它意识到这些解决方案更适合于新建的应用程序,而它需要的则是一个可以马上支持已经存在的数千个应用的解决方案。

另一方面,该平台还需要支持法国兴业银行未来的项目。例如,虽然他们有一个相当大的私有云,但他们希望确保该解决方案可以扩展到公共云,并支持新兴技术和未来的使用案例,如机器学习和区块链技术。

法国兴业银行得出的结论是,Docker EE将同时支持它们现有的应用程序以及新建的应用程序,同时让它们能够整合首选系统并利用现有的基础设施。

项目详解——成功的分步计划

第一步:与现有技术栈集成

它们首先定义了现有的技术和应用程序堆栈,并优先考虑将Docker EE与其核心CI / CD管道工具(包括Jenkins,Github和Nexus)集成。

SG1

第二步:有状态的容器

如上图所示,法国兴业银行开始将有状态的应用程序迁移到平台。为了支持这些有状态的(主要是传统的)应用程序,Docker EE使用新的卷(volume)插件集成到现有的NetApp存储中。法国兴业银行大约在9个月前开始了在Docker EE中运行第一套应用程序。
SG2

第三步:集中管控

随着这些应用程序在Docker EE中运行,Thomas和Stephan添加了日志记录和监控解决方案,不仅可以查看容器内部的运行情况,还可以将信息集中在一个仪表板上。
SG3

成果

今天,在它们开始这个项目15个月之后,它们进入了第三阶段。在Docker EE平台上有10个应用程序正在运行,另有50个应用程序正在开发中。大约有400名开发人员在这个平台上工作,并且在整个组织内产生了极大的热情,不同的团队都想在这个平台上工作。

小结:不会过时的技术平台

现在,现有的传统应用程序更容易更新和维护了,法国兴业银行正在寻找更多的微服务,并扩展平台以支持新的云原生应用程序和新兴技术。在接下来的几个月中,法国兴业银行将在多个云层(私有云和公共云)之间一同运行,就像Stephan说的那样,将所有的一切都运行在“一个巨大的集群”中。

对于Stephan和Thomas来说,Docker EE在法国兴业银行的成功来自于优先考虑到平台的整合点以及关键应用程序的初始选择。从小处着手,银行可以凭借自己的成功,在平台建成之后积聚更多的动力。通过分步计划,他们能够随着时间的推移增加更多的功能,同时在平台上培养更多的团队。今天,Docker EE无疑是整个组织的首选平台。

(二)丹麦金融保险公司Alm Brand - 为传统应用程序寻求操作的稳定性

基本背景

Alm Brand成立于1792年,它是一家总部位于哥本哈根的丹麦保险和金融公司,也是历年都出席DockerCon欧洲大会的公司之一。IT架构师Sune Keller和系统专家Loke Johannessen将骑着他们的自行车前往2017年DockerCon 欧洲大会,现场演示如何帮助传统的WebLogic应用程序迁移到Docker企业版(Docker EE)。

技术思考

在参加完2015年的DockerCon(当时被称为Docker Datacenter)欧洲大会之后,Alm Brand开始与Docker EE合作。他们成功的在Docker EE环境中部署第一套新应用程序后,Alm Brand继而想要用它来解决他们现有的WebLogic应用程序,这个让他的团队感到头疼的应用程序。该团队在一个大型集群中运行WebLogic应用程序,所有这些应用程序都运行在同一个Java虚拟机上。当一个应用程序崩溃时,它通常会导致整个Java虚拟机的崩溃或中止整个群集,这使得大家很难确定哪个应用程序是导致崩溃的根源。这种设置也非常脆弱,而且速度很慢,因为他们只能一次只能将一个应用部署到集群中。
AB1

凭借他们使用Docker EE部署首批应用程序所积累的经验,Sune和Loke设定了迁移传统WebLogic应用程序的宏伟目标。他们开始在工作时间内从现有的集群切换到Docker EE,无需更改代码,并将对用户产生的影响降到最低。

方案

目前,Alm Brand已经将39个WebLogic应用程序迁移到他们的Docker EE环境中,并与近50个新开发的应用程序一起使用。他们能够通过在传统集群和新Docker集群之间对应用程序进行负载平衡,以最小的干扰进行迁移,从而在不影响用户使用的情况下,逐步将流量从一个集群转移到另一个集群。Sune和Loke在演讲中演示了这个过程,值得大家一试!

AB2

迁移的好处是?

对于运营团队而言,这种迁移的积极影响非常大,原因如下:

  • 改良配置管理:对于Alm Brand来说更具挑战性的问题之一就是处理不同应用程序8年的配置堆积问题。通过仔细测试和拆分依赖关系,他们将26个不同的自定义虚拟机精简至12个。
  • 更轻松的维护和故障排除:由于应用程序彼此隔离的特性,Alm Brand出现服务中断的经历要少得多。应用程序问题也就更容易识别和解决了。
  • 新开发和传统的应用程序拥有统一标准的运行模式:在同一个Docker EE平台上运行这两种类型的应用程序,可以在整个组合环境中集中记录日志和度量指标。Alm Brand能够使用同一组进程和仪表板来管理所有的应用程序。

小结:下一步计划

Sune and Loke还有大约10个WebLogic应用程序需要迁移,然后他们将开始着眼于他们的Windows应用程序组合。他们已经在开始利用Docker EE的基本访问控制和LDAP集成功能,现在还在探索其他一些高级功能,如用于分离生产和非生产环境的基于节点的隔离功能。

这篇关于【案例学习】传统应用程序上云的经典案例,欧洲两家领军企业的落地实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/191411

相关文章

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

golang内存对齐的项目实践

《golang内存对齐的项目实践》本文主要介绍了golang内存对齐的项目实践,内存对齐不仅有助于提高内存访问效率,还确保了与硬件接口的兼容性,是Go语言编程中不可忽视的重要优化手段,下面就来介绍一下... 目录一、结构体中的字段顺序与内存对齐二、内存对齐的原理与规则三、调整结构体字段顺序优化内存对齐四、内

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

python实现简易SSL的项目实践

《python实现简易SSL的项目实践》本文主要介绍了python实现简易SSL的项目实践,包括CA.py、server.py和client.py三个模块,文中通过示例代码介绍的非常详细,对大家的学习... 目录运行环境运行前准备程序实现与流程说明运行截图代码CA.pyclient.pyserver.py参

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

Spring Boot统一异常拦截实践指南(最新推荐)

《SpringBoot统一异常拦截实践指南(最新推荐)》本文介绍了SpringBoot中统一异常处理的重要性及实现方案,包括使用`@ControllerAdvice`和`@ExceptionHand... 目录Spring Boot统一异常拦截实践指南一、为什么需要统一异常处理二、核心实现方案1. 基础组件

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机