1. 程式人生 > >微服務開發人員的七個基本技能

微服務開發人員的七個基本技能



微服務越來越受歡迎,越來越多的開發人員開始使用微服務。如果你是一個開發微服務體系結構的開發人員,或者是想要僱傭一個人的僱主,那麼,微服務開發人員最重要的技能是什麼?繼續往下讀,找出答案。

與任何新興的技術和趨勢一樣,要掌握它還需要學習一些東西。作為開發人員,我們的工作的本質是——緊跟最新、最偉大的模式和體系結構。那麼,要想做好這些微服務,你現在能做些什麼呢?您應該尋找誰加入您的面向微服務的團隊?在這裡,我總結了七個基本技巧,它們可以幫助開發人員在使用微服務時感到自在:

架構

熟悉常用的微服務模式是非常必要的。我建議去官網看看Spring Cloud提供的內容,您將會對微服務的架構有更好的理解。如果您不瞭解標準模式,您將嘗試解決已經解決的問題,您將不可能選擇最佳的解決方案。

我也強烈建議在看這篇文章之前,先看看Sam Newman的《構建微服務》。通過閱讀本文,您一定會了解模式和最佳實踐,儘管是以一種無框架的方式。

結合瞭解Spring Cloud這樣的微服務框架和構建微服務的好書知識,您將在微服務世界中獲得一個良好的開端。

領域建模

即使您非常理解您的體系結構和模式,但是要在微服務上取得成功仍然不是那麼容易。在系統的不同部分之間分擔責任會很快變得非常困難。你需要擅長領域建模和理解如何分配責任。我可以推薦的一個技巧是多畫一些。與您的團隊和參與該專案的其他人一起繪圖是促進對該領域的共享理解的一個很好的工具。

對軟體開發人員來說,善於連結領域和設計是一項普遍有用的技能。如果您想深入瞭解這個主題,您可能需要檢查域驅動設計。有很多關於這個主題的書籍和文章,你也可以去看看!

Devops和容器

成功的微服務背後的理念是以Devops的方式工作。就本文而言,這意味著從編寫程式碼到在生產環境中部署,都要擁有服務的所有權。即使您不打算部署它,您也應該知道如何部署它。您將不得不對容器、Docker、Kubernetes等有所瞭解。好訊息是您可以在您的機器上安裝Docker,它是一個非常有用的工具!

除了容器,你還需要知道什麼?佇列、訊息、資料庫、一些雲(AWS, Azure)……哇,好像很多!別擔心,如果你在Devops團隊工作,可能會有一些經驗豐富的同事可以幫助你。沒有人會在一夜之間成為專家,但是如果你沒有接觸過操作方面的知識,學習其中的一些技術對你來說可能是全新的。

好訊息是——這些可以是有趣的、有挑戰性的、有用的!

如果有一本書我可以推薦你去看看,以便對你的Devops思維和技能有更大的信心,它將是Devops手冊,基於非常有趣的Phoenix Project書。

安全

正如您所想象的,保護許多事情比保護一件事情要困難得多。隨著微服務的出現,安全問題在每個人的腦海中所佔的比例要比在所有人都在使用單體架構應用的時候高得多。您應該學習哪些特定的安全知識?我確實建議您檢視常見的單點登入(SSO)實現,特別是在OAuth2相關的技術上。Spring Cloud Security專門可以教給您一些最佳實踐,併為您提供實現安全微服務的好主意。

在處理分散式架構時,還有什麼其他的安全問題?在rest中保護資料,保護配置——微服務有自己的配置和資料。這些地方的安全常常受到威脅。

引用山姆·紐曼的書中的一條規則,我認為非常重要:不要發明你自己的安全協議。

測試

我注意到,由於微服務比大型單片應用程式更小,看起來也不那麼嚴肅,也不那麼商業化,一些開發人員忽略了測試。請不要這樣做!微服務為建立經過良好測試和健壯的解決方案提供了大量的機會,所以不要僅僅因為它不是微不足道的,或者單元測試似乎不是答案,就把它傳遞出去。那麼你應該考慮什麼樣的測試呢?

我的觀點是:

單元測試(是的,這些仍然很重要!)

服務/ API測試——您希望儘可能徹底地測試您的端點

整合系統的端到端測試(持續整合在這裡非常有用)

持續整合

正如我在前面提到的,端到端測試非常重要。通過微服務系統,確保一切正常工作,您應該看到微服務能夠正確地互動。您只能在單獨測試這樣複雜的系統時走這麼遠。處理這個問題的最好方法是建立持續整合。無論何時您將程式碼合併到master(我希望您正在執行拉取請求!),您都應該自動部署到執行不同測試的整合環境中(並且團隊成員可以參與一些探索性測試)。

所以,不要再找藉口和手工部署了,現在是時候為您所使用的CI設定和學習Jenkins/Teamcity或任何工具並充分利用它了!這一點在一定程度上是Devops技能的擴充套件,但也足夠重要,值得一提!

團隊合作

最後但並非最不重要的一點是,你確實需要接受團隊合作,並學會與人合作。當你在一個非常大的系統中寫一小部分的時候,你更容易把自己孤立起來,生活在自己的泡泡裡。多重整合系統和Devops文化意味著你必須與人們進行大量的互動!

這強調了全面的大合作是大微服務的先決條件。當人們之間缺乏微服務時,如何在微服務之間進行良好的通訊?有了良好的團隊合作,一切都會更好!

總結

微服務作為一種趨勢,給軟體開發者的日常生活帶來了很大的變化!有一種新的工作方式——Devops,這可能會顛覆我們曾經的工作方式!我認為對於我們所有人,軟體開發社群的成員來說,這是一個偉大的機會,讓他們學到更多的東西,並比以往更加有效!不要害怕這種變化——要激動!

