<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 云原生編程語言Pulumi 2018年6月18日 Joe Duffy在[他的博客](http://joeduffyblog.com/2018/06/18/hello-pulumi/)中宣布開源了云原生編程語言[Pulumi](https://pulumi.io)。這是繼[Ballerina](https://ballerina.io)之后我看到的另一款云原生編程語言,他們之間有一些共同的特點,例如都是為了支持多種云環境,基于不可變基礎設施和基礎設施即代碼的理念構建,使云原生應用的集成更加方便,但也有一些不同,Ballerina是直接創建了一個基于JVM的語言,而Pulumi是為不同編程語言構建了SDK。 下文部分來自Joe Duffy的博客[Hello, Pulumi](http://joeduffyblog.com/2018/06/18/hello-pulumi/)! ![云原生編程語言Pulumi](https://ws1.sinaimg.cn/large/00704eQkgy1fsm4v0a6qwj30xc0m8t9d.jpg) TL;DR 有了Pulumi,38頁的手動操作說明將變成了38行代碼。25000行YAML配置變成了使用真實編程語言的500行語句。 Pulumi的整個運行時、CLI、支持的庫都可以在GitHub上免費下載。我們的團隊正急切的等待您的反饋。與此同時,我需要告訴您一些關于Pulumi的事情,為什么我們會創造它。 ## Pulumi是什么? Pulumi是一個支持多語言和混合云開發平臺。它可以讓您使用真實語言和真實代碼創建云計算的各個方面,從基礎設施到應用程序本身。只需編寫程序并運行它們,Pulumi就能幫你完成出其余部分。 Pulumi的中心是一個云對象模型,與運行時相結合以了解如何以任何語言編寫程序,理解執行它們所需的云資源,然后以強大的方式規劃和管理您的云資源。這種云運行時和對象模型本質上是與語言、云中立的,這就是為什么我們能夠支持如此多的語言和云平臺。更多支持正在路上。 Pulumi采用了基礎設施即代碼以及不可變基礎設施的概念,并可讓您從您最喜歡的語言(而不是YAML或DSL)中獲得自動化和可重復性優勢。在部署它們之前,您可以對變更進行區分,并且我們會對誰更改了什么以及何時更改進行完善的審計追蹤。核心模型因此是陳述性的。 使用真正的語言可以帶來巨大的好處: - **熟悉**:不需要學習新的定制DSL或基于YAML的模板語言 - **抽象**:正如我們喜愛的編程語言那樣,我們可以用更小的東西來構建更大的東西 - **共享和重用**:利用現有的語言包管理器共享和重用這些抽象,無論是與社區、團隊內部共享 - **表現力**:充分利用您的編程語言,包括異步、循環和條件 - **工具**:通過使用真正的語言,我們可以即時訪問IDE、重構、測試、靜態分析和編排等等 - **生產力**:將以上所有好處加在一起,一起將變得更快,我們也會變得更快樂 當提供原始云資源時,這些好處當然最重要,但是我們在團隊中發現,您只能使用抽象。這包括在函數中包裝事物以消除樣板并創建引入更高級別概念的自定義類,通常將它們打包并重復使用。 例如,此代碼在AWS中創建一個DynamoDB數據庫: ```python import * as aws from "@pulumi/aws"; let music = new aws.dynamodb.Table("music", { attributes: [ { name: "Album", type: "S" }, { name: "Artist", type: "S" }, ], hashKey: "Album", rangeKey: "Artist", }); ``` 此代碼創建一個基于容器的任務和無服務器功能,由一個存儲桶觸發: ```python import * as cloud from "@pulumi/cloud"; let bucket = new cloud.Bucket("bucket"); let task = new cloud.Task("ffmpegThumbTask", { build: "./path_to_dockerfile/", }); bucket.onPut("onNewVideo", bucketArgs => { let file = bucketArgs.key; return task.run({ environment: { "S3_BUCKET": bucket.id.get(), "INPUT_VIDEO": file, "TIME_OFFSET": file.substring(file.indexOf('_')+1, file.indexOf('.')).replace('-',':'), "OUTPUT_FILE": file.substring(0, file.indexOf('_')) + '.jpg', }, }); }); ``` 更好的是,這些代碼可以根據您的需求部署到任何公共或私有云中。 最后,這個例子創建了一個Redis緩存。我們怎么知道?我們不需要。緩存組件是一個抽象,它封裝了我們可以安全忽略的不重要的細節: ```python import {Cache} from "./cache"; let cache = new Cache("url-cache"); ``` 在使用Pulumi之后,你不會再以同樣的方式考慮基礎設施。你的大腦將不再是一個獨立于應用程序的獨特“事物”,而是開始將分布式云系統看作是你的程序架構的核心部分,而不是事后的想法。 由于抽象,我們已經能夠提供一些強大的庫。該庫是提煉和執行最佳實踐的絕佳方式。當然,對于我們自己的庫來說沒有什么特別的,因為它們只是功能、類和代碼,我們期待著看到你為自己、你的團隊或者社區建立的那些庫。 我們最復雜的庫——Pulumi云框架——提供了一些令人興奮的正在進行的工作的早期預覽,展示如何創建跨越云提供商自己對諸如容器、無服務器功能和存儲桶等核心概念的抽象。以同樣的方式,您可以用Node.js、Python、Java、.NET等語言編寫功能強大的應用程序,利用進程、線程和文件系統,無論是在macOS、Linux還是Windows上,這種方法都可以讓您創建針對任何云提供商的現代混合云應用程序。像Kubernetes和其他CNCF產品組合這樣的技術正在幫助推動這一不可避免的結果,因為它們在整個云基板上實現了對基本計算抽象的民主化和共識。 Pulumi不是PaaS,盡管它提供類似PaaS的生產力;您的程序總是直接針對您選擇的云運行,并且始終可以訪問該基礎云的全部功能。即使您選擇使用更高級別的組件,它也會向下兼容,并且您可以隨時直接使用原始資源。它就像任何復雜的現代軟件:有時,整個事情必須用C++編寫,以便訪問底層平臺的全部功能,但對于大多數常見情況,70%到100%可以是平臺獨立代碼,而只有不到30%的專業化才能真正需要直接與操作系統交互。 接下來我還將發布十幾篇博客文章來介紹Pulumi所有方面的更多細節。然而,為了保持這篇文章盡量簡短,我將首先介紹下Pulumi的一些我最喜歡的方面。 ## 我最喜歡的東西 這很難選擇,但這里有一些關于Pulumi我最喜歡的東西: **開源**。我堅信所有開發人員工具都應該是開源的。當然,Pulumi也是一家公司,但是有充足的機會通過增加便利性以建立商業模式。(可以認為是??Git與GitHub的關系)我們從以前的工作中受益匪淺,其中包括Docker、Terraform、Kubernetes、TypeScript以及其他許多明確提及的工作。我們期待成為生態系統的一部分。因為我們在開放源代碼方面下了很大功夫,所以我很高興看到社區給我們帶來什么,特別是在更高級別的軟件包領域。 **多語言**。就像使用Java和.NET一樣,Pulumi運行時的架構可以支持多種語言,并以目標語言的所有方面(風格、語法、軟件包等)的慣用方式來實現。因為我們是開源的,任何人都可以貢獻自己的力量。 **混合云**。我們的云對象模型是一個強大的基礎,可以支持任何云提供商。這提供了一個統一的編程模型,工具和控制平面,用于在任何地方管理云軟件。如果僅僅是為了讓一個簡單的基于容器的應用程序在生產中運行起來,沒有必要學習三種不同的YAML方言和五種不同的CLI。 **云對象模型**。這個底層云對象模型為您的云計算構建方式提供了豐富的視圖。所得到的對象使用程序中的依賴關系組成一個DAG,系統可以分析和理解這些依賴關系以提供洞察力,這是我們打算隨著時間的推移解鎖復雜的靜態分析和可視化的功能。 **可重復使用的組件**。由于擁有真正的語言,我們可以構建更高層次的抽象。我最喜歡的例子之一是幫助我們的客戶定期從部署中排除1000行YAML,這是我們的AWS基礎架構軟件包。它采用AWS最佳實踐來設置虛擬私有云,并提供專用子網和多可用區域支持,并將其轉變為幾行代碼以配置整個網絡: ```python import * as awsinfra from "@pulumi/aws-infra"; let network = new awsinfra.Network(`${prefix}-net`, { numberOfAvailabilityZones: 3, // Create subnets in many AZs usePrivateSubnets: true, // Run inside private per-AZ subnets }); ``` 迄今為止,我最喜歡的成功案例是將客戶的25,000行AWS CloudFormation YAML文件(其中使用無服務器、容器、基礎設施和三個自定義部署管道)使用500行TypeScript和一個Pulumi的持續部署架構來替換。這不僅僅使得公司所有工程師都可以理解的代碼變得少得多,這樣他們可以將過去需要花費數周時間才能完成的事情現在用一個下午就可以搞定,而且現在可以在任何云或原生的Kubernetes上運行,而不僅是在AWS。管理團隊的CloudFormation堆棧,而不是一個工作量過飽和的工程師,整個團隊可以更加高效。 **統一的容器構建/發布管道**。嘗試將容器投入生產時有個問題讓我早就感到很沮喪,就是同步我的應用程序、容器和基礎架構管理,因為每個容器都傾向于使用不同的工具。我們的云框架演示了一個集成的工作流程,在這個工作流程中,只需簡單地運行Pulumi構建、diff、推送和拉取新的容器鏡像,所有這些都經過精心安排,以消除停機時間。 **Lambda無服務器功能 **。 AWS的取了個好名字:Lambda。在Pulumi中,我現在可以用我最喜歡的語言使用lambda表達式來編寫我的無服務器函數,而不需要一行YAML: ```python import * as aws from "@pulumi/aws"; import * as serverless from "@pulumi/aws-serverless"; let topic = new aws.sns.Topic("topic"); serverless.cloudwatch.onEvent("hourly", "rate(60 minutes)", event => { const sns = new (await import "aws-sdk").SNS(); return sns.publish({ Message: JSON.stringify({ event: event }), TopicArn: topic.id.get(), }).promise(); }); ``` 此功能允許您捕獲對變量的引用:常量、配置設置或加密,甚至可以引用其他資源,以便與它們進行通信。當你第一次這樣做的時候,我保證你會有一個“哇塞”的時刻,將無服務器連接到你寫過的每一個事件驅動的代碼片段。 **使用API的資源**。因為我可以捕獲對其他云資源的引用,所以我可以在其上創建API以使它們更易于在我的運行時代碼中使用。這使得“演員般的”編程模型無需處理配置和服務發現。 **堆棧**。 Pulumi的核心是“堆棧”的概念。堆棧是您的云計算的獨立實例,其資源和配置與所有其他堆棧不同。您可能有一堆用于生產、暫存和測試的堆棧,或者可能是每個單一租戶的環境。Pulumi的CLI使得啟動和卸載大量堆棧變得輕而易舉。這會打開以前可能沒有嘗試過的工作流,例如每個開發人員都擁有自己的堆棧,將新堆疊起來(并拆除)以測試每個Pull請求,甚至將服務的層拆分成多個鏈接在一起的堆棧。 我將在未來的博客文章介紹如何做。現在Pulumi已經公開,期望在接下來的幾天和幾周內聽到更多的消息。我希望這能讓您更好地了解整體平臺,其方法和獨特優勢。 ## 下一步是什么? 我們希望通過Pulumi,開發人員和DevOps團隊都將體驗到云的復興。構建強大的云軟件將更加愉快、更高效、更具協作性。現代云計算軟件將從代碼孤島轉變為等量的配置膠水,成為優雅的分布式系統。 這是一個難題。我絕不會說我們已經解決了它。我確實相信Pulumi是我親身見過并希望最接近我心目中的云開發平臺。在這個激動人心的時刻,投注于語言將使我們所有人“站在巨人的肩膀上”,這讓我感到樂觀;語言總是一個安全的賭注。 今天很可能是我職業生涯中最激動人心的一天。我想感謝我們的團隊和所有幫助過我們的人,放縱我們的瘋狂想法并相信我們。 現在訪問[https://pulumi.io](https://pulumi.io/),或者直接運行: ```bash $ curl -fsSL https://get.pulumi.com | sh ``` 我迫不及待想看看你將使用Pulumi構建的所有令人難以置信的東西。 ## 參考 - [Pulumi](https://pulumi.io) - [Hello, Pulumi!](http://joeduffyblog.com/2018/06/18/hello-pulumi/)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看