交出王國的鑰匙:使用Terraform自動化數據

2021年5月28日上午10:30(太平洋時間)

下載幻燈片

Scribd數據平台任何部分的長期成功都依賴於平台工程將工具交到開發人員和數據科學家手中,讓他們“選擇Beplay体育安卓版本自己的冒險”。

在本節課中,我們將學習Databricks (Labs) Terraform集成,以及它如何實現生產級平台所需的各個方麵的自動化:數據安全、權限、持續部署等等。Beplay体育安卓版本我們將了解Scribd如何在不充當把關人的情況下為內部客戶提供靈活性。beplay体育app下载地址在Databricks中,他們可能需要的任何東西都是一個拉請求。我們還將了解Databricks與Terraform在其他客戶和雲中的典型部署模式,以及項目如何隨著時間的推移而發展。beplay体育app下载地址

在本節中請注意:
Hamilton Hord,站點可靠性工程師,Scribd
Serge Smertin,常駐解決方案架構師,Databricks

成績單

漢密爾頓·霍德:大家好,歡迎來到《交出王國的鑰匙:使用terrraform實現數據自動化》。我叫Hamilton hoord,是Scribd的網站可靠性工程師。

Serge Smertin:我是Serge Smertin, Databricks的高級常駐解決方案架構師。

漢密爾頓·霍德:今天。我們會討論一些事情。首先,我們將回顧複雜的基礎設施是什麼樣子的,以及它固有的一些問題。接下來我們將回顧Terraform Databricks Provider。我們應該注意,我們將討論使用Terraform,但不討論它是什麼以及它是如何工作的。你可以在其他地方找到其他的演示和指南。接下來,我們將討論這個新的Databricks Provider如何幫助我們解決了Scribd的許多問題。最後,我們將討論Databricks Provider如何在更廣泛的意義上提供幫助。再說一次,我是Scribd的SRE,主要關注我們的數據平台。Beplay体育安卓版本我負責將我們的Databricks基礎設施部署給我們的數據科學家、業務用戶以及介於兩者之間的一切。 And because of that, I kind of really enjoy working with the big data technology, the collection of data, the processing, and all the analytical information that can be gleaned from it. And of course, outside of the office, I am a big fan of playing video games. Well, most notably trying to get them to work in my Linux computer.

瑟奇·斯麥丁:我是瑟奇。我是Databricks Terraform Provider的主要維護者。因此,在過去的14年裏,我在數據生命周期的各個階段都工作過:售前、售後、實施、解決方案、支持、生產。我從零開始建立了幾個數據科學平台。Beplay体育安卓版本我曾經通過大規模取證跟蹤網絡罪犯,我曾經為支付行業建立反pii分析措施。是的,在這裏,我幫助Databricks的戰略客戶,比如Scribeplay体育app下载地址bd,變得更成功,把他們帶到一個新的水平。

