顧問與SA經驗談: 作業系統的選擇?

Gene寫了這篇「IT 顧問 Talk (偏見篇): 作業系統之章」, 所以手癢也來寫.

先從一點私人方面聊起, 也可以視為偏見的一種.

很多人知道我是FreeBSD的愛用者, 然後少一些人知道我不「這麼」喜歡Linux(或者說, 我Anti-GPL), 但是其實很多人不知道FreeBSD & Linux都不是我碰的前三種「泛Unix」系統. 我碰的前三種是 AIX, DEC, IRIX.

而事實上直到今天我還是Multi-OS的使用者:「目前」主要工作用Win7, 家裡同時有Win7, WinXP, Mac OS, FreeBSD四個OS在用, 如果把一些Embedded System也算在內的話, 還要加進Linux. 其實我個人的觀點來說, 只要有網路, 有Browser, 有SSH Console, 我幾乎就能工作以及使用, 差別只是方便與否及效率的問題, 所以在不同階段用不同的OS作為主力, 在P社時用FreeBSD + Gnome, 開業時用WinXP與Mac OS, 現在用Win7; 全部的因素都是工作, 假如工作上不挑, 我就會用我偏好的FreeBSD or Mac OS. (其實我最挑剔的是Keyboard, Mouse, Monitor, 不過那是另外一個Topic)

但是選擇Server Side的OS就完全不是這麼一回事.

如果以一般中小企業內部使用來講, 老實講以我接觸的案例還是以Windows Base居多, 我曾經仔細跟業主以及管理者們討論並分析過原因, 其實很大的因素是大多數人並「不知道」或是「刻意迴避」Windows Base的軟體成本. 舉例來說, 很多公司都有Active Directory作為公司網域, 但是大多數並沒有老實的購買License, 光是「標準版」的Windows Server, 以微軟的Open Value License來算, 光是OS本身應該就在兩萬上下, 也就是說, 相同硬體下, 一個FreeBSD/Linux的Server跟一個Windows Base的Server, 在TCO上差了兩萬, 以一般Rack Mount Server來說, 可能就佔掉了20%甚至更高的比例. 要是讓每個業主都被迫要乖乖的繳「微軟稅」, 我相信大多數業主都會想換成FreeBSD/Linux吧. 更不用說一套MySQL或PostgerSQL的價格是0, 而一套MS-SQL Server「標準版」要價15萬左右. 所以當架構逐漸變大, 或是可預期的必須隨著規模而橫向擴充時, 初期選擇Windows Platform會造成極高的Cost, 而且以Windows產品的生命週期, 平均每三到五年必須付出一次升級的費用, 而且痛苦的是可能會升不上去. (例如Exchange Server 2003就不能無痛的升級到Exchange 2008)

所以其實並不是我特別痛恨Microsoft或是特別熱愛FreeBSD/Linux, 而是幾乎所有業主都關心Cost問題, 而在這個基礎上偏向選擇FreeBSD/Linux是必然現象. 不過, 這並不是唯一的因素….

通常在Cost之外, 更重要的問題是建構於其上的架構, 軟體, 以及人員.

首先考慮的是架構. 架構如果必須遷就Client或其他環境影響力, 例如一定需要很嚴謹且複雜的Active Directory網域來協助管理公司甚至集團各單位的存取, 以及跨系統之間的Auth & Audit問題, 那個Windows Base會是比較好的選擇, 畢竟幾乎大多數Office Client幾乎都會是Win32, 而假若用FreeBSD/Linux去規劃出一樣的功能, 得額外花費更多的管理與行政耗損. 但反過來說若幾乎Client都是Unix Base, 那一套建構於Unix上的NIS會比Windows好用太多.

軟體面的話, 分成購入或是自製兩種範疇. 購入的話其實沒得選擇, 很多軟體是Windows Only或是Unix Only(或者幾乎可以說Linux Only), 所以當這個軟體是必要且無可取代的, 毫無選擇必須配合軟體來配置OS. 但若是自製的話, 就得牽涉到開發人員的能力與慣用工具, 以及開發後使用者需要用的UI與操作習慣來決定, 繼續深入的話會延伸到撰寫的語言選擇, 資料庫選擇, 甚至架構選擇以及「容器」選擇, 那又是一個很發散的Topic了, 有空 & 有力氣再來談吧.

