袁英傑
袁英傑

軟件工程師,Boatswain 的創辦人 https://boatswain.io/。

啟航...

成為水手

2015年,當時我們嘗試自動化那些從 Freelance 接來的 Drupal 項目,從而減少部署與維護的繁瑣工作,相信很多軟件工程師也知道,要在一個只有FTP的共享主機有多痛苦。因此,我們希望可以除了編程外也一拼提供網頁應用程式的寄存服務,並創造一個對工程師友善的開發環境,當中包括以下功能:

我們的願望清單
  • 一樣的 Development 和 Production 環境
  • ⬆️版本控制覆蓋範圍
  • 工程師友善的開發環境
  • 輕鬆生成本地配置(服務開通)
  • 簡易的遠程部署
  • 環境之間的數據同步
  • 定期自動備份
  • 監控和日誌管理

聽起來不錯! 但是我們怎麼能做到呢?

Docker

我們厭倦了那些設置伺服器和應用程式的舊方法。我們想要一個整潔的解決方案。Docker 是第一個出現在我們腦海的工具。基礎設施即代碼(IaC)可以解決環境差異,又可以保持程式的版本控制。而且,人為錯誤和花在配置上的時間也可以大大減少。

另外,我們可以使用 Docker Hub 上任何的 Docker 映像,或者制作自定義映像來作開發和管理。例如:

創建一個 Drush 容器來清除 Drupal 緩存,導入導出數據庫甚至打包整個網站。
創建一個安裝了 Compass 的 NodeJS 容器來編譯 .sass 文件。

作為一名開發人員,我只需要的一台安裝了 Docker 的機器( 在這案例中也需要安裝 Ansible)。其他開發工具以容器形式來運行並儲存在代碼庫中。

我們的願望清單
  • 一樣的 Development 和 Production 環境
  • ⬆️版本控制覆蓋範圍
  • 工程師友善的開發環境
  • 輕鬆生成本地配置(服務開通)
  • 簡易的遠程部署
  • 環境之間的數據同步
  • 定期自動備份
  • 監控和日誌管理

在這案例的其它工具

Docker 對我們來說是一個很好的起點,因為它擁有一個很大的社群,很容易便找到很多有用的開發資訊。另一方面,還有兩個值得一提的軟件。

Ansible

Puppet 不同的是,Ansible 不僅僅是一個配置管理工具。相反,它更像是一個帶有許多模塊的 Apache Ant 的強大版本。與 Ant 相比,Ansible Playbook 的概念有助於以有組織的方式管理配置,部署和協作,以便他們可以在開發過程中隨時 執行這些已定義的任務,包括:

  • 啟動和停止應用程式
  • 觀看並編譯 sass 文件
  • 清除應用程式緩存
  • 導出 Web 資產和數據庫
  • 導入 Web 資產和數據庫
  • 在虛擬伺服器服務商上建立並配置(服務開通)一台新的伺服器
  • 遠程部署到上面的伺服器
  • 執行備份到 Amazon S3
  • 從 Amazon S3 中還原最新的備份

此外,使用 Ansible Vault 把文件加密可以讓我們放心把敏感資料如密碼放到代碼庫中。

我們的願望清單
  • 一樣的 Development 和 Production 環境
  • ⬆️版本控制覆蓋範圍
  • 工程師友善的開發環境
  • 輕鬆生成本地配置(服務開通)
  • 簡易的遠程部署
  • 環境之間的數據同步
  • 定期自動備份
  • 監控和日誌管理

使用 Duply 作資料備份

Duply 是管理備份的好工具,適用於 Amazon S3Google Drive 等不同的雲端服務,並且支援加密備份。

我們的願望清單
  • 一樣的 Development 和 Production 環境
  • ⬆️版本控制覆蓋範圍
  • 工程師友善的開發環境
  • 輕鬆生成本地配置(服務開通)
  • 簡易的遠程部署
  • 環境之間的數據同步
  • 定期自動備份
  • 監控和日誌管理

剩下的挑戰…

現在我們已經完成了願望清單中的七個項目中的六個項目,它們構成了我們的項目工作流程:從 Development 到 Production。但整個工作流程在發佈後仍然需要應付更改請求、服務監控、性能調整等等,這些任務都要依靠監控和日誌管理才能有效地完成。

收集日誌

以下是從容器中讀取日誌的一些普遍方法:

  • 使用 docker logs 命令
  • 將容器日誌輸出到文件
  • 使用 syslog

在還未有 Boatswain 概念之前我們都使用一個 syslog 容器來收集其他容器的日誌,但是這種方法對項目有一定的干擾,因為我們必須為所有的容器添加額外的配置。

我們想要一個更好的、非侵入式的解決方案。這就是為什麼我們產生了 Boatswain 的想法。

Boatswain

Boatswain 是一個為運行 Docker 的伺服器提供基本監控與日誌管理的服務,希望能夠為您提供以下功能。

  • 主機和 Docker 容器監視
  • 日誌管理
  • 故障排除
  • 實時通知
  • 簡單的安裝
  • 監控儀表板

目前我們仍處於內測階段,正在尋求意見和改進。如果您想註冊一個帳戶,請隨時聯絡我們

為了能夠提供更高質素的平台,我們正在將服務遷移到 Google Cloud Platform 上的 Kubernetes,希望我們可以在遷移之後作公開的 Beta 發佈。

希望在我們的旅程中見到您 ⚓️!

原文網址

CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论