01 JAN

让云应用开发更高效的小技巧

在云技术主导IT行业的今天,除非你的公司是在云计算出现之后成立的,否则你的IT环境必然运行着大量的,不同的遗留应用程。这些应用的部署方法仍然采用的是一台服务器一个应用程序的守旧的方法,造成无限制的服务器蔓延,给企业向云迁移造成了不小的阻碍。为了跨跃现有遗留应用与云供应商提供的应用之间的障碍,企业必须明确步骤,按步就班。

首先要做的就是评估你现在手上有什么,并把它们分类,这样你一次可以完成一类。例如,识别出你不想再为之担心的应用程序,如邮件以及其它一些非核心竞争性的实用程序,这些都可以由SaaS应用代替;找出你必须定制化开发的应用程序,并做出决定他们是否可以虚拟化。这一时机也恰好可以进行成本和利益分析,决定是修改升级旧应用,还是完全用新的应用替代。为新应用程序选择开发环境,并确定平台即服务(PaaS)是否可行。

无论企业选择了哪个开发环境来开发新应用程序,下面这五个技巧可使你的开发人员更高效地完成云应用的开发:

1、学会分享。云应用开发与传统的在本地硬件上的应用开发不同。传统的开发方法需要拥有自己的数据库、存储设施、通信和授权机制,而云技术能够通过API提供共同的、共享的、可访问的组件。

2、不要忽视PaaS。共享服务结束的标志是提供了一系列易于访问的服务、环境管理系统、以及用户和部署代码。开发人员和测试人员通过使用PaaS环境固有的自动部署功能能更轻松地部署并改进测试代码。

3、要无所不知。在云环境中,改进的监测工具和仪表盘使开发人员能够在工作进行中预测出资源的使用率和合适的规模,这样可以更轻松地达到客户的满意,并实现成本效益。

4、重复审查编排。云中包含了编排层,可以快速提供包括虚拟机、软件和配置在内的整个环境。许多客户认为因为应用程序安装困难,它并不是自动化自我配置的一个好的替代方案,但事实是使它时,确实发现它产生了一定意义。

5、依赖于自助服务。大部分云产品都提供了自助产品,至少虚拟机和整个环境中,或在编排的情况话提供这些自助服务。这意味着开发人员和质量保证团队有权访问应用程序,无论什么时间,什么地点,只要他们需要。

云中不存在应用孤岛

在应用程序中使用云技术的一个最大挑战是,大部分IT部门与应用开发人员、虚拟化专家和基础设计师团队无法连接。他们的技能集合的文氏图很少会有重叠的部分。

所以企业领导需要时刻注重这些员工之间的沟通情况。一个利用云环境的成功应用策略需要这三个领域专家的协作开发。如果你的专家们只注意到他们自己的需求和优先权,最终你会得到一个三条腿的凳子,这是无法站住脚的。

如果企业仍然想要使用一些云原生服务,还有其他一些技巧可以解决依赖性分发,尽管它们可能会降低可迁移性并增加复杂性。例如,如果只有一个提供商拥有上传内容交付网络资产的工具,请确保每次使用该云平台将内容上传到该CDN,即使目标是另一个云平台。

通常有两种力量推动围绕多云的讨论:自由选择组织所需的云计算工具和平台,以及这些选择带来的复杂性。

这并不总是那么容易,但组织有多种方法可以构建IT架构,提供跨环境的一致性并避免供应商锁定。企业需要遵循获取有关如何构建多云应用程序并了解何时不值得这样做的建议。

在构建多云应用程序之前考虑这些因素

无论是发生中断、价格变化、与供应商的关系破裂,还是其他原因,很多企业都希望构建自己的应用程序,以便在认为合适的时间和地点移动代码。

但是,编写与云计算无关的代码不仅仅涉及避免使用特定于平台的工具。以下是构建可在多个云平台上使用的应用程序时需要记住的四个因素:

1.不要在源代码中包含密码和API密钥等敏感信息。

2.为应用程序提供单一入口点。要最大限度地降低故障点风险,使用循环域名系统记录在云计算提供商之间分配负载。

3.尽可能自动化以最小化复杂性。

4.不要完全排除本机工具。云计算供应商可能拥有真正独特、有价值的服务,或者避免使用特定工具的成本可能高于供应商锁定的风险。

考虑何时以及如何规划可迁移性

组织优化其特定云平台的工作负载越多,以后移动这些应用程序就越困难。如果IT团队想要获得可迁移性,他们需要了解使用的服务的含义以及如何将应用程序锚定到给定平台。

例如,云计算提供商推动与其竞争对手进行功能奇偶校验,但这并不一定能够更轻松地在云平台之间迁移工作负载。即使两个提供商具有可比较的服务,它们也通过不同的API提供。开发人员需要重写组件才能在其他云平台上工作。

尽管如此,迁移性并不是万能的。事实上,从长远来看,即使成本较高,找到适合工作负载的合适平台也会更具成本效益。如果企业拥有深度互联的应用程序,最好将它们托管在自己的数据中心内,以限制流量费用、集成和安全问题。

 

克服平台差异

部署多云战略的组织需要弥补应用程序部署在不同云中的执行方式不同的事实。企业可以通过限制扩展到一个云平台,在不同的云平台中运行并行部署或抽象某些组件来实现这一目标。

如果组织使用诸如Apache Meos或Kubernetes之类的软件将部署同质化,以抽象应用程序平面或使用诸如Ansible、Chef或Puppet之类的DevOps工具,则会采用规模和重新部署方法。

运行并行部署与扩展和重新部署方法类似,但事务和其他任务是共享的。这将需要在重复的应用程序组件之间使用负载均衡器,但不需要特殊的部署技术,因为只有工作在云平台之间移动。

当应用程序组件需要跨云平台进行扩展或故障转移时,IT团队可以使用基于适配器设计模式的某种私有中间件。这会将不同的云平台提供程序API拉入单个API,然后开发人员可以使用它。如果提供商的服务不同,则创建更高级别的抽象,以将组织的API映射到每个云中的特定功能。

简化持续集成和持续交付(CI/CD)管道

与云计算提供商无关的持续集成和持续交付(CI/CD)管道可以简化多云应用程序的部署过程,如果IT团队选择采用这种方式,则可以选择多种方案。

大多数云计算供应商都支持安全文件传输协议。虽然它容易出错,但开发人员可以使用它来交换、更新或删除端点,同时保持部署的性质。

IT团队还可以使用容器来集中应用程序构建,并避免在多个环境中部署整个应用程序代码。应用程序映像可以保存到任何云都可以访问的容器存储库中,开发人员可以使用给定提供程序的编排工具来启动应用程序映像。

无论采用哪种方法,企业还必须确定将在每个环境中运行的部署后任务,以便平衡云中的负载。同样,更多的云平台会增加复杂性,因此请注意应用程序依赖的托管功能以及需要额外管道自制的方式。