Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マイクロサービスのローカル開発環境をTiltを使って2年運用して得た知見

 マイクロサービスのローカル開発環境をTiltを使って2年運用して得た知見

本スライドは次のイベントの発表資料です。
https://anotherworks.connpass.com/event/285380/

■概要
マイクロサービスのローカル開発をサポートするTiltというツールがあります。
弊社エンジニア全員が日々使うローカル開発環境をこのTiltベースに移行し、約2年運用してきてどうだったのか、工夫した点や辛みも交えながらお話します。
秘伝のstart.shを駆使してローカル環境を立ち上げているが、サービスの成長とともにそろそろメンテが辛くなってきたという方のヒントになれば幸いです。

SUZUKI Yoshiharu

July 08, 2023
Tweet

More Decks by SUZUKI Yoshiharu

Other Decks in Programming

Transcript

  1. 当時の開発環境(2年前) • 構成 ◦ サービスごとのdocker-compose.yaml ◦ それらを束ねる自前スクリプト • 自前スクリプト(up.sh) ◦

    全docker-composeを叩いて起動するのみ ◦ 開発で使わないコンテナは各自で落とす root ├── apps │ ├── serviceA │ │ ├── backend │ │ │ ├── Dockerfile │ │ │ └── docker-compose.yaml │ │ └── frontend │ │ ├── Dockerfile │ │ └── docker-compose.yaml │ ├── serviceB │ │ ├── ... │ └── serviceC │ └── ... └── up.sh 「開発に必要なサービスだけ起動する」が辛くなってきた…😢
  2. なぜTilt? • Q. docker-compose の depends_on を使えばよくな い? ◦ A.

    Yes. 最初はそのアプローチで進めていた • TiltにはLive Updateという機構がある。 → 別途抱えていた「ホットリロード不安定問題」の解消も 期待して採用。 Tiltとは • マイクロサービスの開発を支援するソフトウェア • macOS/Linux/Windowsの3つのプラットフォームに対応 • Tiltfileの記述言語はStarlark 6分
  3. Tilt導入による構成の変化 Before After d dc 自前スクリプト(up.sh) d dc d dc

    d dc d dc d dc Tilt(Tiltfile) d d d d ホットリロードの仕組みがあったりなかった り、新しかったり古かったり dc: docker-compose.yaml d: Dockerfile ホットリロードの仕組みは Tilt提供のものに統一 レイヤー 上 下
  4. 導入の工夫(移行、運用面) 【移行面】 docker-composeから上書きしながら進めることで 従来方式を壊さず開発。 【運用面】 • 利用ガイドを用意。 ◦ Tiltインストール ◦

    起動コマンド ◦ トラブルシューティングなど • メンテはみんなでできるように。 ◦ Tiltfileとdocker-compose.ymlの責務をコード コメントで書き、記述場所を迷わないように。 ◦ 2年間実績(2021年6月〜2023年6月) ▪ Tiltfileのメンテナー:29名 ▪ PR数:127 ▪ リソース数:75 d dc 自前スクリプト d dc d dc dc-tilt.yml Tilt(Tiltfile) (従来方式) (新方式) CMD命令上書き レイヤー 上 下
  5. 導入後の「うれしさ」「つらさ」 • うれしさ ◦ マイクロサービス構成を気にしない $ tilt up {codename} というコマンド一発の起動体験

    ◦ ホットリロードを任せられる • つらさ ◦ PCへの負荷が高い。サービスが増え続けて更に顕著に。 ◦ Docker Desktop for Macの不安定さ 12分