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

Docker 在英雄聯盟游戲中的實踐探索

云計算
容器技術已經風靡全球,我們能否使用Dockerfiles定義構建環境,并與我們常用的開源架構相結合呢?我們又能不能拋棄傳統的基于虛擬機的云,轉身擁抱容器云呢?本文介紹了Riot是如何將容器與傳統的構建集群集成,并使其越來越像一個自服務的基于云的工作引擎的。

【原文編者的話】Riot將Docker和Jenkins相結合,以此來構建流水線(Pipeline)。這篇博客是Riot實踐Docker的系列博客的***篇,主要介紹了他們的目標和理念;后續博客則以教程的形式一步一步地記錄Riot的Docker實踐。

Docker 在英雄聯盟游戲中的實踐探索

容器技術已經風靡全球,我們歡迎容器化領域的新霸主們。

然而,他們也給Riot的流水線工程團隊(Pipeline Engineering team)的同事們帶來了新挑戰。我叫Maxfield Stewart,是Riot的工程師,我們組主要負責構建流水線(Pipeline)——從代碼簽入(check in)到部署的一切工作,甚至更多。如果說持續交付是一首主題曲的話,那么我們就是用清唱的方式演唱它。我們運轉的是一個類似云的環境,管理著Riot***的一個服務器和虛擬機集群。其中的一個龐然大物是構建集群(Build Farm),由大量的物理機和虛擬機組成。它是從數年前的一個小集群發展而來的,當時只負責構建英雄聯盟的游戲客戶端。

最近,我們已經融入了Docker容器技術。我們是如何將容器與傳統的構建集群集成,并使其越來越像一個自服務的基于云的工作引擎呢?我們能否使用Dockerfiles定義構建環境,并與我們常用的開源架構相結合呢?我們又能不能拋棄傳統的基于虛擬機的云,轉身擁抱容器云呢?

[[150197]]