微服務越來越受歡迎,越來越多的開發人員開始使用微服務。如果你是一個開發微服務體系結構的開發人員,或者是想要僱傭一個人的僱主,那麼,微服務開發人員最重要的技能是什麼?繼續往下讀,找出答案。

與任何新興的技術和趨勢一樣,要掌握它還需要學習一些東西。作為開發人員,我們的工作的本質是——緊跟最新、最偉大的模式和體系結構。那麼,要想做好這些微服務,你現在能做些什麼呢?您應該尋找誰加入您的面向微服務的團隊?在這裡,我總結了七個基本技巧,它們可以幫助開發人員在使用微服務時感到自在:

架構

熟悉常用的微服務模式是非常必要的。我建議去官網看看Spring Cloud提供的內容,您將會對微服務的架構有更好的理解。如果您不瞭解標準模式,您將嘗試解決已經解決的問題,您將不可能選擇最佳的解決方案。

我也強烈建議在看這篇文章之前,先看看Sam Newman的《構建微服務》。通過閱讀本文,您一定會了解模式和最佳實踐,儘管是以一種無框架的方式。

結合瞭解Spring Cloud這樣的微服務框架和構建微服務的好書知識,您將在微服務世界中獲得一個良好的開端。

領域建模

即使您非常理解您的體系結構和模式,但是要在微服務上取得成功仍然不是那麼容易。在系統的不同部分之間分擔責任會很快變得非常困難。你需要擅長領域建模和理解如何分配責任。我可以推薦的一個技巧是多畫一些。與您的團隊和參與該專案的其他人一起繪圖是促進對該領域的共享理解的一個很好的工具。

對軟體開發人員來說,善於連結領域和設計是一項普遍有用的技能。如果您想深入瞭解這個主題,您可能需要檢查域驅動設計。有很多關於這個主題的書籍和文章,你也可以去看看!

Devops和容器

成功的微服務背後的理念是以Devops的方式工作。就本文而言,這意味著從編寫程式碼到在生產環境中部署,都要擁有服務的所有權。即使您不打算部署它,您也應該知道如何部署它。您將不得不對容器、Docker、Kubernetes等有所瞭解。好訊息是您可以在您的機器上安裝Docker,它是一個非常有用的工具!

除了容器,你還需要知道什麼?佇列、訊息、資料庫、一些雲(AWS, Azure)……哇,好像很多!別擔心,如果你在Devops團隊工作,可能會有一些經驗豐富的同事可以幫助你。沒有人會在一夜之間成為專家,但是如果你沒有接觸過操作方面的知識,學習其中的一些技術對你來說可能是全新的。

好訊息是——這些可以是有趣的、有挑戰性的、有用的!

如果有一本書我可以推薦你去看看,以便對你的Devops思維和技能有更大的信心,它將是Devops手冊,基於非常有趣的Phoenix Project書。

安全

正如您所想象的,保護許多事情比保護一件事情要困難得多。隨著微服務的出現,安全問題在每個人的腦海中所佔的比例要比在所有人都在使用單體架構應用的時候高得多。您應該學習哪些特定的安全知識?我確實建議您檢視常見的單點登入(SSO)實現,特別是在OAuth2相關的技術上。Spring Cloud Security專門可以教給您一些最佳實踐,併為您提供實現安全微服務的好主意。

在處理分散式架構時,還有什麼其他的安全問題?在rest中保護資料,保護配置——微服務有自己的配置和資料。這些地方的安全常常受到威脅。

引用山姆·紐曼的書中的一條規則,我認為非常重要:不要發明你自己的安全協議。

測試

我注意到,由於微服務比大型單片應用程式更小,看起來也不那麼嚴肅,也不那麼商業化,一些開發人員忽略了測試。請不要這樣做!微服務為建立經過良好測試和健壯的解決方案提供了大量的機會,所以不要僅僅因為它不是微不足道的,或者單元測試似乎不是答案,就把它傳遞出去。那麼你應該考慮什麼樣的測試呢?

我的觀點是:

單元測試(是的,這些仍然很重要!)

服務/ API測試——您希望儘可能徹底地測試您的端點

整合系統的端到端測試(持續整合在這裡非常有用)

持續整合

正如我在前面提到的,端到端測試非常重要。通過微服務系統,確保一切正常工作,您應該看到微服務能夠正確地互動。您只能在單獨測試這樣複雜的系統時走這麼遠。處理這個問題的最好方法是建立持續整合。無論何時您將程式碼合併到master(我希望您正在執行拉取請求!),您都應該自動部署到執行不同測試的整合環境中(並且團隊成員可以參與一些探索性測試)。

所以,不要再找藉口和手工部署了,現在是時候為您所使用的CI設定和學習Jenkins/Teamcity或任何工具並充分利用它了!這一點在一定程度上是Devops技能的擴充套件,但也足夠重要,值得一提!

團隊合作

最後但並非最不重要的一點是,你確實需要接受團隊合作,並學會與人合作。當你在一個非常大的系統中寫一小部分的時候,你更容易把自己孤立起來,生活在自己的泡泡裡。多重整合系統和Devops文化意味著你必須與人們進行大量的互動!

這強調了全面的大合作是大微服務的先決條件。當人們之間缺乏微服務時,如何在微服務之間進行良好的通訊?有了良好的團隊合作,一切都會更好!

總結

微服務作為一種趨勢,給軟體開發者的日常生活帶來了很大的變化!有一種新的工作方式——Devops,這可能會顛覆我們曾經的工作方式!我認為對於我們所有人,軟體開發社群的成員來說,這是一個偉大的機會,讓他們學到更多的東西,並比以往更加有效!不要害怕這種變化——要激動!