漢密爾頓·霍德:那麼複雜的數據基礎設施是什麼樣的呢?例如,你可能有一組不同的桶,它們有各種不同的個人用例,在整個公司的數據類型。接下來,您可能有一些其他的非桶數據存儲,如Kafka或一些關係數據存儲。接下來,您可能會有一些Databricks集群,用於訪問數據並對其進行處理以實際收集價值。當然,您將擁有許多具有這些特殊訪問權限的角色和行為,這些角色需要的所有策略文檔、規則和定義,以便擁有他們應該擁有的訪問權限。當然,最重要的是,其中大部分可能會在一個組織的不同團隊的不同賬戶中。
現在,我們來關注一下在這裏運行Databricks的複雜性。通過在web控製台更改Databricks,當人們更新各種配置項時,例如worker計數,spark上下文或其他各種東西,您永遠無法真正知道之前的更改在哪裏,您所知道的隻是當前值。你可能無法看到一個月或一個星期前的情況。此外,人們可以直接進入並創建[網絡??他們一時興起就能進入的集群。沒有監督,沒有製衡之類的。沒有真正的檢查來確保他們使用了他們需要的正確標簽,或者正確的spark上下文來讓事情正常工作。在大公司中,很難確保每個人都遵守某種書麵政策,而不是強製執行的政策,即正確地創建事物。
因此,為了幫助維持這一點,你必須減少能夠創建集群的人數。因此,在一個50人的團隊中,隻有少數人能夠真正完成集群。這意味著,如果有人需要更改一個集群,或者需要一個具有某些特定配置項的新集群,管理員必須進來,用一張票據或Slack中的一些消息或其他方式為他們構建集群。在這樣做的過程中,他們必須構建它,並且通常必須手動複製大量配置項。最重要的是,在所有這些手工創建的過程中,作為管理員,我們需要定期檢查每個人是否遵守我們的書麵政策或標準,嘿,人們是否創建了帶有適當標簽的集群,以及適當的部門,等等。現在Serge將告訴我們如何解決這些問題。

Serge Smertin:是的,漢密爾頓。因此,我們創建了Databricks Labs Terraform Provider來解決前麵提到的大型企業所麵臨的所有問題,幫助人們釋放Databricks自動化作業、流管道、工作空間安全、數據安全和機器學習的力量,通過實際上是雲原生基礎設施行業標準的工具與雲存儲、雲訪問控製和網絡無縫連接。因為如果你在運行雲,如果你在運行Databricks,那麼很可能你在使用Terraform。當然,Terraform還有其他一些替代品,比如Cloud Formation或來自Amazon Web Services或Azure資源管理器模板,但它們仍然不是Omni雲。它們不是多雲。Terraform是一個單一的工具,它可以有類似的語法,類似的工具和相同的工具,適用於所有的雲,維護所有的東西,打破差距。
基本上,Terraform提供者可以使用Databricks公開的幾乎所有公共API,並且在Terraform中有它的源代碼。盡管目前還不支持Terraform提供程序,但它仍然被廣泛使用。它的下載量約為50萬次,每次安裝量超過5000次。我已經在裏麵工作了一年多了,它有15個公開版本,超過5萬行代碼,代碼覆蓋率83%,還有600多個已解決的問題。這是非常令人印象深刻的結果。許多公司將其用於生產部署。那麼Scribd用它做了什麼很酷的事情呢?

漢密爾頓·霍德:所以我們實際上基本上已經建立了一個自動部署的分布式數據網格。因此,即使在購買提供商之前,我們已經在Terraform內部構建了許多不同的AWS基礎設施。有了新的Databricks提供程序,我們可以開始構建這個基礎設施,然後自動地將它推入Databricks。然後有了這些新資源,比如IAM配置文件和Databricks中的其他東西,我們實際上可以開始在這些AWS資源上自動構建集群和其他資源,隻需要幾行配置,比如當我們需要一個新的集群時。此外,通過使用Terraform,我們能夠模塊化我們的工作空間,我們的工作空間對象之間的創建,並保持它們之間的基本相同,隻改變需要改變的地方,使它們獨特。
我會給你們看一段代碼,讓你們對它有個概念。這裏我們有一個大地圖的樣本,我們用它來定義我們在Databricks中使用的所有IAM配置文件。這裏我們說,嘿,我們要創建profile core platform depthBeplay体育安卓版本它將需要訪問權限,以便在其他帳戶或同一帳戶中承擔這些角色,但它還需要承擔這些:它應該具有訪問這組秘密的權限,並將其置於具有組所有權的工作空間中。因此,一旦Terraform運行,我們的代碼將運行、創建角色、創建允許該角色訪問那些帳戶的所有策略、附加那些角色、授予訪問所需機密的所有策略,並將其導入所需的新的Databricks工作空間。
在此之後,我們實際上擁有了用於創建工作區本身的模塊。在這裏,我們實際上有另一個映射,類似於定義“嘿,我想要這個工作空間存在”的角色。然後它來到這裏,為所有不同的工作空間和開發工作空間調用模塊,然後遍曆它,創建我們單獨的,幾乎是模仿的,但唯一可尋址的工作空間,隻需要從這些外部創建的資源中獲取。通過這種方式,如果由於某種原因,我們有一個新的團隊加入,說需要超級秘密訪問特殊數據,我們不希望公司的其他人有權限,我們可以添加一個快速的線路,我們已經為他們建立了一個獨特的工作空間,我們可以讓他們記錄它。因此,對於我們現在創建的工作空間,現在我們必須用各種Databricks資源來填充它。
有了URL後,我們就可以進去構建這個。這裏沒有畫的是做這個的模塊。它實際上有一堆文件裏麵有集群和其他東西的列表。但它需要開始的是我們所處的環境,在與SSO集成之前需要存在什麼樣的服務管理帳戶,以及它需要什麼IAM配置文件。在這個模塊中,我們減少了所有額外的代碼我們需要為下遊PR用戶做的,我們會講到更多。因此,與其讓他們擔心整個代碼庫,比如,“哦,檢查這個龐大的Terraform堆棧中的特定文件”,我們可以隻說,“嘿,隻要進入這個文件夾,這就是您想要的工作空間的所有配置。”
我想指出的是我們會有更多關於這類代碼和部署過程的細節我們會在techh。scribd。com上做些什麼。將提供鏈接。就像我提到的PRS,我們一會兒會講到PRS。所有這些Terraform代碼都允許我們擁有一個關於我們的基礎設施的真實來源,將其放在GitHub中可以為您的代碼庫獲得任何類型的Git管理係統的所有好處。我們可以為團隊提供一個簡單的入口,他們想要建立一個新的集群,對集群進行更改,而不是像以前那樣,他們必須向我提交一張票,或者進入我們的Slack頻道,說:“幫助,幫助,我需要幫助。我要把5分改成10分。”
他們實際上可以進入代碼庫,提交PR。然後我們可以在正常的PR審查周期中,每天,每周,等等,然後讓它通過。此外,通過設置Git,我們所做的是將一些團隊的配置項進行了細分,例如,像我們的應用研究團隊這樣的團隊有一個專用的集群。這是專為他們準備的,上麵有他們的特殊調味料,我們想要鎖定的不僅僅是訪問權限。所以我們實際上可以應用,讓他們成為文件的代碼所有者,配置他們的集群的配置文件這樣做,當任何類型的PR或其他東西被提交給這些文件時,他們自動參與到PR過程中,作為審查者和審批者。這就減輕了我們對團隊的審批負擔。
使用Git的另一個好處是,我們可以利用大量的Git自動化,比如GitHub動作,來觸發各種不同的檢查和平衡,檢測,拚寫檢查,檢查它是否會實際運行或應用。通過這種方式,當最終用戶提交他們的PRS時,他們可以在我們甚至有時間審查它之前獲得關於它是否實際工作的即時反饋。
最後,將所有這些基礎設施放到Git中最大和最有益的原因之一是,我們可以獲得發生的曆史。我們可以通過提交日誌查看集群是什麼時候創建的,什麼時候編輯的,誰編輯的,為什麼編輯,因為他們可能會留下描述或票據或一些改變的理由,集群創建大小等等。但如果有一個問題,我們可以很容易地看到,“嘿,讓我們去和約翰·多伊談談這個承諾,看看他當時在想什麼,或者背後的原因是什麼。”我很高興地說,自從推出這個功能以來,我們實際上已經能夠擴大問題和東西的作者數量,從兩到三個一直致力於這個代碼庫的內部團隊成員,到Scribd的總共13人。
雖然沒有很多個人PRS,但個人的絕對數量已經很棒了。這表明,在誰必須進行代碼更改方麵,實際上已經沒有那麼多的瓶頸了。所以這真的減輕了我需要做的工作量。
無論做什麼,都有一些風險和挑戰。現在對於任何類型的變更管理係統或任何類型的公關或其他東西,你都會引入一點放緩你對事物進行更改和編輯的速度。
然而,它需要10秒鍾來增加控製台內的工作人員數量,然後就結束了,就像,酷,我們很好,你必須通過完整的代碼審查過程才能真正推出它。從長遠來看,我們認為這是一種可以接受的時間損失,因為你可以在它們真正開始蔓延之前抓住所有牛仔式的變化,並且你可以在這些變化中進行一些交流。要引起有審批程序的人的注意並不難,“好吧,我們需要盡快完成這項工作。讓我們快速回顧和檢查一下。”
其次,因為我們在Databricks中使用了很多私人預覽功能,或者很多上周或上個月剛剛發布的全新功能,我們試圖在Terraform中做所有事情,這意味著我們傾向於絕對處於Terraform提供商的最前沿,如果有人知道處於任何一種軟件的最前沿,你傾向於首先遇到邊緣情況。
就像Serge,你提到過幾次,就像我們確實在這裏和那裏遇到了一些挫折,但沒有什麼會破壞遊戲或破壞我們的任何係統,更多的是,哦,我們必須在這裏和那裏考慮這些問題。說到這個,Serge,人們現在可以通過Databricks提供商獲得的當前版本是什麼?

Serge Smertin:現在它是0.3.3,是第五個版本,我們實際上已經引入了一個SQL權限的特性,它可以幫助管理所有工作區中數千個表的訪問控製,如果您使用Terraform,這個特性是免費的。你不需要購買任何其他產品。您隻需使用Databricks和Terraform提供程序,就可以對數據對象進行細粒度的訪問控製。這不是很棒嗎?

漢密爾頓·霍德:太棒了。這意味著我需要抓緊時間去升級遊戲,因為我已經迫不及待地想玩完遊戲了。最後一個,一個很大的障礙,但我們沒有預見到未來的一個很大的障礙,我們已經看到了對Terraform變化的采納有點緩慢,主要是與我們第一次向公司發布Databricks時相比,人們瘋狂地創建集群,並對此非常興奮,製作各種專業的單一用途集群。然而,由於變更管理的額外障礙和需要學習Terraform,人們對瘋狂地使用它有點猶豫,但我們不認為這是一個巨大的障礙,因為我們已經在內部文檔中投入了大量的時間和精力,比如非常詳細的注釋,“嘿,這就是你想要的。這是你需要做的事情,”以及代碼本身中的許多代碼示例和廣泛的代碼審查過程。
所以我們實際上會和他們配對,“嘿,這正是你需要做的,這裏和這裏,哦,這是Terraform的一些時髦的東西。你可能想檢查一下,確保它正常工作。”但隨著所有這些的發展,我們並不認為這是一個大問題。Serge,我最近玩得很開心的這些很酷的功能有什麼更普遍的意義呢?

Serge Smertin:據我所知,Scribd開發Terraform的功能已經有9個多月了。你是Terraform最老的用戶之一,也是最多才多藝的用戶之一。所以你幾乎使用了所有的數據,但基本上Scribd做的是Martin Fowler博客所說的分布式數據網格。對於擁有超過50人的數據團隊的公司來說,分布式數據網格是不可避免的,他們希望讓每個團隊建立自己的數據集,並有自己的旅程,而不太依賴其他團隊。當然,他們依賴於被稱為數據平台工程師的中央團隊,而數據平台工程師實際上維護整個基礎設施,通常使用Databricks和TBeplay体育安卓版本erraform,因為如果在雲中有基礎設施,就會有Terraform。
這並不是什麼新鮮事,所以要準備好越來越多地聽到分布式數據管理的這一部分。隻是因為MartinFowler.com已經寫過了,一旦有什麼東西出現,越來越多的人會開始談論它。所以讓我們討論幾個實際的用例,在更大的規模上的Terraform。所以公司通常會從一個作業開始,第二個作業,第三個作業,他們會有20個不同的作業來使用存儲支架。嗯,他們用了幾個月的時間,慢慢地把它投入生產。在生產方麵,他們必須開始向他們的隨叫隨到團隊、計費團隊和業務用戶添加權限,以共享自動伸縮集群。他們必須控製權限。否則,它們就不符合組織的安全策略。當他們開始添加監控、審計日誌、IP訪問控製列表之類的東西時,就變得更有趣了。
然後他們想,哦,是的,“我們實際上應該從一開始就把錢花出去。”他們開始自動化,他們用Terraform挖了一個坑,因為他們需要擴展,因為突然他們不得不開始考慮數據局域規則。在這種情況下,比如他們的數據量非常大,以至於他們不得不在區域內處理數據,隻轉移一個處理過的DeltaTable。因此,在30個不同的工作空間中管理更大的基礎設施的成本是合理的,因為網絡節省成本和監管成本。所以這張照片實際上並不是很不尋常。我們看到一些內部和外部的beplay体育app下载地址客戶擁有超過10個不同的工作空間。所以有時他們的工作空間在30個相同的類型中都是一樣的,或者他們有一個不同的,非常薄的工作空間。因此,Terraform實際上能夠以一種更簡單的方式將這些東西投入生產。
這張圖隻是對Databricks內部實際使用的東西的簡化,比如記賬。如果您需要采取行動,請探索Databricks Terraform提供商,將其作為自動化整個基礎設施代碼審查過程的方法,並能夠從災難中恢複,控製雲支出的成本,並以可審查的方式控製雲支出的安全性。因為如果你的技術團隊增加了超過50人,你肯定需要采用一些生產變更谘詢委員會類型的方法。這是最好的解決辦法。

漢密爾頓·霍德:嗯,非常感謝你,塞爾吉。再說一遍,我叫漢密爾頓。我在Scribd工作,我想說的是,我們正在招人。所以如果你想看我們的節目,請一定要看;鏈接將在聊天。Serge,我相信Databricks供應商不是完全開源的嗎?

瑟奇·斯麥丁:哦,是的。它從一開始就是開源的,我們一直在尋找更多的貢獻者。

漢密爾頓·霍德:嗯,一定要出去看看。我相信Databricks也在招聘。如果我記得的話。非常感謝你們來參加我們的講座,祝你們有愉快的一天。

Serge Smertin:謝謝大家。

漢密爾頓霍德

Hamilton是Scribd的一名站點可靠性工程師,在那裏他幫助數百個滿意的內部客戶部署了Databricks。beplay体育app下载地址他喜歡幫助數據科學家、分析師和機器學習開發…
閱讀更多

嗶嘰斯梅爾廷

Serge Smertin是Databricks的常駐解決方案架構師。在他超過14年的職業生涯中,他一直在處理數據解決方案、網絡安全和異構係統集成。他的軌跡…
閱讀更多

Baidu
map