而最後在人員方面, 雖說我一直主張, 一個80分的Windows Server Administrator並不一定會比一個80分的Unix Server Administrator便宜, 不過實際上要找到一個60分的Windows Server Administrator比找到一個60分的Unix Server Administrator要來的容易多了. 所以除非是有這樣現成的技術人力或是有長期投資在技術人員訓練的心理準備與預算準備, 那麼有時候寧可多花錢在純軟硬體的TCO上, 也不要最後被人的問題給擊垮.

但是這也不是絕對的, 假若以建構大型網站或系統來說, 既然原先就必須投入大量成本了, 那不如把成本放在買更好的硬體, 或是聘請/培養更好的技術人員還比較實際些.

不過無論如何, 我「個人」還是偏好FreeBSD/Linux, 至少對於具備軟體開發能力的團隊來說, 我們還有機會把「東西」改成我們想要的樣子, 而不是讓我們去配合OS變成另外一個樣子. 至於要FreeBSD或Linux, 甚至是哪種*BSD, 哪種Linux Distro, 那又是另外一個發散的Topic了.

這真是一篇帶來一堆發散Topic的雜文.

我的IT顧問生涯

這是一篇會被刊登到其他地方的稿件, 因為Gene邀稿, 所以我就寫寫

其實, 當IT顧問並不在我的職涯規劃之中, 而是很自然變成這樣的身份, 所以與其說那是一個職業, 不如說是一種狀態, 也就是說本身的專業技能已經達到「可以當IT顧問」的程度, 而差別只是有沒有雇主需要罷了.

幾年前跟夥伴出來開業時, 由於新創業總是很辛苦, 收入有限的狀況下, 正好有人把我介紹給一些企業主, 而那些企業主也正巧需要一些IT上的專業建議, 同時又因為不可能以正職或兼職的方式進行, 於是就成為了IT顧問. 剛開始根本不知道顧問該做些什麼事情, 所以就如同剛接手一個新部門一般, 先去花時間了解雇主的現狀, 分析目前架構中的優缺點, 然後針對雇主需要的方向例如需要加強效能, 或是要降低cost等等提出建議.

但是這種認知很快就會受到挑戰. 由於雇主的層級高低(例如是董事長的顧問或是總經理的顧問), 每一家公司的文化, 權責劃分都有不同, 以至於提出的建議常常製造出某些衝擊, 例如說會傷害到原規劃者, 或是造成顧問與員工之間的衝突與對立. 所以爾後的其他不論長短期顧問工作, 都盡量從在符合雇主需要的前提下, 花更多時間與力氣去跟「利害關係人」做溝通, 先做溝通協調, 再去分析現有架構之所以會是這樣的前因後果, 最後才去思考怎麼提出正確且符合大多數利益的建議.

後來也承接過一些「沒有目的」的IT顧問. 尤其大公司更容易需要這種隨時可諮詢意見的顧問, 主因是很多經營者在非IT專業下, 會需要所謂的「第二意見」, 或是需要有人提供一些跳脫出既定環境, 更客觀的意見, 同時也希望能藉由引入外部的顧問, 讓原本可能已經進入封閉狀態的企業帶來一些比較新的技術觀點或思維, 於是身為一個IT顧問, 吸收新知以及去做「實驗」與「測試」就格外重要, 否則光是依靠經驗判斷還是會有很大誤差的.

然而實際上, IT顧問最常被諮詢到的都是一些很片面的問題, 例如要選擇Windows環境還是Unix環境? 要用C++還是用Java? 要用PHP還是ASP? 要用MySQL還是Oracle等等. 這種問題看似很簡單, 但是其實背後牽涉到的問題會更大, 比如說現有工程開發人員慣用的語言, MIS人員會管理的系統, 以及後續開發的方向, 當然雇主的預算也是重要考量點. 甚至身為IT顧問還要比SA看的更遠, 先預想到各種往後的發展而提早選擇出可以走的更遠更穩固的決策與架構. 這些都不是只精通系統或是只精通某些語言就能下正確判斷的, 要同時具備深度與廣度, 並且撇開個人成見(例如Anti-Microsoft或是Anti-Linux), 才有能力做出「相對」正確的建議與決策.

所以, 要成為一個IT顧問甚至是稱職的IT顧問, 除了需要在IT界很長時間的經驗之外, 還需要在各個領域有足夠的技能與視野, 同時願意不停的以「非支薪」時間充實新知識以及閱讀大量的測試報告甚至自己建立Lab做實驗等等, 而這麼辛苦的工作內容跟嚴苛的條件, 雇主們又願意以怎麼樣的待遇來回應呢? 呵.

某些層面來看, IT顧問實在不是人幹的, 幹得好的也不是普通人.