设计可移植性的云应用程序

编写应用程序以更轻松地在云之间进行可移植性需要付出一些工作并需要进行权衡。但是,从长远来看,设计可移植性应用程序所需的投入可以得到回报。

优先考虑多云策略的组织希望能够将应用程序从一个云迁移到另一个云,甚至可以同时在多个云上运行该应用。但是,如果从一开始就不将应用程序的可移植性放在首位,则很难实现这一目标。

组织出于多种原因采用多云策略,包括对供应商锁定或数据驻留要求的担忧。它并不适合所有人,因为它要求IT团队采取额外的步骤来抽象工作负载。还必须放弃许多简化云部署的本机工具。

尽管如此,尽管面临挑战,企业仍越来越多地采用多云策略。如果您的公司正在使用多云,请探索以下技术,以便在设计云应用程序时考虑到可移植性。

选择正确的编程语言

首先,请确保所有的托管环境都支持计划用于应用程序的语言。在大多数情况下,其编写语言与应用程序可移植性无关。例如,如果应用是使用自我配置的基于云的VM部署的,则可以自由配置VM以支持所需的任何语言。

但是,其他部署策略可能会限制对编程语言的选择。例如,AWS Lambda或Microsoft Azure Functions之类的无服务器平台不允许用户对主机环境进行重大更改。这些服务仅支持以某些语言编写的应用程序,并且并非所有云都支持相同的应用程序。

因此,如果使用无服务器功能或认为将来会使用,最好选择所有主要无服务器平台都支持的语言,例如Python,C#或Java。

容器化应用

开发人员还可以使用容器来帮助优化应用程序在云中的可移植性。诸如Docker之类的软件容器框架不会完全将应用程序从主机环境中分离出来。在这方面,主要限制是Linux容器只能在Linux主机上运行,而Windows容器只能在Windows上运行。

但是,容器使应用程序托管环境中的许多其他变量无关紧要。只要支持容器框架,使用的特定Linux发行版或Windows版本都没有关系。

只要容器有访问方法,容器就不会为变量之类的数据所困扰。因此,将容器化的应用程序从一个云迁移到另一云或迁移到本地环境相对容易。

在云中运行容器时,不必担心要处理的环境的细节。只要它们支持选择的任何容器框架,就可以使用。

使用统一的云API

设计可移植性的云应用程序时,另一个常见难题是是否使用特定云的API。通常,API是向应用程序添加功能的最简单方法。但是,不利的一面是,当以这种方式编写应用程序时,必须先重写应用程序的这一部分,然后才能移至其他云。

避免这种情况的一种方法是避免完全使用API。但是,对于大多数企业而言,这是不切实际或不希望的。更好的方法是使用统一的云API,例如Apache Libcloud或Kloudless。

这些工具实质上充当抽象层。应用程序发出请求,并且统一API将请求转发到正在使用的任何云。这样,只编写一次API调用。

不幸的是,统一的API具有有限的功能。它们仅支持某些语言,并且不能保证它们将始终无缝运行。如果云提供商在未发出警告的情况下更改了其API,则统一的API可能不再能够支持它。

因此,让整个应用程序依赖于统一的API并不是最好的主意。取而代之的是,针对应用程序的各个部分利用统一的云API,在这些区域中可以容忍某些中断风险。这不会解决所有问题,但是会减少将应用程序移植到其他云所需的工作量。

使用基础架构作为云应用程序部署的代码

基础架构即代码是指编写文件以定义应如何部署或配置软件环境或应用程序的实践。这些工具然后用于自动创建指定的配置。

在将应用程序部署到云中时,许多第三方基础架构即代码工具(例如Terraform,Chef或Puppet)相对云不可知。换句话说,他们可以采用一种配置,并在一些主要的公共云上进行一些细微的调整就可以使用它。

因此,通过采用“基础结构即代码”工具来自动化应用程序部署,可以简化将应用程序从一个云迁移到另一个云的过程。基础架构即代码本身并不能使您的应用程序具有更高的可移植性,但可以使部署过程具有更高的可移植性,从而增加了总体的可移植性。

当然,将应用程序从一个云迁移到另一个云几乎总是需要进行一些重新配置和调整。没有完全与云无关的100%可移植应用程序。

预先进行额外的工作以保证应用程序的可移植性比在线下重写大部分应用程序要容易得多。而且,仅凭可以轻松地迁移到其他云的知识就为业务带来了一定程度的敏捷性,这非常有价值,尤其是在云供应商的产品不断发展的情况下。

原文链接:

https://searchcloudcomputing.techtarget.com/tip/Design-a-cloud-application-with-portability-in-mind?

数据库上云已是必然趋势,据 Gartner 报告显示,越来越多的公司转向使用云来托管他们的数据库,云基础设施和服务正迅速成为数据管理的默认选择。

但在选择和使用云数据库过程中,

云厂商提供的MySQL实例和自建实例该如何选择呢?

有什么评判标准?

云上MySQL数据库运维过程中有什么注意事项?

2020年5月22日 周五晚 20:00 

国内知名MySQL专家|Oracle MySQL ACE | 腾讯云TVP成员

叶金荣

现场教学,药到病除!

关注新钛云服公众号,扫下方二维码,报名参与直播,分享邀请卡前三名,活动现场可获得小米体重秤一枚!

现场参与问答,有机会获得新钛云服出版书籍《Linux 运维最佳实践》一本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值