【廣告】
本文將覆蓋以下內(nèi)容:如何盡力做好面試如何在軟件工程師的角色中生存(及發(fā)展)考慮持續(xù)改進時可以參考的資源 面試
當你開始軟件工程職業(yè)生涯時,你得面對一個無可爭議的事實。面試很惡心。
參與其中的每個人都覺得很惡心。既被人面試過又面試過別人的我可以證明,面試是一項極其耗時、極其有壓力的工作,并且面試其實并不是將來工作表現(xiàn)一個的好的指示器。但不管怎樣,這都是一個必要之惡,你和你的簡歷很好還是做好準備為妥。
快進5個月……
該系統(tǒng)開始經(jīng)歷許多關(guān)于維護CRUD操作完整性的問題。設(shè)計用來處理事務(wù)的瘦應(yīng)用程序邏輯層已經(jīng)不再那么薄了。升級和向后兼容性的故事開始變得更加復(fù)雜。
由于受到許多其他問題的困擾,工程師們又回到了繪圖板——這次是用Azure SQL替換存儲層!我不記得具體的細節(jié),但是這個改變增加了大約40%的額外時間和成本。
管理層很不高興,這個項目幾乎掉了。但是團隊的工程師們非常好,他們能夠完成這個項目,盡管有了一些延遲和初的錯誤的技術(shù)決定。
這個項目有一個圓滿的結(jié)局——但它也可能不是這樣的。事實上,很多內(nèi)部項目都被關(guān)閉了,因為他們不能在承諾的日期范圍內(nèi)交付承諾的功能。
那么,您如何知道NoSQL解決方案適合您的下一個軟件項目呢?首先問問你自己和你的團隊這十個問題:
對于你的產(chǎn)品,可用性是否勝過一致性?如果你正在建立一個像Facebook newsfeed這樣的系統(tǒng),你可能會希望這個系統(tǒng)是高可用性的,并且是終一致。
另一方面,如果您正在構(gòu)建一個銀行系統(tǒng)(或者像我們的案例那樣的模式存儲),您可能希望支持強一致性,并放棄高可用性。
無論采用哪種方式,您都應(yīng)該首先考慮CAP定理的含義,然后決定您的系統(tǒng)是否需要SQL或NoSQL解決方案。