『壹』 作為一個程序員,你真的需要微服務嗎
前言
我們已經 設計和構建 了十多年的軟體,大部分時間我們一直在使用優秀的 Symfony 框架來實現這一目標。 Symfony 是一個傳統的單體 PHP 構件集,受 Java Spring 的啟發,我們發現它非常適合 企業 Web 應用程序 和 數字產品 的快速開發,而這些正是我們主要經濟來源。
然而,去年發布的 Symfony 4 代表了該框架的重點逐漸變化 ; 這變化體現在其遠離單體架構和向 微服務 靠攏,這種變化背後的方法論在過去幾年中越來越受歡迎。
為了說明這一轉變,新版本在默認情況下使用了微內核(micro by default), Symfony 組織大力宣傳其新的微內核設計,聲稱與 Symfony 3 相比,編寫應用程序所需的代碼減少了 70%。
除了這些優點外,這一變化意味著運行單個應用程序的開銷要小得多,這使得 Symfony 對於微服務體系結構的使用更具吸引力。
什麼是單體應用和微服務
微服務設計基於將大型傳統(單體)應用程序拆分為幾個小型、不同的應用程序的概念。這些應用程序將處理單個業務功能領域,並與其他組件協作,就像它們是第三方應用程序一樣
這真的是一個新事物嗎,或者這只是一個具有時髦名字的面向服務體架構(SOA)? 我們不會在這里進行辯論,畢竟你可以到 Slashdot 和 Hacker News 上討論這個問題。不過,我們要說的是,微服務方法 ( 或者隨便你怎麼稱呼它 ) 主要對大型組織有益。這是因為非常大的應用程序可以被分割成幾個不同的服務,每個服務由各自獨立的開發團隊管理。
微服務體系結構的另一個好處是允許靈活地擴展一個特定組件的數量,而不是整個應用程序。這特性非常適合應用在 彈性雲計算 ,但在大多數情況下,我認為這種效率提高會被一個大而突出的問題所淹沒。
你真的需要微服務
我的觀點是,除非你在 Google 或 Netflix 等擁有數百名軟體開發人員的公司工作,否則你可能不需要微服務。事實上,對於大多數中小型企業來說,採用這種設計可能非常不合適。
我將會講到一些例外,但是微服務的開發和維護成本是很多人都注意到的卻又很少談及的問題。我們可以用一個簡單的問題來決定是否適合把微服務作為你的起點 : (譯者註:這句子的原文中有個詞語叫 房間里的大象 ,是指所有人都注意到卻又不被提及的問題)
你系統中的某個組件(例如用戶管理)是否足夠復雜,以致於需要多個開發人員全職進行持續開發?
如果答案是否定的,那麼微服務方法可能會浪費您的時間和金錢。相反,如果你足夠幸運,能夠在以後達到這個規模,你可能就可以慢慢地把那些需要多人開發的部分分離出來。
為什麼微服務在開發和運維上開銷更大
由於您不需要處理大量的分布式系統問題,因此單體應用程序通常是一個開銷更少的方案。使用像 Symfony 這樣的單體框架所通過提供開箱即用的集成特性提供了許多好處,這些特性可以方便地從應用程序的所有區域訪問。你基本上可以避免處理以下的這些問題 :
例外情況(混合的方式)
有時候微服務是合適的,但是根據我的經驗,在這些情況下,可伸縮性需求或容錯需求超過了必須設計和管理分布式系統的缺點。這里的一個很好的例子是像 Monzo Bank 這樣的企業應用,它既需要能夠立即按需求進行伸縮,又需要能夠確保系統某個區域的故障不會影響到另一個區域 .
我們在 Browser 中多次重復的一個好方法是採用混合方法進行系統設計。這涉及到一個由支持微服務包圍的中心整體,但只有在有充分理由的情況下才會如此。例如,我們最近在將 NLP 處理集成 到應用程序中時使用了這種方法。
我們已經構建了幾個系統,其中核心業務應用程序作為一個整體構建 ( 通常在 Symfony 中 ),由獨立的微服務管道處理繁重的數據處理。這不僅允許我們在不影響核心應用程序性能的情況下處理大量數據量,而且如果需要,我們可以在不影響平台的日常操作前提下,將這些組件下線。
理想情況下,你能夠清楚地理解規模和未來的開發需求,這對於決定體系結構非常重要。你想快速進入市場嗎?您想要支持數百萬用戶嗎?您是否需要處理 大量的數據流 。
盡早做出正確的決定可以增加產品在最短的時間內獲得投資回報的機會,而不會妨礙您將來的 探索 。 在後續計劃中將組件微服務化通常比最初的 MVP 開發中微服務化更具成本效益。
『貳』 中國的程序員,真的「短命」嗎
程序員工作強度大,可能經常會有報道說各種猝死之類的,但是各行各業都有這樣的情況。只是程序員的報道出來了。程序員經常加班是真的,因為工作強度大,所以工資都比較高。
『叄』 Android 開發有哪些新技術出現
參考如下知乎的內容:
開發工具
Android Studio: Google 官方放棄 Eclipse 和 Android Studio 普及。AS 雖然不算新,但是對 Android Studio 這個軟體的更新速度快的驚人,有大量的新功能發布。例如支持很多註解代碼提示註解、Live code template、支持自動生成 Parcelable 實現等等,作為開發者,持續關注這個更新列表 Recent Changes ,一定會讓你的寫代碼的生活更加美好。
編程「語言」
Kotlin: 作為 Android 領域的 Swift,絕對讓你如沐新風。拋棄沉重的 Java 語法,Kotlin 融入了很多現代編程語言的思想,作為開發者,接受新的語言,了解新語言的發展趨勢,更有利於開闊你的思路和加深對語言的理解。在 Android 開發上,使用 Kotlin 並不會讓你付出什麼代價,為什麼不來試試? 使用Kotlin進行Android開發。
React Native: 跨平台一直是程序員的夢想,而且移動應用的跨平台解決方案也很多,因為 Facebook 的參與和力推,讓這個解決方案帶上了光環。第一個用 React Native 開發的 App 已經在 Google Play 上架 Facebook 廣告管理工具,聽說 Android 的 SDK 也馬上會到來,React Native。
Sky: 與 React Native 類似,使用 Web 開發語言來做移動平台的開發,雖然這個只是一個嘗試,但是這是 Google 自身推出的,特別是在 Java 語言的使用上敗訴之後,這可能會有一些作為呢,domokit/sky_sdk · GitHub
開發模式
Dagger 2:依賴注入並不是什麼新技術,但是使用在 Android 確實一個新的嘗試。Android App 越來越被當成嚴肅的大型項目來構建,很多在以前大型伺服器開發上使用的技術都被應用到了移動開發。Android 開發分模塊開發,使用 Dagger 來松耦合模塊。特別值得一體的是,Dagger 2 現在由 Google 親自接管。 Dagger ‡ A fast dependency injector for Android and Java.
MVP:因為 Android 並沒有嚴格的業務和界面區分,項目一復雜,就很容易使代碼陷入混亂。現在 Android 開發社區對 MVP 模式討論越來越熱,覺得 MVP 是非常適合 Android APP 開發。MVP for Android: how to organize the presentation layer
『肆』 騰訊知名游戲程序員毛星雲意外身故,如何評價他的一生
毛星雲的一生本身就是一個傳奇。
之所以會這樣說,主要是因為毛星雲在20多歲的時候就已經成為了行業的佼佼者。在毛星雲還沒有進入騰訊之前,毛星雲就已經自主編寫了關於游戲開發的收集,通過這樣的方式來教游戲新手從事游戲開發工作。從某種程度上來講,毛星雲本身就是很多游戲開發人員的入門導師。
一、毛星雲因為意外而身故。
毛星雲是騰訊公司的天美工作室的著名開發人員,同時也是游戲界知名的開發程序員。有新聞表示毛星雲因為抑鬱的問題而跳樓身亡,這個事情令大家感到大為震驚。在外界看來,毛星雲是一名非常成功的游戲開發人士,誰也沒有想到毛星雲會用這樣的方式結束自己的生命。
『伍』 三十歲以上還能做程序員嗎
三十歲以上肯定能做程序員。
只要對程序員的工作很感興趣,並且願意為這份工作付出百倍努力,年齡就不再是問題。
但如果只是因為程序員工資高,只想收入高,費力進入這行,那就會很辛苦,因為越小記憶力越好,接收能力也好,年齡大總是會有力不從心之感。