上述問題已經持續了相當長的一段時間,就像寒冰射手(Ashe)的箭一樣。接下來,我將通過一個系列博客介紹我們的團隊是如何嘗試回答上述問題的。本文是其中***篇博客,主要是介紹我們的團隊背景,以及我們為什么要整合容器技術。在后續博客中,我將具體地分享如何整合Jenkins和Docker。***篇教程是一個基礎介紹(http://engineering.riotgames.com/news/putting-jenkins-docker-container)。如果你對于使用容器創建構建集群、持續交付、幫助工程師快速交付,那么這個系列就是你要的。請準備好:我將從基本介紹,逐步深入,最終介紹如何使用Docker承載真正的業務。

一年之前,我們將持續集成引入到了英雄聯盟。在那之前,我們拼命地嘗試以一個常規節奏來發布英雄聯盟,但是我們步履維艱。因此我們打算盡可能自動化這一切,從構建流水線到創建測試環境,獲得了大量的成果,包括提高交付一致性、減少構建時間、改善總體完成度。英雄聯盟從一天幾次的構建,增長到了每天30次構建。

Docker 在英雄聯盟游戲中的實踐探索

構建英雄聯盟可不是開玩笑的,其中包括了超過150個任務,我們構建每個重要的版本。每次構建有各種形式,從傳統的debug構建到新版本,以及專門為了包括騰訊和Garena在內的全球合作伙伴準備的變種版本。我們可以追蹤到每次構建、什么測試環境、什么測試內容、PBE以及快速部署成產品。我們可以一鍵創建測試環境,并且可以在幾個星期內從20個測試環境增加到70多個,包括450多個虛擬機。構建英雄聯盟只是構建集群的一部分工作,構建集群本身支持了Riot各個工程團隊的3300多個構建任務。然而,這一構建流程并不是***的,這些陳舊的工具有時需要連接起來才能工作。在持續集成中,我們秉持4項原則:

  1. 我們認為工程師團隊必須能完全掌控他們的技術棧,包括對于構建環境的管理員權限。
  2. 我們認為配置即代碼。團隊應當盡可能使用源碼控制來維護他們自己的構建流水線和環境。
  3. 我們認為每當工程師執行一次構建,都需要針對所有可部署的配置構建一個可交付的版本。一個“構建”并不只是編譯代碼而已,而是所有可部署的組件的集合。
  4. 我們認為一次交付就是一個產品決策(shipping is a product decision)。只需按一下按鈕,產品團隊就能夠部署并查看***版本。

Docker 在英雄聯盟游戲中的實踐探索

我們需要世界***的技術棧才能達到這些目標。通常有三種選擇:完全重頭編寫、購買別人的工具或者定制化開源項目。

我們選擇了第三種。在這篇博客中,我不想比較各種CI工具。不過,通過修改開源工具來符合我們的需求是一個***的折中方案:不需要重頭編寫;可以與開源世界合作;如果有必要的話,可以輕易脫離它。

#p#

因此,我們的技術棧非常簡單:

  • 開源版本的Jenkins
  • Jenkins的任務DSL插件(Job DSL Plugin)
  • Jenkins的構建流插件(Build Flow plugin)
  • 將各個組件連接在一起的工程***性

我們選擇和繼續使用Jenkins,是因為它是靈活的、開源的、易于處理我們的基本構建操作。總體來說,Jenkins是易于創建一個構建流水線的,符合我們持續交付的核心需求(如上所述)。作為一款廣泛應用的開源工具,我們有一個***活力的社區在與我們合作。與重頭編寫自定義工具相比,工程師團隊可以利用開源標準的實現,這是很有幫助的,也是具有風險的。開源標準經常變化,昨天的一個好主意明天就可能變成一個壞主意。然而,利用合適的插件和技術訣竅,我們只用了少量的代碼、配置和開銷,就完成了一個全自動的持續集成鏈。

那么,Docker發揮了什么作用呢?讓我們回想一下我提到的持續交付的核心原則。最近,我們團隊遇到的一個挑戰是構建環境的所有權。之前,工程師們通過Packer.io定義自己的虛擬機鏡像,然后給產品團隊集群的root權限。本質上,我們需要通過Jenkins這一個工作流引擎定義一個內部的云環境。我們探索了幾個通用的配置管理工具,如Puppet和Chef,來實現虛擬云環境,并使工程師們能控制這些機器。

然后,Docker出現了。

這件事情就變得簡單了:Dockerfile比其他工具更易于維護。在Docker的幫助下,我們意識到容器更容易管理了。如果我們把Docker中Dockerfile的概念和構建環境的所有權結合起來,我們就進入了工程天堂。

Docker 在英雄聯盟游戲中的實踐探索

Docker很善于解決部署中的挑戰。我主要關注Docker是如何幫助工作流引擎、構建系統和流水線,同時也熟悉了如何將其作為一個部署工具和方法論。Riot管理著大量的微服務,而容器和微服務的組合就像花生醬和巧克力的組合。因為Docker成為了一個“Thing(tm)”,我們也會使用它來解決其他的一些問題。

流水線工程團隊的夢想變得更真實了:我們想要一個流水線構建工具,它能動態地加速持續交付流水線,使用框架代碼來按需地一鍵構建環境。為了創建一個完整的構建流水線,我們之前是通過自動化配置虛擬機來實現的,現在我們認為使用Docker容器來完成。

需要說明的是,Docker并不是一個***的整體解決方案。它不能解決Windows和OSX的構建環境中的問題,也不能和我們使用的每個工具結合。但是,Docker確實解決了Linux平臺中我們遇到的很多困難。在Riot,我們在平臺和后端上進行了大量的工程工作。包括核心的后臺服務在內,幾乎所有的特性都是通過跑在Linux上的微服務來提供的。因此,如何優化解決方案空間是值得我們投入時間和精力的。

我們已經開始將Docker與現有的構建棧結合,并獲得了一些早期的成就。我們創建了Jenkins的一鍵部署環境,在容器中部署,加速了測試和調試過程。我們從一個小型集群(大概500個任務)開始,使用容器作為構建環境,在所有權和迭代速度上團隊也提供了積極的反饋,包括:

  • 基于Linux構建微服務和網站的工程師們能夠以編程的方式定義他們的構建環境了
  • 本地的構建環境和構建集群中的構建環境是完全一致的(在后續博客中,我將介紹如何做到這一點)
  • 動態資源分配意味著降低整體計算成本
  • 一臺虛擬機可以處理4個不同的組合300多個構建任務,這原本是通過8臺虛擬機完成的

這篇博客僅僅是一個系列話題的介紹,這個系列將覆蓋多個領域,以教程的形式發布,提供實例和源碼。首先,系列博客將介紹如何使用Docker來部署Jenkins,包括各種***實踐,并通過一個真實應用引入Docker的基礎知識;然后,系列博客將探索容器化構建環境的各種方案,并介紹Riot是如何將Docker融入Jenkins的生態環境;***,將介紹流水線工程團隊是如何完成最終目標的。

我們希望通過系列博客來能分享我們的發現以及遭遇的挫折。這些或許不是什么大秘密,但可能是不容易發現的。我希望我們的系列博客能回報社區,并通過交流和對話學習到更多。

原文鏈接:http://dockone.io/article/687
 

責任編輯:Ophira 來源: dockone
相關推薦

2025-03-20 10:50:08

RedisCaffeine緩存監控

2015-10-28 11:01:56

創業公司抱團生存

2019-05-27 15:00:17

Pygame游戲平臺

2024-08-12 09:41:18

2010-03-11 18:57:17

Python腳本

2022-05-27 11:22:40

Canvas超級瑪麗游戲

2023-07-26 07:51:30

游戲中心個性化

2023-10-27 12:16:23

游戲發行平臺SOP

2011-08-24 11:14:25

LUA 游戲

2024-11-13 21:18:02

2015-08-11 08:51:40

游戲死亡

2012-05-09 12:18:14

HTML5Canvas

2017-03-29 11:00:28

區塊鏈比特幣游戲

2020-01-14 12:05:20

Python游戲引力

2012-12-25 10:51:39

IBMdW

2012-10-29 13:01:21

聯想IdeaPad

2013-04-03 15:10:09

GMGC全球移動游戲大

2024-04-17 07:21:52

物化視圖查詢加速器數據倉庫

2022-04-28 09:36:47

Redis內存結構內存管理
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩福利视频 | 亚洲激情一区二区三区 | 国产电影一区二区 | 91精品国产综合久久福利软件 | 国产高潮av | 成人av免费看 | 99re在线视频观看 | 成人av色| 91精品国产自产精品男人的天堂 | 九九九色| 国产乱码精品1区2区3区 | 久久日韩粉嫩一区二区三区 | 少妇一级淫片免费放播放 | 久久久久久国产精品久久 | 久久久久久久久国产 | 国产日韩一区二区三免费 | 日韩在线观看中文字幕 | 福利色导航 | 亚洲一区二区网站 | 成人在线精品视频 | 欧美成人精品一区二区男人看 | 日韩在线看片 | 一区二区av| 亚洲一区二区三区免费在线观看 | 国产免费一区二区三区 | 一区二区三区四区在线播放 | 在线观看黄色电影 | 九九国产| 久久久久久综合 | 黄色一级毛片免费看 | 精品国产乱码久久久久久图片 | 国产精品一区二 | 欧美国产中文字幕 | 男女羞羞视频大全 | 日韩精品免费一区二区在线观看 | 久久成人综合 | 国产一区二区视频在线 | 国产精品一区二区三区久久久 | 精品视频一区二区三区 | 欧美久久国产精品 | 99亚洲 |