生產流程
2019 年 8 月 3 日
Erlang/OTP 絕對是一種獨特的語言與執行環境,但即便支持者如此宣稱,其實它並沒有那麼不同。在這一部分,我們將了解如何建置部署所需的產出品,以及如何在任何其他服務執行的相同環境中執行此部署。在這一部分,我們將建置一個可部署的產出品(一個版本),建立該版本的 docker 映象,並部署到 Kubernetes 群集。
在熱門科技新聞網站的論壇和留言區中,常聽到一種說法是,如果您有 OTP,就不用 Kubernetes。或者相反地,有了 Kubernetes 就不用 OTP 了。但事實上,Erlang 並不會取代 Kubernetes,Kubernetes 也不會取代 Erlang。如果 Erlang 系統不必像其他執行環境一樣受到監控與重新啟動,因為它有監控樹,那麼它就不會搭配提供 heart。同樣地,如果使用 heart
重新啟動整個程式就已足夠,那麼就不會有監控樹了。
Kubernetes 提供一個排程器,可以有效地將您的程式打包成容器,存放於實體或虛擬機器中。容器透過將所有依賴項(例如 Erlang 版本中的 OpenSSL)綑綁成一個單一映象,並且隔離保護,來簡化部署,予防機器上執行的服務之間發生依賴項衝突。此外,部署和管理會在您的生產環境中的所有服務間保持一致,不論它們是用什麼語言或執行環境建置的。當您將您的 Erlang 服務整合到常見的監控與追蹤服務時,您也可以確保它不再是同事避而遠之的怪胎。
但是,容器和 Kubernetes 並不適合所有情況。Kubernetes 可能過於複雜,特別是如果沒有託管解決方案可以使用,或者您的產品可能是嵌入式裝置時,就會有這個問題。