初次見面。我是在 PRUM 股份有限公司擔任工程師的 Hitomi。
我會將日常在程式學習與實務中容易卡關的重點與思考方式整理後分享出來。
如果你對 PRUM 感興趣,也歡迎看看我們的企業網站。
▶企業網站

剛入行時,你有沒有想過這些事?
但這其實是相當危險的想法。
在真實的現場中,因為沒有做設計而導致系統當機,是很常見的事。

這是很常見的情況。
這時,多數新人會這樣想:
是不是程式碼有問題?
當然,程式碼有時確實是原因之一。
但不只如此。
其中一個原因是,沒有理解執行環境的前提條件(例如硬體或資源限制)。
例如這種情況:
光是這樣,就可能讓系統當掉。
應用程式基本上是在記憶體中執行的,
因此一旦記憶體不足,處理就可能停止,或程序直接結束。
也就是說,資料放在哪裡,會大幅影響效能與穩定性。
以資料庫儲存為例。
大家很容易會想:「只要有存起來就安心了」,但這其實很危險。
現實中會發生這些事:
在雲端環境中,託管服務通常會提供備援機制,
但更重要的是要理解哪些是服務本身的保證,哪些是你在設計上必須負責的部分。
基於這個前提,必須事先決定發生故障時要怎麼運作。
CPU 常被認為是「時脈越高=越快」,但其實不只如此。
例如,當同時存取變多時,核心數的影響就會變大。
也就是說,要做什麼樣的處理,會決定最適合的架構。
雲端看起來像魔法,但實際上並不是。
它是把硬體抽象化,並透過虛擬化與分散式架構,讓使用與管理更容易的機制。
透過虛擬化,可以把一台伺服器當成多個環境來使用。
另外,透過分散到多台伺服器與多個資料中心,也能提升可用性與耐障礙性。
不過,CPU、記憶體、網路等物理限制一定都存在。
系統一定會壞。
因此,重要的不是讓它永遠不壞,
而是要設計它在壞掉時會如何運作。
硬體與基礎架構相關的話題,或許會讓人覺得很不起眼。
但只要理解這些內容,
就都能看得更清楚。
而最重要的是,
要打造的不是「能跑」的系統,而是「能讓人安心運作」的系統。
這就是工程師之間差距會出現的地方。
PRUM 的工程師有 95% 以上是從無經驗者開始錄用的。
如果有興趣,也歡迎來我們的企業網站逛逛。
▶ 企業網站
我們也有經營整理給工程師參考的實用文章網站。如果你有興趣,也歡迎看看。
▶ 對工程師有幫助的文章網站
原文出處:https://qiita.com/prum_hitomi/items/864876245891c0cbb127