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