Java vs. Ruby:云軟件工程師經(jīng)驗談
在處理云應(yīng)用問題時,從用戶認(rèn)證到開發(fā),這一切都迫使Karthik Gaekwad在大多數(shù)開發(fā)平臺中來構(gòu)建自身的技能,從Java到Ruby on Rails,從微軟Azure到亞馬遜Web服務(wù),還有人工自動化認(rèn)證工具。在成為嵌入式硬件和軟件設(shè)計咨詢公司Mentor Graphics的高級Web工程師之前,Gaekwad在美國國家儀器公司、Modular Mining Systems以及Scientific Technologies擔(dān)任類似的職位。他在此次訪談中與TechTarget云計算編輯分享了其云應(yīng)用開發(fā)的經(jīng)驗。
記者:你最經(jīng)常使用的云開發(fā)平臺是哪一個,為什么?
Karthik Gaekwad:現(xiàn)在是亞馬遜Web服務(wù)(AWS),但是我以前也用過Windows Azure。我喜歡AWS,它提供了基礎(chǔ)架構(gòu),所以你可以挑選想要的軟件并部署你的應(yīng)用。Windows Azure在一些用例中有意義,比如嘗試編寫C#應(yīng)用。Azure最棒的地方在于你可以從一個中央源或者中央點來管理。Azure更加平臺化,而不是基礎(chǔ)架構(gòu)化。平臺的幕后已經(jīng)準(zhǔn)備好,你不用擔(dān)心很多超水平的東西,比如如何在這個盒子里運(yùn)行操作系統(tǒng)或者確保操作系統(tǒng)的安全等等。
在我們使用微軟Azure的用例中,我們正在嘗試發(fā)送測量數(shù)據(jù)到云端。因此,應(yīng)用用C#編寫,可以以可管理的觀點簡單地鏈接到Azure,而不是編寫專門針對亞馬遜的大量基礎(chǔ)架構(gòu)。
記者:在編寫云應(yīng)用時你使用哪種編程語言?
Karthik Gaekwad:我已開始使用Java,我在國家儀器工作的時候經(jīng)常使用;包括Java和C#。Azure出來后,首先優(yōu)化了用C#編寫應(yīng)用,因此我們開始擴(kuò)展開用C#在我們自己的平臺上編寫一些東西。
現(xiàn)在,我更多的用Ruby on Rails和Python編寫應(yīng)用,因為他們是動態(tài)的,精準(zhǔn)定位基于Web的應(yīng)用和服務(wù)。我注意到Java和.NET堆棧對照Ruby on Rails和Python堆棧之間最大的不同在于部署Ruby和Python應(yīng)用更容易。能夠為云應(yīng)用快速部署代碼想在相當(dāng)搶手。這種需求的一個例子就是當(dāng)你有一個應(yīng)用運(yùn)行,你需要快速擴(kuò)展。典型的,相比用Java或者C#比用Ruby或者Python部署更加容易。并不是說你不能用Java和C#更快速的部署,但是你得編寫更多的代碼。你可以以任何語言自動化流程,但是Ruby和Python語言中有一些功能很好的吻合Web和云應(yīng)用。
我確信Java沒有遠(yuǎn)離。我希望Java領(lǐng)域有更多的開源工具,來減少構(gòu)建Web和云應(yīng)用中的代碼構(gòu)建。
記者:Heroku支持的第一個平臺,Ruby的確從中受益。
Karthik Gaekwad:對。Heroku就是Ruby很好的一個例子,就像他是一個針對云應(yīng)用的平臺。Heroku第一次面世的時候,如果你有Ruby應(yīng)用,你就可以立即部署到一個基于云的平臺。你不用擔(dān)心管理長度和管理寬度,因為Heroku處理好了。
當(dāng)然,那是很多年前?,F(xiàn)在你可以用Azure做相同的事情,但是編寫一個窗口應(yīng)用,并將其部署到Azure上,Azure比Ruby或者Python做的還要多。當(dāng)然,在這些場景之后都自動化了,你可以用不同的語言做同樣的事情,但是用動態(tài)語言堆棧典型的部署更快一點。
記者:在云端部署應(yīng)用時你遇到了哪些挑戰(zhàn)?
Karthik Gaekwad:很難在云端部署應(yīng)用。最困難的部分就是當(dāng)你開始用巨大的零宕機(jī)需求進(jìn)行持續(xù)部署。我記得許多年前,那會有Etsy,就是整天沒有宕機(jī)時間多種部署。這對于整個社區(qū)是讓人吃驚的事情,因為Etsy是一家大型公司,那么為什么不能每個人都做呢?從那以后就有很多工作,不只是測量由于宕機(jī)基礎(chǔ)架構(gòu)會產(chǎn)生多久的宕機(jī)時間,還有編寫更多的工具能夠獲取零宕機(jī)時間。
記者:在處理云應(yīng)用安全時,什么問題讓人一直頭痛?
Karthik Gaekwad:這些年,我一直在開發(fā)基于云的認(rèn)證和身份認(rèn)證管理工具。我知道總是有黑客想要進(jìn)入。我在國家儀器的時候編寫過用戶和密碼認(rèn)證系統(tǒng)。那就是關(guān)鍵因為認(rèn)證是個大麻煩。用戶創(chuàng)建賬戶。你以一種安全的方式存儲密碼和用戶數(shù)據(jù)。因此,你必須確保正確驗證,如果用戶登錄或者存儲用戶數(shù)據(jù)。
一個軟件工程師必須盡可能做每一種嘗試確保黑客不能得到數(shù)據(jù)。很明顯用戶名和密碼需要存儲在安全的地方,加密或者散列,但是我曾看到工程師將這些東西放到日志中,這些日志文件以一種清晰的明文存儲用戶名和密碼。有人第一次進(jìn)行用戶認(rèn)證或者第二次通常就會終結(jié)于這種錯誤,所有用戶認(rèn)證和密碼或者身份認(rèn)證安全工作就都白費了。如果一個系統(tǒng)被盜用,日志文件就是黑客攻擊的第一個地方。
幸運(yùn)的是,有很多自動化工具能夠進(jìn)行云應(yīng)用認(rèn)證。Apache Shiro就是這個領(lǐng)域的一大進(jìn)步。Shiro項目領(lǐng)導(dǎo)已經(jīng)開發(fā)了一種更加可擴(kuò)展且自動化的安全工具,Stormpath,我最近經(jīng)常為奧斯汀運(yùn)用戶組演示。新的自動化工具協(xié)助自動化所有的用戶創(chuàng)建流程,減少很多重復(fù)工作和錯誤。