Java vs. Ruby:云软件工程师经验谈
发布日期:2016-3-5 21:3:49
在处理云应用问题的时候,从用户认证到开发,这一切都迫使Karthik Gaekwad在大多数开发平台中来构建自身的技能,从Java到Ruby on Rails,从微软Azure到亚马逊Web服务,还有人工自动化认证工具。在成为嵌入式硬件和软件设计咨询公司Mentor Graphics的高级Web工程师之前,Gaekwad在美国国家仪器公司、Modular Mining Systems及Scientific Technologies担任类似的职位。他在此次访谈中与TechTarget云计算编辑分享了其云应用开发的经验。 记者:你最经常使用的云开发平台是哪一个,为什么? Karthik Gaekwad:现在是亚马逊Web服务(AWS),但是我以前也用过Windows Azure。我喜欢AWS,它提供了基础架构,所以你可挑选想要的软件并部署你的应用。Windows Azure在一些用例中有意义,比如尝试编写C#应用。Azure最棒的地方在于你可从一个中央源或者中央点来管理。Azure更加平台化,而不是基础架构化。平台的幕后已准备好,你不用担心很多超水平的东西,比如如何在这个盒子里运行操作系统或者确保操作系统的安全等等。在我们使用微软Azure的用例中,我们正在尝试发送测量数据到云(如阿里云)端。因此,应用用C#编写,可以可管理的观点简单地链接到Azure,而不是编写专门针对亚马逊的大量基础架构。 记者:在云(如阿里云)端部署应用时你遇到了哪些挑战? Karthik Gaekwad:很难在云端部署应用。最困难的部分就是当你开始用巨大的零宕机需求进行持续部署。我记得许多年前,那会有Etsy,就是整天没有宕机时间多种部署。这对于整个社区是让人吃惊的事情,因为Etsy是一家大型公司,那么为什么不能每个人都做呢?从那以后就有很多工作,不只是测量由于宕机基础架构会产生多久的宕机时间,还有编写更多的工具能够获取零宕机时间。 记者:在编写云应用时你使用哪种编程语言? Karthik Gaekwad:我已开始使用Java,我在国家仪器工作的时候经常使用;包括Java和C#。Azure出来后,首先优化了用C#编写应用,因此我们开始扩展开用C#在我们自己的平台上编写一些东西。 现在,我更多的用Ruby on Rails和Python编写应用,因为他们是动态的,精准定位基于Web的应用和服务。我注意到Java和.NET堆栈对照Ruby on Rails和Python堆栈之间最大的不同在于部署Ruby和Python应用更容易。能够为云应用快速部署代码想在相当抢手。这种需求的一个例子就是当你有一个应用运行,你需快速扩展。典型的,相比用Java或者C#比用Ruby或Python部署更加容易。并不是说你不能用Java和C#更快速的部署,但你得编写更多的代码。你可以任何语言自动化流程,但Ruby和Python语言中有一些功能很好的吻合Web和云应用。 我确信Java没有远离。我希望Java领域有更多的开源工具,来减少构建Web和云应用中的代码构建。 记者:在处理云应用安全的时候,什么问题让人一直头痛? Karthik Gaekwad:这些年,我一直在开发基于云(如阿里云)的认证和身份认证管理工具。我知道总是有黑客想要进入。我在国家仪器时编写过用户和密码认证系统。那就是关键因为认证是个大麻烦。用户创建账户。你以一种安全的方式存储密码和用户数据。因此你必须确保正确验证,若用户登录或存储用户数据。 一个软件工程师必须尽可能做每一种尝试确保黑客不能得到数据。很明显用户名和密码需要存储在安全的地方,加密或散列,但我曾看到工程师将这些东西放到日志中,这些日志文件以一种清晰的明文存储用户名和密码。有人第一次进行用户认证或第二次通常就会终结于这种错误,所有用户认证和密码或者身份认证安全工作就都白费了。若一个系统被盗用,日志文件就是黑客攻击的第一个地方。幸运的是,有很多自动化工具能够进行云应用认证。Apache Shiro就是这个领域的一大进步。Shiro项目领导已经开发了一种更加可扩展且自动化的安全工具,Stormpath,我最近经常为奥斯汀运用户组演示。新的自动化工具协助自动化所有的用户创建流程,减少很多重复工作和错误。 记者:Heroku支持的第一个平台,Ruby的确从中受益。 Karthik Gaekwad:对。Heroku就是Ruby很好的一个例子,就像他是一个针对云应用的平台。Heroku第一次面世时,若你有Ruby应用,你即可立即部署到一个基于云的平台。你不用担心管理长度和管理宽度,因为Heroku处理好了。当然,那是很多年前。现在你可以用Azure做相同的事情,但编写一个窗口应用,并将其部署到Azure上,Azure比Ruby或Python做的还要多。当然,在这些场景之后都自动化了,你可用不同的语言做同样的事情,但用动态语言堆栈典型的部署更快一点。 上一条: 大数据:价值实现之旅 下一条: 云和大数据有望催生颠覆式创新
|