回覆列表
  • 1 # 雲智時代

    開發者和程式設計師準備好轉到雲了嗎?在決定之前,請了解一些你需要考慮的事項。

    IT基礎設施正在積極地轉向雲環境。大多數企業已經為遷移到雲平臺建立了新的願景。這些積極的變化是由高層管理人員(首席技術官,執行長和CDO)推動的,而底層架構師則針對雲原生應用程式討論SaaS,PaaS和微服務。任何一方都會時宜的讓開發者跟進新的技術方向。

    雲應用程式具有獨特的功能,例如支援分散式體系結構,具有高擴充套件性和靈活性,可跨越多個雲環境(獨立於供應商的方法)。從雲計算應用程式開發到生產支援,需要遵循完全不同的工具和技術來利用雲平臺的完整優勢。為開發人員提供適合開發,除錯和測試基於雲的工具的培訓是一項關鍵挑戰。本文將介紹雲環境的新方法和工具。

    無伺服器計算

    假設客戶希望開發具有高度可擴充套件基礎架構的新服務,來支援物聯網和大資料平臺。功能式程式設計是需要考慮的最佳選擇之一。頂級雲提供商支援功能程式設計(AWS Lambda, Azure functions, Google Cloud functions, IBM whisk等等)。

    選擇一種程式語言

    啟動時間,記憶體效率,二進位制大小和併發性是在雲平臺上開發微服務體系結構時的關鍵因素。

    Golang:如果選擇雲計算平臺,並試圖決定他們想用什麼語言來探索雲架構,那麼請考慮Go。Go是一個不錯的選擇,它包含了諸如併發性,輕量級,靜態型別和編譯語言等特性。英國的一家銀行(Monzo)已經透過Go語言使用微服務完全構建了完整的銀行業務架構。

    Java:大多數產品都是用Java開發的,並且有大量的開發人員社群可用。Spring Boot和Java模組(來自JDK-9.0)是雲原生體系結構的不錯選擇。這是將遺留系統遷移到雲平臺的良好開端。

    .NET Core:正如我們所知,微軟很久以來一直不支援開源社群。這是許多公司未採用.NET的主要原因之一,但微軟總是提供無缺陷的開發工具,簡單的語法和很好的教程。微軟最近認識到,開源選項為Azure雲提供了更多創新和更多業務。因此,.NET核心被開源社群所吸引。也Azure雲平臺的最佳選擇之一。

    R:不管行業如何,資料科學的熱度都在計算機世界中流行起來,但如果仔細觀察,還沒有出現用於解決資料科學難題(統計和數學)的新語言。由於雲以較低的成本提供巨大的計算機處理能力,業界試圖使用舊技術和工具解決人工智慧難題。R是S程式語言的一個實現。S創建於1976年,R庫實現統計和數學功能。

    Python:Python支援多種程式設計範例並檢查強型別。它很容易學習,並具有強大的分析庫。它得到了開源社群的大力支援。這些是Python吸引資料科學家的原因。

    選擇儲存

    大規模擴充套件前端服務並嘗試使用連線池與RDBMS資料庫進行通訊將無法滿足實際使用情況。需要選擇以云為中心的資料庫來構建強大的儲存平臺。

    Amazon DynamoDB:它可以在任何規模上提供單位毫秒的延遲。資料以NoSQL格式儲存,並支援文件,鍵值儲存模型以及構建圖資料庫。

    Azure Cosmos DB:它支援具有水平擴充套件的全球分散式資料庫。資料儲存在NoSQL格式上,保證99%的單位數毫秒延遲。它不僅支援文件,圖形,鍵值,表格和列族資料模型,還支援針對多種語言擴充套件的API。

    MongoDB:MongoDB是早期提供的NoSQL資料庫之一。這對客戶來說是一個非常好的開源和低成本的模式。

    IBM Cloudera DB:Cassandra是Cloudera的基礎資料庫。它支援基於Java的API與NoSQL資料庫進行通訊。

    Oracle NoSQL DB:最後,Ooracle還加入了NoSQL DB,並支援水平負載平衡和縮放節點。

    服務網格(Service Mesh)

    微服務架構為處理故障,路由和服務發現帶來了新的挑戰。在大規模構建以云為中心的服務時,需要考慮ServiceMesh。

    什麼是服務網格?

    服務網格被buoyant.io描述為:“用於處理服務到服務通訊的專用基礎設施層。它負責透過構成現代雲原生應用程式的複雜拓撲結構來可靠地傳遞請求。實際上,服務網格通常作為輕量級網路代理的陣列來實現,這些代理與應用程式程式碼一起部署,而不需要應用程式的注意。簡而言之,它充當與微服務進行通訊的代理層。”

    Linkerd:它在服務之間進行通訊,並提供訪問微服務的抽象層。主要功能包括服務發現,負載平衡,熔斷,動態請求路由和分散式跟蹤。

    Envoy:最初建在lift內部使用,它已經作為服務網格平臺開源。這不是為Kubernetes平臺設計的。Istio正試圖解決這些問題。

    Istio:它建立帶有負載平衡服務的部署服務網路以進行服務身份驗證。服務監控是其支援的關鍵功能之一。未來,我們可能會得到紅帽等大廠商的專業服務支援。

    訊息傳遞層

    物聯網是所有行業的又一增長點。許多人都聽到過“資料是一種新石油”這句話。自動駕駛,移動裝置和更多裝置將大量資料向雲平臺推進。事件溯源是捕獲完整線上使用者活動的另一個領域。例如,如果你登入並瀏覽一些移動裝置並新增到購物車,移除購物車並添加了另一個品牌,則會將這些資料作為事件溯源並存儲以備將來使用。嘗試解決這些問題的資料流工具包括:

    Kafka:Kafka topic是一系列記錄。Kafka producer API和Kafka consumer API支援與Kafka topic進行互動。Kafka叢集具有建立許多代理和伺服器的內建功能。

    容器和基礎設施即程式碼

    容器化是在雲環境中執行軟體的一攬子工具。每個包都有一個程式碼,環境變數,庫和更多。這些軟體包僅在任何雲環境中使用,併為大規模遷移到不同的雲環境提供了靈活性。

    Docker:它為打包和分發容器應用程式提供了一個開放標準。Docker引擎允許構建和執行容器。

    Kubernetes:它為無縫執行多個容器提供了一個底層平臺。它支援容器的編排,分發和擴充套件,Docker映象執行在Kubernetes環境中。

    結論

    擁有這些工具和技術僅僅是邁入雲平臺的開始,可能會根據特定的上下文和用例進行更改。大型企業需要在構建雲平臺的同時,更重視開發人員的工具和技術。需要為應用程式開發,儲存,安全,日誌記錄和除錯,監控和測試建立技術路線圖。

  • 中秋節和大豐收的關聯?
  • 你覺得什麼對你來說是最重要的?為什麼?