Java开发者的PaaS指南

3 篇文章 0 订阅
2 篇文章 0 订阅

简介

我从事软件开发工作已有20多年,在此期间,我参与了各种不同的环境下,各类软件系统的搭建工作,其中大部分系统都以Java和web技术为核心,当然其他技术也有所接触。同时,我也有幸参与了从开始到交付的整个软件开发过程。不过在基础设施这一块,我没有参与太多。另外,我也创建过一些服务器,但大多数生产基础设施的构建都是由基础设施团队完成的。我认为这很常见。提供生产级基础设施是一项专门的任务;需要了解安装、配置和强化操作系统、数据库、负载平衡器、防火墙等方面的知识。坦率来讲,这都不是我特别感兴趣的,尤其身在软件行业,我们都需要不断地去学习新知识、新技能,新技术的更新换代实在太快。

记得三年前,我在匈牙利布达佩斯的Craft Conference上,曾就我的一个名为Structurizr的创新应用程序和与会者进行了多次探讨。这个程序的初期演示是在Rackspace的Ubuntu上运行的,但牵扯到了一系列基础设施和操作上的问题,这些问题的解决不在我的能力范围内。会中我收到的一个建议是, 我可以去关注一下Pivotal Web Services这个 PaaS云服务。我确实也在泽西运营一些当地学校的编程俱乐部时接触过这个服务,但没有考虑过它是否能承载我自己的应用程序。

1、Pivotal Web Services

与Cloud Foundry

Pivotal Web Services是一个基于Cloud Foundry的商业服务,提供“平台即服务”(PaaS)。从本质上讲,Cloud Foundry通过API提供了一个应用程序部署平台,可以将部署在公有云、私有云或是数据中心服务器上的底层基础结构抽象出来。

假设你正要在Apache Tomcat Web服务器上构建一个Java web应用程序。那么,在其能在网络上运行之前,你需要在某处提供服务器,安装Java和Apache Tomcat Web服务器。你还需要强化服务器、配置SSL、定期应用补丁等,如果你还想通过使用两个实例来提高恢复能力,那还需要启动第二个服务器,重复前面的步骤,并配置这两个服务器,来支持例如负载平衡器。

当然,你还可以,也可能会,使用Vagrant, Chef, Puppet, Docker等这些自动化配置和部署工具来自动化大部分的操作步骤。

当Cloud Foundry命令行界面安装完成之后,如果我们想部署一个Java .WAR 或.JAR文件,只需要简单地运行一个“cf push”命令,就可以将它部署到Pivotal Web Services 这个PaaS云服务上。仅此而已! 我还可以使用“cf scale”命令来请求Pivotal Web Services来纵向扩展应用程序,例如添加更多的RAM,或把应用程序横向扩展,例如添加更多实例。

如果需要更新应用程序,则要用到另一个“cf push”命令。但这么做会中止当前实例的运行,并将其替换为新版本,因此会有一些服务停止时间。然而,Cloud Foundry PaaS云平台使得通过命令行接口来进行蓝绿部署变得非常容易。如此一来,Java开发人员就可以不具备底层基础设施专业知识的前提下,也在几分钟内建立一个“零停机时间(zero-downtime)”(即服务不会停止)的连续交付通道。

2、基础设施上层的应用程序

正如Joshua McKenty在最近的一个关于思科云的播客中所讲的,Pivotal Web Services和Cloud Foundry为开发者提供了一个更高的抽象层。软件开发人员的职责是处理应用程序,而不是基础设施或容器。

目前,业内关于Docker容器的讨论很火热。我认为Docker是一项了不起的技术。但是,软件开发人员更多的还是要专注于处理应用程序,而不是去关注容器技术或基础设施。我认为关注Docker技术是对大多数软件开发人员本职工作的干扰,对此,我会在另一篇博客里进行阐述。

3、供应商锁定(Vendor Lock-in)

在上文中,我介绍了平台即服务(PaaS),并讨论了如何使用Pivotal Web Services PaaS云服务和Cloud Foundry PaaS云平台来实现应用程序的快捷部署,且无需担心任何底层基础设施的问题。 一个比较常见的误区是,大家总觉得使用Cloud Foundry PaaS云平台(以及Pivotal Web Services PaaS云服务或其他项目)会导致供应商锁定(Vendor Lock-in),从而不能轻易转换云服务提供商。

回过头来再看Structurizr,它是用于可视化和文件记录软件架构的一组工具,系统图示如下:

c3e04f6ae8d410c223b727dc2077015146763a72

总而言之,经过身份验证的用户使用Structurizr Client函数库(Java 和.NET)可创建和上传软件架构模型,并通过web查看这些模型的内容。Structurizr使用SendGrid这个电子邮件服务平台发送电子邮件,所有支付处理都是由Taxamo和 Braintree支付工具服务一起完成的。这里也用到了其他一些云服务(例如CloudFlare、Pingdom和Papertrail),但在图表中没有显示。

从一个(C4模型)容器角度来看,Structurizr如下图所示(图表中忽略了外部服务,因为它们与此次讨论无关):

bcba786ffd9c7c2ee14934844f27cc1271f35bbd

从本质上讲, Structurizr由一个运行在web浏览器(服务于HTML、CSS和JavaScript)的客户端应用程序组成,而服务器端包含一个Java web应用程序服务https://structurizr.com,和另一个Java应用程序服务https://api.structurizr.com,再加上一些数据存储(MySQL数据库管理系统, Redis缓存和Amazon S3云存储服务)。这两个Java web应用程序都运行在Pivotal Web Services这个PaaS云服务上。

阅读全文请点击

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值