由Windows開發平臺向Linux平臺轉移的一些想法
從畢業到現在已經快20年了,一直在從事Windows平臺上的開發工作。剛畢業那會大約是97,98年左右,工作的平臺除了Windows平臺還有Dos平臺,因為在學校學習時,也是從Dos開始的。因此對於從事Dos平臺上的DBase程序開發也不需要適應期,後來轉向到Foxpro語言。使用Foxpro語言做了差不多2年的數據庫開發及維護工作。在這期間Windows95系統在國內越來越主流,因此也開始學習Windows平臺上的一些開發工具,最開始時還是從Foxpro的升級版本Visual Foxpro開始的。Foxpro作為一種解釋型語言,在Windows平臺上沒什麽優勢。相對於BASIC的升級版本Visual Basic來說無論是性能還是UI體驗差太多,也因此很快就由Visual Foxpro轉向的Visual Basic語言。同時也開始了對Win32API的學習,在學習的過程中對於Windwos系統及Visual Basic都是更加深刻與清晰的認識,對於Visual Basic對 Windows系統嚴重依賴和Active DLL的工作模式實在是讓人惱火。也曾經一度轉到Delphi語言進行開發工作,但後來還是因為工作需要的原因又轉回到Visual Basic語言。再後來隨著.Net的出現,轉向了C#。在數據庫方面也是算是由Dos平臺的Dbase,Foxpro,Access,SQL Server一路走來。因為工作一直圍繞著Windows平臺上的MIS相關開發工作,所以對於從2000年左右已經開始的Web開發並沒有太多實際的接觸,當時也只是對於HTML,Javascript,CGI等技術做過一些粗淺的學習,因為當時工作中沒有與Web相關的內容,因此就沒有繼續深入的進行學習。
時間一晃到了2008年,公司的產品方向也開始向Web方向轉移,由於公司一直走的是微軟系的技術路線。因此選擇ASP.Net進行Web產品開發也就變成了理所當然,公司第一款Web產品是一個在線支付平臺。由於公司裏的人員對於Web開發都不熟悉,當時這個項目還進行了外包,也正是因為公司的人員對於Web開發不熟悉,所以對於產品的一些功能需求定義及功能實現都提出來太具體的內容,也造成了外包公司開發的產品最終並不算成功。也是從那時起公司決心產品還得由自己人來做,但自己做的前是需要現在人員要首先轉技術路線,從以往的WinForm程序開發轉向Web開發,最開始只指定了2,3個人進行預研,當時的選項有Asp.net、Java及Saleforce。還有當時在國內並不知名的Pythan。最好發現像我們公司這種小公司,還是ASP.net最適合。
一晃10年過去了,我們的產品已經基本全部都轉到了Web平臺。但最近3,4年雲服務的一軍突起及移動設備應用的興起,又讓我們公司再一次站到了選擇的十字路口。不可否認的國內近10年的發展可以用一日千裏來形容,整個中國就是在不停的加速中發展著。我們公司的老板一直在美國,最近一次出差去美國與老板溝通。他也不得不承認,現在在互聯網應用這方面,中國比美國走得還要快。在移動支付這方面優勢就更加明顯,我們在2年前就已經為公司的在線支付平臺開發了二維碼相關功能,但是由於二維碼在國外使用的較少,所以一直沒有得到太好的推廣,直到Apple的IOS11開始支持QR碼並提供掃描功能後,這項功能才開始向客戶進行有效的推廣。其實沒有應用場景也難怪客戶無法理解功能。這也從側面的反應了在金融支付這塊已經走的非常前面了。由於公司的產品大部分集中在Web端,公司的人員結構也與10年前有著很大的不同。以前的團隊主要是由開發人員與測試人員組成,現在的團隊的人員結構則是由開發人員+測試人員+運維人員+技術支持+美工組成。談到運維,就得談談數據中心及服務器,目前我們的服務器主要都托管在美國的數據中心,但運維還是由我們負責,無論硬件還是軟件都是由我們進行管理。這對運維人員的要求就比較全面,要對網絡協議、服務器硬件、操作系統、數據庫系統、工具軟件都很熟悉,才能較好的完成相應的運維工作。最近兩年比較火的全棧工程,我想是與這方面的需求有關。出於現實的情況是我們是一家規模比較小的公司,我們利潤支撐不起太多的人員。同時我們也想把我們的精力集中到我們產品業務功能的改進上,因此我們希望將我們的產品遷移到雲上,這樣我們就可以不用擔心網絡維護與硬件維護等相關的工作。所有的起因都是因為要面對現實。在考察了一年的時間後,我們發現現有的雲端服務商提供的產品價格還是比較高的,無論的Azure,AWS,Google,阿裏,騰訊。這些服務商中性能稍微高一些的虛擬機,每月的使用費都要在¥1000以上。像我們原來基本Windows平臺開發的ASP.Net應用,對於性能要求都太高了,同時微軟系產品的另一個硬傷(產品許可價格)就更加突顯了。這樣性價比,對於我們爭取客戶來說毫無優勢。我們在調查過程中發現,Linux平臺對於硬件需求都是較低的,而且Linux平臺的產品很多都是開源及免費的。性能與安全性並不輸微軟系產品。因此我們決定將我們的產品再一次的做轉型,這一次將全部轉向Linux平臺。
平臺選定後,就是決心了。我初始的想法還是先小範圍的測試,搭建一個用於測試的平臺,Linux系統的分支很多(FreeBSD , OpenBSD, PCBSD , Mac OS,CentOS, Scientific Linux, Red Hat,Debian, arch linux, Gentoo, Slackware,OpenSuSe, Fedora, Ubuntu)最終選擇了CentOS,主要是考慮其是基於RedHat,穩定性高。同時部署Nginx+PostgreSQL服務,並開發一款小型應用,用於測試平臺的可行性及性能。因為以前對於Linux平臺上的技術真的不太熟悉,所希望借著這次轉型好好的學習一下Linux平臺下的相並技術。萬事開頭難,準備選從安裝配置CentOS開始。下一篇就講講我在安裝CentOS過程中遇到的問題及解決方法。
由Windows開發平臺向Linux平臺轉移的一些想法