---
title: "Rails 部署實踐 - 部署不是終點"
date: 2022-07-29T00:00:00+08:00
publishDate: 2022-07-29T00:00:00Z
lastmod: 2023-09-03T17:41:34+08:00
tags: ["Rails","教學","部署","實作","Rails 部署實踐","DevOps"]
series: "rails-deployment-in-practice"
toc: true
permalink: "https://blog.aotoki.me/posts/2022/07/29/rails-deployment-in-practice-deploy-is-not-the-end/"
language: "zh-tw"
---



當我們完成部署後是一個更大的任務開始，我們仍然還有許多的任務需要處理。舉例來說，我們還需要對網站加入各種類型的監控，並且持續的追蹤各項指標（Metrics）的變化，持續的改進。

<!--more-->

## 部署是開發的一環{#deployment-is-part-of-development}

這幾年 DevOps 已經廣為人知，從這系列的部署實踐中也可以看到，我們在專案建立的當下馬上就可以實踐部署，並非等到軟體開發到某個階段才能夠進行。

在一開始就進行部署也更容易的讓我們對產品進行測試，從敏捷開發的角度來看，持續整合以及持續部署是一個重要的環節，因為我們能夠馬上驗證開發過程中所遭遇的問題。

同時，在「產品」的角度來看，我們的目標應該是持續的提供功能改進以及維護現有功能，因此在專案建立的當下馬上進行部署，讓產品進入「可用」的狀態本身就是開發的一個環節，隨時確認我們開發的功能是可用的。

## 部署後要做的事{#after-deployment}

除了部署之外，我們還需要進行「維運」也就是維持服務的持續運作，因此有不少工具能夠在維運上提供許多幫助。

### Error Tracking

錯誤追蹤算是相當基礎的監控機制，有了這項機制我們可以更加快速的找到產品的問題。除此之外，這幾年大部分的 SaaS 服務價格也都調整到了一個大部分專案都能夠使用的水準，因此是非常推薦使用的。

隨著開發框架跟服務的複雜，單純使用錯誤紀錄來追蹤問題其實是相當困難的，如果有使用 Error Tracking 的服務，大多能看到完整的 Backtrace 資訊，以及一部分問題發生所使用的參數，因此是部署後優先推薦導入的服務。

### APM

APM 全名叫做 Application Performance Monitor 也就是追蹤效能的工具，這類產品大多收費昂貴，然而我們有許多在部署後才能夠觀察到的問題，往往需要仰賴 APM 工具的輔助，透過調整取樣率（Sampling）來選用適合的 APM 服務會對維運上有非常大的幫助。

在開發階段，我們可以仰賴像是 [rack-mini-profiler](https://github.com/MiniProfiler/rack-mini-profiler) 這類工具來追蹤一些效能問題。然而，在正式環境中還是有許多非預期的狀況需要有對應的工具才能追蹤到，尤其是某些我們沒有預想到的使用者行為，是很有可能在開發、測試環境都無法重現，直到正式環境因為使用者的使用方式才被觸發出來，而這些改進往往都能夠極大的改善使用者體驗以及營運的成本。

### 其他工具{#other-tools}

除了 Error Tacking 和 APM 之外，仍有非常多不同應用情境的工具可以輔助營運。舉例來說，如果我們是一個有大量內部、外部服務呼叫的系統，就可以搭配 Service Map（服務地圖）這類工具，可以幫助我們觀察在內外的呼叫中，哪裡耗費了大量的時間。

另一方面，也有不少針對伺服器的監控工具可以幫助我們觀察部署環境的健康狀態，或者利用各類監控應用，將服務內的指標（例如：活躍使用者數）記錄下來，呈現在儀表板中用於觀察等等。

## 後記{#after-note}

這篇文章剛好在七月底結束，從開始到現在也過了約半年的時間。然而我們仍有像是 AWS ECS、AWS EKS 等等不同的部署方案，以及像是部署環境的網路設定、基礎建設的規劃無法涵蓋到。

接下來的時間我會開始準備新的系列文章，同時也會繼續將「Rails 部署實踐」這一系列繼續改進、延伸，新的系列目前預定會在 2023 年開始更新，接下來的半年會以比較零星的方式更新，並且將這系列以線上課程的方式重新彙整。

如果有任何想要了解的主題、內容，都歡迎透過各類管道聯繫我跟大家分享。

---

如果想在第一時間收到更新，歡迎[訂閱弦而時習之](https://mailchi.mp/aotoki/rails-deployment-in-practice)在這系列文章更新時收到通知，如果有希望了解的知識，可以利用[Rails 部署實踐回饋表單](https://us4.list-manage.com/survey?u=dd3d68032c0510041f1302539&id=f25e0dc43e&attribution=false)告訴我。

