成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

開源驅動12 Factor現代化項目

開源
12 factor軟件開發方法已經激發了十多年來的軟件開發和架構。其原則定義了一種統一、可預測的方式,使企業系統更安全地部署和更容易維護。

極具影響力的12 factor應用方法論并未涵蓋許多近期的技術創新。Heroku 正在領導一項社區主導的努力,以使其保持最新。

譯自Open Source Drives the Twelve-Factor Modernization Project,作者 Bob Reselman。

12 factor方法論是一套包含12個原則的體系,使公司能夠以統一且高度可管理的方式創建、運行和維護企業級軟件即服務 (SaaS) 應用程序。12 factor方法論不依賴于任何特定產品、技術或工具集。相反,它是一種軟件開發理念,其驅動力是可移植性、彈性、穩定性和成本效益。

12 factor應用由Heroku聯合創始人Adam Wiggins于2011年創建,因此已經存在一段時間了。多年來,12 factor原則幫助開發人員創建在云中運行的更具彈性、更易于擴展、管理和維護的應用程序。

12 factor方法論首次出現時,基于Web的應用程序和Amazon Web Services仍處于起步階段。從那時起發生了很多變化,但12 factor方法論在很大程度上保持不變。現在是將其現代化并使其與我們今天使用技術的方式保持一致的時候了,因此12 factor方法論已開源。

在深入探討12 factor方法論開源的目的和影響之前,我將首先介紹其背后的原則。

12 factor

以下是驅動12 factor的原則的簡要回顧,包括每個原則的含義以及如何使用它們。

Factor 1:代碼庫

含義:每個應用使用一個代碼庫,通過版本控制進行跟蹤,并進行多次部署。這確保所有與應用程序相關的資產都在單個存儲庫中進行管理。

應用方式:通常,支持單個代碼庫意味著將項目的所有源代碼和輔助工件保存在單個源代碼存儲庫中,例如GitHub、BitBucket、AWS CodeCommit或Google CloudSource Repositories。代碼庫不應散布在各種存儲庫中。

Factor 2:依賴

含義:明確聲明并隔離所有依賴項,以避免隱式依賴于系統工具或庫。這使應用程序更易于預測和管理。

應用方式:支持依賴原則的關鍵是使用以受控方式存儲獨立庫和包的存儲庫。應用程序應將自定義代碼與獨立開發的庫分開,并在配置文件中列出這些庫。然后,在運行應用程序時,獨立庫會在構建和運行時添加到項目中。庫不與源代碼一起存儲,而是存儲在由庫開發者控制的單獨存儲庫中。

一些此類存儲庫的示例包括npm(用于Node.js項目)、PyPI(用于Python)、MVN Repository(用于Java)、Chocolatey(用于.NET)和RubyGems(用于Ruby編程語言)。

Factor 3:配置

含義:將不同部署之間變化的任何配置與代碼分開存儲。這允許您更輕松地進行更改,而無需修改代碼庫。

應用方式:將配置與代碼分離已成為企業系統架構中的基本實踐。有時,配置信息存儲在清單文件中。Kubernetes等框架會自動將清單中聲明的信息注入環境中。此外,配置更新是通過更改清單文件中的信息來執行的。框架會注意到更改并自動更新環境。

