如何讓你的初創公司的云更穩定:4 個實用的 DevOps 技巧
在創業的世界里,當你把時間投入到哪里時,有一個平衡的行為。我遇到過很多情況,由于需要發布 MVP,DevOps 實踐處于次要地位。
我認為這是正常的,并不是一件壞事,因為“MVP”應該是“最小的”,而好的 DevOps 解決的大多數問題都不是這么小的問題。
但這里有幾件事絕對應該做(或至少考慮)。因為在創業世界中,沒有比讓您的云基礎設施崩潰更糟糕的事情了。
![k305qMPtQ5JQ-YTmewSKZ4QMr3yDxxi4Lhso](http://haohuigou.com/wp-content/themes/module/themer/assets/images/lazy.png)
提示 #1:安排數據備份?
對于任何關心擁有持久數據的初創公司來說,這都是必須的。您需要自動備份您的關鍵數據,否則您可能不僅會丟失文件,還會失去客戶信任,這將影響您未來的發展。
我通常在啟動項目時自動執行兩種類型的備份方法
數據庫備份
這通常采用計劃腳本的形式,例如每天晚上運行的 cron 作業,并將數據庫轉儲推送到云上某處,例如私有 S3 存儲桶。您可以通過一些備份解決方案獲得更多奇特的解決方案,但這些解決方案往往更側重于企業,并且會花費您大量的時間和金錢(對啟動不友好)。
![xVaOSbJdAg94fofj9T705IRPpB8xOnY5ttfH](http://haohuigou.com/wp-content/themes/module/themer/assets/images/lazy.png)
磁盤快照
當所有其他方法都失敗時,如果您有磁盤副本,通常會很安全。大多數主要的云提供商都有適當的解決方案,可以讓您按照您選擇的時間表拍攝磁盤快照,因此請盡量避免編寫直接連接到云 API 的腳本,因為您將負責維護它們。
???確保測試您的備份恢復方法或風險發生在 GitLab上,他們的所有 5 種備份方法都失敗了,因為他們從未測試過恢復?
提示 #2:設置監控并收到問題警報 ??
您會知道服務器何時出現故障或應用程序因磁盤空間不足而崩潰嗎?如果沒有,您應該考慮解決該問題(不需要太多時間)。
設置監控的最簡單方法通常是像Amazon CloudWatch或GCP?Stackdriver 這樣的云提供商解決方案。您可以設置指標來監控和發出不同類型的警報,以響應云基礎架構中發生的這些事件,例如當您的磁盤運行不足時收到一封電子郵件。
如果您不想使用供應商的解決方案——也有與云無關的選項可以監控您的云。存在簡單的解決方案,例如安排定期運行發送電子郵件的 shell 腳本,但更全面的解決方案為您提供系統的儀表板視圖通常更好且更具可擴展性。企業私有云存在Blue Medora和Solar Winds等選項,但大多數初創公司需要省錢,這意味著轉向開源解決方案,例如Countly。
總而言之,我建議使用基于云提供商的解決方案,因為這些解決方案將保證穩定、易于設置,并且在初創公司的規模上不會花費你太多額外費用。
提示 #3:轉向 CI/CD 管道?
![u3t9eAehi-11vaS36FCSnYsIYtc94mPTGuoS](http://haohuigou.com/wp-content/themes/module/themer/assets/images/lazy.png)
我在初創公司中看到的常見難題之一是發布代碼的過程。許多人還沒有將時間投入到 DevOps 來開發穩定的發布管道,這意味著推送到版本控制的代碼要么是手動測試、構建和發布,要么容易出錯,而且對你的開發來說很耗時團隊。
持續集成——確保變更不會中斷
持續集成的重點是每次代碼準備好提交時都會啟動一個管道。
![M-Dh7rZOrTVvpB7ExmQgrwq971QiOmVcPv5C](http://haohuigou.com/wp-content/themes/module/themer/assets/images/lazy.png)
- 代碼提交到版本控制
- 像 Jenkins 這樣的自動化系統會創建應用程序的構建
- 執行自動化測試以驗證系統是否仍然正常工作
- 一旦所有測試都通過,就可以將代碼添加到穩定的代碼庫中
- 新代碼現在可以部署了(這就是持續部署發揮作用的地方)
持續部署——自動化你的發布到生產
持續部署在您的持續集成管道完成驗證新代碼的工作后開始,不會破壞您的構建。這通常包括創建一個新的生產構建,就像在持續集成階段所做的那樣,并替換舊的構建(不可變的基礎設施)。
從技術上講,您可以在沒有持續集成的情況下進行持續部署,但這樣做的風險很大。您基本上會將未經測試的代碼直接推送給客戶(?B?AD?)
轉向 CI/CD 時應該從哪里開始?— 自動化測試!
眾所周知,大多數開發人員不喜歡編寫測試。隨著應用程序的發展,它們往往需要不斷更新,并且需要大量時間,因此許多初創公司自然會因為“MVP”而忽視編寫測試。
如果您沒有全面的測試套件,我不會費心考慮 CI/CD,直到解決此問題。隨著測試覆蓋率的提高,您將開始看到主要的效率提升,因為您看到生產中的錯誤越來越少。這是您應該繼續進行 CI/CD 管道的其他部分的時候。
提示 #4:容器化您的應用程序?
![Rl8fBg6SSZ2ixPA3NjmdWfzYRuFgfQ9HT1AB](http://haohuigou.com/wp-content/themes/module/themer/assets/images/lazy.png)
不要害怕容器,雖然技術本身很復雜,如果沒有內核的基本知識就很難理解,但利用它們并將應用程序轉換為容器真的很簡單。
整理一個 Dockerfile(取決于您的應用程序的復雜性)通常需要不到一個小時的時間,并且在您知道它之前,您可以立即部署您的應用程序并利用 Kubernetes 等出色的系統。
以下是通過容器化應用程序可以立即獲得的一些好處。
一致的構建
不再有“它在我的機器上工作”的問題——如果容器構建,它將以相同的方式在任何機器上運行。
無痛部署
你知道當你想建立一個開源項目時,你必須經歷各種手動步驟,設置數據庫和安裝所需的包嗎?使用容器不再是這種情況,所有這些步驟都被納入構建過程,您需要做的就是運行一個命令來啟動您的服務器。
充滿活力的容器生態系統
Docker 和 Kubernetes 等容器平臺擁有龐大且不斷增長的產品和服務生態系統,可幫助您更輕松地管理應用程序。基本上消除了諸如存儲、網絡和資源分配之類的許多令人頭疼的事情,從而節省了您的時間和金錢。
結論
許多初創公司并沒有在他們的云基礎設施上投入太多精力或時間。這通常是由于 MVP 的理念是先發貨,然后再清理技術債務。
在尋求擴展您的 DevOps 基礎架構時——考慮計劃備份、監控、CI/CD 和容器化。這些通常很容易獲勝,并將導致更加穩定的云。