---
# System prepended metadata

title: 2021 年 11 月

---

# 2021 年 11 月

- capistrano 
    - 可以做任何部署(拉 code)
    - 早期 devops 工具
    - 可以寫 ruby 判斷
- ansible
    - 執行指令的工具
    - 預期機器上有 python

- CI 持續整合
    - 寫測試
        - unit test
            - method level
        - feature test
            - RSpec (BTD)
                - 連 db
                - 一個功能的完整測試
        - integration test
            - service 跟 service 的串連(call api staging 環境)
            - 要有 CD 才做得到
        - QA 
- CD 持續部署
    - 把東西丟到可以跑的環境
    - ex: docker build
    - ex: capistrano
- immutable infrastructure
    - 每次都是新的環境
    - https://www.hashicorp.com/
        - Nomad (開一台中間溝通用的機器) 有支援 docker 
        - 全部加起來類似 k8s
        - Waypoint 類似 heroku
        - https://www.packer.io/docs
        - Packer 把機器需要的東西先安裝好
- 容器化
    - github action
        - 支援 windows、mac os 
        - open source 免費
    - container registries
        - https://containrrr.dev/watchtower/
            - 控管所有 docker 所以只要一個
            - 只能抓 latest
            - 自動更新 image
        - https://doc.traefik.io/traefik/providers/docker/
            - 統合 app
            - 拿 sso 憑證
            - load balancer
    - https://docs.docker.com/compose/networking/
    - rails db migrate 會 lock 所以不會有競爭的問題
    - lable 可寫在 docker image 或 docker-compose 裡，通常寫在 docker-compose
    - production 
        - nomad
        - ECS + Terraform
        - k8s
            - cron job