配置要素有一個開放的更新提案(issue #4)。

Factor 4:后端服務

含義:將后端服務(如數據庫、隊列和內存緩存)視為附加資源,可以通過存儲在配置中的URL或其他定位器進行訪問。這使得服務易于互換。

應用方式:該原則要求通過標準協議(例如HTTP/HTTPS連接)進行資源訪問。 理解使用庫和命令行界面 (CLI) 工具的關鍵在于,這些技術是對實際資源的抽象。它們與資源之間沒有緊密的綁定。程序員聲明對資源的訪問憑據以及要執行的操作。工具負責處理與資源交互的細節。

理論上,程序員應該能夠以最小的影響從一個資源提供商切換到另一個資源提供商。但是,與任何技術一樣,魔鬼總是隱藏在細節中。因此,程序員應該使用基于 TCP/IP 的資源。然后,代碼將被構建為以通用的方式訪問資源。

Factor 5:構建、發布、運行

含義:嚴格分離部署過程的構建、發布和運行階段。構建階段編譯代碼,發布階段添加特定于環境的配置,運行階段執行應用程序。

如何應用:諸如 Jenkins 和 TeamCity 之類的綜合 CI/CD 應用程序可用于支持構建、發布、運行原則。這些工具通常允許程序員定義應用程序的配置設置和源代碼存儲庫。這些工具具有腳本,可以自動從指定的存儲庫獲取源代碼。然后,這些腳本構建應用程序并將配置設置應用于測試代碼。(這些測試腳本與源代碼一起存儲在存儲庫中。)一旦構建的代碼通過測試,腳本就會將構建的應用程序部署到指定的運行時環境。CI/CD 工具與構建、發布、運行原則結合使用,允許持續快速、準確且可觀察地部署應用程序。

Factor 6:進程

含義:將應用程序作為一個或多個無狀態進程執行。持久性數據應存儲在有狀態后端服務中。這使得擴展更容易,并防止意外的副作用。

如何應用:無狀態代碼是基于 Web 的應用程序的基本原則。進程唯一應該做的是執行處理邏輯。應避免進程之間的副作用;進程不應影響應用程序的整體狀態或應用程序中另一個進程的狀態。要確定進程的狀態,請檢查獨立的真相來源,該來源協調所有進程之間的活動。

Factor 7:端口綁定

含義:使用端口綁定導出服務,使其自包含并可通過指定的端口訪問。

如何應用:某些端口號已成為特定服務的象征。例如,非安全 Web 應用程序的默認端口是 80 端口。安全網站通過 443 端口上的 HTTPS 訪問。Kafka 消息服務偵聽 9092 端口上的客戶端流量。MySQL 數據庫的默認端口是 3306。一些公司會不遺余力地將產品的品牌標識與端口號關聯起來。Docker和Kubernetes使用端口聲明來定義域內服務的訪問點。在開發級別,程序員通常根據 localhost URL 在其機器上使用資源或服務,然后通過關聯的端口號綁定到給定的資源或服務。

Factor 8:并發

含義:擴展應用程序時,應通過添加更多進程來水平擴展,而不是垂直擴展單個進程。

如何應用:對按需水平擴展的支持已成為現代 Web 規模企業應用程序的關鍵功能。許多技術,包括 AWS Elastic Container Service (ECS)、Docker Swarm、Google Cloud Run、Heroku、HashiCorpNomad 和 Kubernetes,都支持自動擴展。理解并發原則的關鍵在于,應用程序必須由離散的、獨立的執行邏輯單元組成,這些單元可以冗余地和同時運行。運行的單元數量可以根據當前的流量需求進行擴展或縮減。

Factor 9:可丟棄性

含義:確保快速啟動和關閉時間,以最大限度地提高彈性和使系統更強大。

如何應用:12 factor原則的可丟棄性原則體現了現代分布式應用程序的短暫性。正如并發原則所指出的那樣,應用程序將以冗余的方式啟動資源以滿足當時的需要。因此,組件總是“來來去去”以滿足流量需求。 當資源終止時,必須快速且優雅地進行。這意味著確保沒有操作以無定形狀態終止。必須完成操作,必須關閉與外部資源的連接,并且必須安全地從內存中刪除資源。組件終止后,應用程序的整體狀態應保持一致。

Factor 10:開發/生產環境一致性

含義:保持開發、登臺和生產環境盡可能相似,以促進持續部署并減少開發和生產之間的差距。

如何應用:開發/生產環境一致性原則類似于構建、發布、運行原則,它將應用程序開發過程分解為離散的片段。但是,構建、發布、運行關注的是代碼發布,而開發/生產環境一致性則關注跨升級開發環境的代碼一致性。

通常,在軟件開發的不同階段執行不同的操作。在開發階段,開發人員提交代碼。該代碼會進行代碼分析和單元(可能還有性能)測試。如果一切順利,它將被移至登臺環境。在登臺階段,代碼將接受更廣泛的測試制度,其中可能包括集成測試和滲透測試以查找安全風險。如果應用程序將由人類使用,則登臺環境也是代碼進行可用性測試以確保滿足人類需求的地方。最后,成功后,代碼將在生產階段發布。

關于開發/生產環境一致性的重要一點是,每個環境(開發、登臺和生產)必須相同,并且在每個環境中執行自動化工作時必須使用相同的工具。此外,除非是緊急更新,否則升級過程必須是單向的:代碼必須從開發環境移動到登臺環境,再到生產環境。不能來回移動。并且,在緊急情況下,例如修補程序,當代碼繞過開發環境并直接從開發人員的機器移動到登臺環境時,一旦修補程序代碼發布到生產環境,則必須更新開發環境以適應登臺環境中的更改。

在一個運行良好的 IT 部門中,開發人員的習慣是在本地機器上開始編碼會話之前,每天檢查開發環境的更新。這確保了任何緊急“向后”更新(在修補程序的情況下,從登臺環境到開發環境)都會返回到開發人員的機器。

開發/生產環境一致性的關鍵因素是每個環境中基礎設施的統一性以及環境之間升級過程的可預測控制。

Factor 11:日志

含義:將日志視為事件流,并讓執行環境聚合它們。這簡化了日志管理和調試。

如何應用:日志記錄應通過將日志記錄事件視為獨立于任何特定技術的獨立數據流來完成。通常的實現是將日志事件視為一條消息,該消息由數據流技術(例如 Kafka)使用。將日志發射與日志存儲分離使應用程序的可移植性更容易。

將日志記錄到數據流中會將存儲和數據管理的責任放在流管理技術上。權衡是關于發出日志數據的機器和應用程序的信息變得不透明。因此,為了提高效率,使用標準化的消息格式至關重要。消息格式應包含有關事件、機器、應用程序以及與應用程序操作相關的任何其他環境信息。

將日志記錄到事件流中有很多好處,但是您必須進行額外的規劃以確保日志呈現準確、全面且有用的信息。

此因素有一個開放的提案,以擴展它以反映當前的可觀察性實踐,包括遙測(issue #3)。

Factor 12:管理流程

含義:將管理任務作為一次性流程運行,在與應用程序相同的代碼庫和版本控制系統中進行管理。這確保了一致性和易于執行。

如何應用:應用程序必須附帶其自身的管理功能,例如儀表板。例如,Substack(一個面向作家、記者和其他內容創建者的在線出版平臺)附帶一個儀表板功能,允許內容創建者控制出版操作和讀者訪問。該平臺還使內容創建者能夠為付費訪問細分某些內容,并配置資金的收取方式。 此管理功能是Substack的一部分。它不是一個單獨的應用程序,其源代碼也沒有托管在單獨的存儲庫中。通用應用程序和管理流程都是統一代碼庫的一部分。Substack是管理流程原則的一個例子。重要的是要理解,管理功能是作為應用程序的一部分進行管理的,而不是作為與應用程序分離的東西。

通過開源邁向更高水平

您可能會從每個因素的描述中注意到的一件事是,12 factor方法對用于支持其原則的技術是不可知的。

當12 factor應用在2011年推出時,這種方法論在技術領域是新思維。該原則的不可知性使得采用更容易,特別是對于像Heroku這樣的公司,它提供一個平臺可以支持各種各樣的工具和技術。然而,在接下來的幾年里,各種各樣的云提供商都采用了12 factor方法,并且通過使這種方法開源,Heroku正在鼓勵社區幫助對其進行現代化改造。

正如Heroku首席營銷官在一次采訪中解釋的那樣:

“當Adam Wiggins在14年前編寫它時,云計算仍然很新,Docker和Kubernetes還不存在。他正在為優秀的SaaS應該是什么樣子制定路線。從那時起,許多事情都發生了變化,修訂是必要的。但是,這不應該僅僅是Heroku的觀點。許多云提供商和最終用戶組織都采用了12 factor原則。每一個都帶來了在云中大規模運行這些類型的應用程序和基礎設施的不同經驗。他們的想法和貢獻需要被納入,以將12 factor提升到一個新的水平。”

正如Junod所指出的,推動12 factor的原則在當時是有意義的,但技術環境已經發生了巨大的變化。它必須現代化,以解決遙測、身份驗證和服務到服務(S2S)通信等問題,現代開發人員和架構師每天都在處理這些問題,但它們不是原始方法論的一部分。

為了鼓勵廣泛參與12 factor的現代化,11月,Heroku將其項目開源,采用CC-BY-4.0許可證。該公司已將其12 factor的源代碼從其原始網站遷移到一個新的開源存儲庫。

新的存儲庫為對12 factor的貢獻提供了一個中心活動點。它包含更新版本的網站代碼和文檔,其中包含對這些因素更深入的描述。該存儲庫還包含來自各個組織的新思想和附加文檔的鏈接,包括O’Reilly、Nginx和IBM。這些公司秉承了12 factor的精神,他們的觀點對于使其在今天更實用非常寶貴。

開源的兩個最重要的優點是透明度和促進基于社區的技術創新的機制。Heroku首席架構師兼12 factor存儲庫維護者在12 factorDiscord服務器上的最近討論中表示,除了拓寬12 factor的范圍外,這種創新有望激發基于該方法論創建應用程序的工具。

訣竅是使基于12 factor的應用程序開發成為一種全面統一的體驗。開源該項目和推動12 factor的思想是朝著構建彈性、可擴展和可維護的、在網絡規模上運行的應用程序邁出的重要一步。

參與其中

12 factor軟件開發方法已經激發了十多年來的軟件開發和架構。其原則定義了一種統一、可預測的方式,使企業系統更安全地部署和更容易維護。

但是,鑒于過去十年發生的巨大技術變革,12 factor需要不斷發展以適應時代。希望通過將12 factor作為一個開源項目,更廣泛的貢獻者將帶來各種各樣的觀點,這將有助于使12 factor在今天像2011年首次發布時一樣有用。

責任編輯:武曉燕 來源: 云云眾生s
相關推薦

2024-03-29 06:32:46

CSSJavaScript前端

2015-10-29 14:35:21

移動設備現代化

2022-05-11 11:07:15

API云原生開源

2023-01-09 07:55:43

Rust開源數據倉庫

2022-07-11 05:34:19

云原生應用程序

2022-05-24 20:06:08

開源應用現代化數字化轉型

2023-05-03 21:47:22

2024-01-23 15:21:14

2020-06-05 14:16:05

醫藥

2020-05-08 14:47:53

網絡現代化網絡IT

2013-03-19 18:04:06

51CTO

2021-04-13 16:13:38

大數據教育科學

2021-07-09 05:25:48

CIO遺留系統現代化用戶體驗

2015-09-15 11:06:33

第一屆稅務行業信息化研華為

2024-12-02 09:26:17

2022-11-01 07:14:32

裸金屬云云服務云原生

2023-02-08 11:07:56

數字時代數字運營模式

2023-06-25 09:04:12

數字企業架構EA

2021-09-08 14:43:17

網絡數字化轉型Equinix
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产农村妇女精品一区 | 天天躁日日躁xxxxaaaa | 人人爽日日躁夜夜躁尤物 | 国产精品一区二区三区四区 | 国产成人综合亚洲欧美94在线 | 性福视频在线观看 | 精品一区二区三区入口 | 国产精品视频一区二区三 | 久久久久久久综合色一本 | 久久精品网 | 久草视频观看 | 国产精品一区二区视频 | www.99热.com| 欧美自拍网站 | 精品久久久久久红码专区 | 国产精品精品视频 | 日韩精品视频中文字幕 | 五月天婷婷丁香 | 日日爱av | 国产在线精品一区二区三区 | 日韩精品a在线观看图片 | 精品亚洲一区二区 | 综合网伊人 | 91视频进入 | 在线播放一区二区三区 | 成人免费视频网站在线看 | 精品免费国产一区二区三区四区介绍 | 天天爽夜夜爽精品视频婷婷 | 一区二区三区亚洲精品国 | 成人毛片网 | 亚洲视频在线看 | 91精品一区二区三区久久久久 | 精品国产乱码久久久久久1区2区 | 欧美色人| 国产亚洲精品精品国产亚洲综合 | 日韩欧美视频 | 欧美日韩国产一区二区三区 | 精品一区二区久久久久久久网精 | 久久国际精品 | 久久久久久久久久久成人 | 亚洲精品一区二区久 |