如何在生產中成功運用Docker
SalesforceIQ(原名RelateIQ)的工程總監John Fiedler結合自己過去兩年的開發經驗,在DockerCon歐洲大會上發表了關于“如何成功地在生產中運用Docker”的演講。Fiedler建 議不要一開始就全面使用Docker相關的所有工具,而應該循序漸進地將服務轉移到相應容器中。
Fiedler解釋說,目前他們全部的網絡基礎服務都是在Docker中運行的,并且從來沒有出現過停機的情況。同時,他坦言道,他們從兩年前開始向Docker容器遷移,做過很多嘗試,也失敗過很多次。
最后,我們開始運用Mesos,但當時它還沒有認證……我們還嘗試在Docker中運行Kafka,如果Kafka失敗了,那么我們的全部服務都將停機……其實在Docker中運行Docker并不是一個好的決定。
SalesforceIQ超過70%的基礎服務是在Docker中運行的。在決定哪些服務應該放在容器中,哪些不應該時,Fiedler認為應該 注意以下兩個要點:變化率和依賴關系。相對而言,Web服務器或API服務器的壽命都是短暫的(轉化率)、無國界的(依賴關系),數據庫或CI/CD服務 器則壽命較長,并且是有國界的。因此,Web服務器和API服務器都適合遷移到容器中。
重要通知:接下來InfoQ將會選擇性地將部分優秀內容首發在微信公眾號中,歡迎關注InfoQ微信公眾號第一時間閱讀精品內容。
圖片來源:John Fiedler
圖片來源:John Fiedler
現在,在某種程度上,SalesforceIQ的PaaS服務中除永久存儲外,幾乎所有的服務都是運行在容器中的。
圖片來源:John Fiedler
演講剛開始,Fiedler就根據自己的理解分析了“生產”與“成功”的內涵:
“生產環境與開發/測試環境并不相同。生產環境中的一些特性在測試環境與開發環境中并不重要。隔離性、安全性、高效性、可監測性和可記錄性是在 遷移生產環境時考慮的重要因素;同時,可擴展、有模板借鑒和自動化水平也是需要考慮的重要方面……我認為,任何事情超過99.9%就是成功的。”
總結這次演講,Fiedler建議“保持簡潔,從小做起,不要急于躍進PaaS。”談到對工具的部署,他認為“Chef,Ansible和 SaltStack仍然是重要的工具,并且可用于連接Docker。”當Docker做好生產準備時,Fiedler強調 “要使用其他未就緒的解決方案(alpha和beta)。”最后,他補充道,“使用Docker,最大的回報就是CI/CD。”
查看英文原文: How to be Successful Running Docker in Production