基於敏捷開發,我希望軟體開發的時候能夠隨時的自動測試,這樣才能夠隨心所欲的重構以及保證有基本的品質。在開發雲端應用的時候,常常會有很多台的伺服器需要相互運作。過去虛擬化的做法,常常是利用類似VMWare的虛擬機來建立整個機器。因為是虛擬化整台機器,每次安裝的速度之慢,根本不能拿來做自動化測試。尤其是在設定伺服器的過程中,常常就是Operation的領域,各出奇招,只要伺服器能照著自己的"魔術"正常運作就好了,至於要其他人看懂或接手,那就是另一個考驗了。
Docker,就是拿來解決這種VM開啟速度慢、耗費資源高的問題,但是又能讓應用程式互相跑得好像在不同機器上一樣的獨立。不只如此,Dockerfile的文件可以讓整個檔案結構、相依套件都好好的用同一種格式寫好,這樣一來就不是Operation個人的魔術了。我自己把Docker看做是一個綠色軟體的產生器,因為每一個應用包在Container裡面,都已具備所有的相依套件。如果想要公開自己開發的服務,給個Dockerfile再給個簡單的docker run,完成。裝好Container以後,保證能跑!所以現在很多套件都已經支援了Docker,也都附上了Dockerfile。
而基於敏捷開發,想要快速的增加開發雲端服務的迭代次數,就是非Docker莫屬了。利用Docker從官方的發布版本為基礎(ubuntu, centos, dabian)開始建立整套雲端服務,速度非常之快,已經達到能夠每次commit都自動測試的次數。但是我遭遇了一個問題:啟動了一個Container以後要怎麼知道它的IP呢?這個問題在過去的網路服務的架構早就已經遭遇過了,只是從不常關機的Virtual Private Server(VPS)換成變化更快的Container罷了。這麼頻繁的開啟伺服器,就必須要有Service Discover的機制。否則整天去管理開開關關的Container就夠煩的了。
待續....skydns + skydock
沒有留言:
張貼留言