首頁 企業 走向雲原生並避免動盪

走向雲原生並避免動盪

by 訪客作者

歡迎閱讀由四篇文章組成的系列文章中的第一篇,這些文章討論了由 Docker、谷歌以及新興的傳統和新玩家生態系統領導的容器化和雲原生運動。 在本系列中,我們冒險定義和討論這個令人興奮的新興領域,以幫助組織更好地駕馭它。 雖然第一篇文章將側重於定義“雲原生”和一些相關的移動部分,但在以後的文章中,我們將探討網絡、存儲和容器編排的重要層和相關挑戰,為您提供更完整的視圖……但首先讓我們從開始。


歡迎閱讀由四篇文章組成的系列文章中的第一篇,這些文章討論了由 Docker、谷歌以及新興的傳統和新玩家生態系統領導的容器化和雲原生運動。 在本系列中,我們冒險定義和討論這個令人興奮的新興領域,以幫助組織更好地駕馭它。 雖然第一篇文章將側重於定義“雲原生”和一些相關的移動部分,但在以後的文章中,我們將探討網絡、存儲和容器編排的重要層和相關挑戰,為您提供更完整的視圖……但首先讓我們從開始。

一開始有 Free BSD 和 Solaris,它們為現在被認為具有分別稱為 FreeBSD Jails 和 Solaris Zones 功能的現代容器化技術奠定了一些精湛的基礎。 谷歌通過將 cgroups 添加到 Linux 內核來幫助將容器帶入 Linux。 結合命名空間和 chroot,奠定了技術基礎。 Docker 通過圍繞容器映像創建任何簡單的工作流並專注於簡單的開發人員體驗,進一步使容器更易於訪問。

定義空間的最佳方式可能是回答一些基本問題並請一些客座專家來回答這些問題。 (看看我是如何將工作交給更有資格的其他人的!?)

什麼是容器?
客座撰稿人 Cameron Brunner,首席架構師 Navops

容器允許應用程序從一個計算環境可靠地移動到另一個計算環境。 這可能是從開發人員的筆記本電腦到 QA 環境,再到本地生產或云端。 在容器中運行的應用程序的軟件堆棧依賴項,例如操作系統或其他軟件組件和庫,可以在很大程度上嵌入到容器中,從而使其與底層 IT 環境的細節分離運行。 容器最初設計用於在操作系統上運行的應用程序之間提供隔離。 它們提供資源控制和邊界分離的組合,有助於將容器內代碼的執行與在該機器/操作系統上運行的其他活動和其他容器隔離開來。 容器通過利用操作系統功能(如 cgroup 和命名空間)來實現這種隔離。 

什麼是Docker?

Docker 既是一家公司,也是容器的商業/開源實現。 容器在 Docker 出現之前已經存在了很長時間,早期的實現包括 FreeBSD Jails (2000) 和 Solaris Zones (2004),並且 Docker 通過極大地簡化創建和執行過程使容器對大眾有用。 雖然 Docker 正在迅速成為事實上的標準容器格式,但該公司通過在 Linux 基金會下創建開放容器計劃 (OCI),進一步朝著開放和協作的方向邁進。 OCI 涉及許多行業參與者,並致力於製定容器格式和運行時間的行業標準。 (參見 www.opencontainers.org/)

那麼什麼是雲原生計算?
客座貢獻者 Joe Beda,Google Compute Engine 和 Kubernetes 的創始人和貢獻者

雲原生是大規模構建和管理應用程序的眾多新思考方式之一。 從根本上講,Cloud Native 正在構建團隊、文化和技術,以利用自動化和架構來管理複雜性和釋放速度。

雖然容器和容器管理通常是“雲原生”思想的一部分,但 Netflix 等組織已將這種思想應用於 VM 和 VM 映像。 此外,您不必在雲中運行即可開始從這種思維轉變中獲益。 在本地部署應用程序時,應用程序和團隊可以更易於管理。

什麼是雲原生並沒有硬性規定。 但是,有些主題正在出現。

  • DevOps 和 Ops 自動化:身為應用程序開發人員的工程師在確保應用程序能夠在生產環境中可靠運行方面發揮著積極作用。 同樣,那些履行運營職責的人確保經驗反饋到開發中。 自動化是管理大量移動部件的關鍵。
  • 容器:容器提供了一種便捷的方式來創建可測試和驗證的可部署構建工件。 這確保了部署是可預測的。
  • 計算集群:API 驅動的計算集群和調度系統允許少數工程師管理大量工作負載。 除此之外,它還允許將這些工作負載有效地打包到節點,以提高利用率。 最後,運行良好的集群可以減輕應用程序團隊的操作負擔。
  • 微服務:微服務將應用程序拆分為更小的可部署單元,以便開發團隊快速靈活。 這些想法不一定是新的,但正在與工具一起應用以實現可擴展的管理。 我們將在下面詳細討論這一點。
  • 深度可見性:雲原生意味著對服務運行方式的更深入洞察。 分佈式跟踪、收集和索引日誌以及深度應用程序監控都有助於揭示應用程序內部實際發生的事情。

什麼是基於微服務的架構?
客座貢獻者 Joe Beda,Google Compute Engine 和 Kubernetes 的創始人和貢獻者

微服務是一個已經存在很長時間的概念的新名稱。 基本上,它是一種將大型應用程序分解為較小的部分以便獨立開發和管理的方法。 讓我們來看看這裡的一些關鍵方面:

  • 強大而清晰的界面。 必須避免服務之間的緊耦合。 文檔化和版本化的接口有助於鞏固該契約並為這些服務的消費者和生產者保留一定程度的自由。
  • 獨立部署和管理。 應該可以在不與所有其他服務同步的情況下更新單個微服務。 還希望能夠輕鬆回滾微服務的版本。 這意味著部署的二進製文件必須在 API 和任何數據模式方面向前和向後兼容。 這可以測試適當的操作和開發團隊之間的合作和溝通機制。
  • 內置的彈性。應該構建和測試微服務以使其具有獨立的彈性。 使用服務的代碼應該努力繼續工作,並在使用的服務出現故障或行為不當的情況下做一些合理的事情。 同樣,所提供的任何服務都應該針對意外負載和錯誤輸入採取一些防禦措施。
  • 微服務更多的是關於人而不是技術。 小團隊更靈活。 傑夫·貝佐斯 (Jeff Bezos) 以建議保持會議和團隊規模足夠小而聞名,這樣他們就可以吃 2 個比薩餅。 通過將一個大項目構建為一系列較小的團隊,然後讓開,這些團隊可以融合併擁有項目的那一部分。

我們期待在下一篇文章中討論云原生堆棧的一些重要層。

Rob Lalonde 是副總裁兼總經理 導航. 他是各種開源基金會的積極參與者,包括 Cloud Native Computing Foundation (CNCF)、Open Container Initiative (OCI) 和 Linux Foundation。 Rob 曾在多家成功的高科技公司和初創公司擔任過管理職位。 他在約克大學舒立克商學院完成了 MBA 學習,並獲得了勞倫森大學的計算機科學學位。

討論這個故事

註冊 StorageReview 時事通訊