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

複雑なサービスの開発環境 / Complex Service Development

reireias
July 04, 2019
850

複雑なサービスの開発環境 / Complex Service Development

我々のサービスは日々複雑になっていき、それと連動して開発環境もやはり複雑になっていきます。今回はそんな開発環境でよくある課題とその対策を紹介します。

reireias

July 04, 2019
Tweet

Transcript

  1. 自己紹介 自己紹介 侘美 怜 (たくみ さとし) Twitter: GitHub: Qiita: 2019年2月にメドピアへ入社

    SRE 兼 サーバーサイドエンジニア 趣味は猫を愛でること reirei_As reireias reireias
  2. 対策3: 直接PaaS/SaaSに接続 対策3: 直接PaaS/SaaSに接続 本番と同一のサービスを利用できるという点では良い 開発者が多いと辛くなってくる コストもかかる   対策4: 実装で切り替える

    対策4: 実装で切り替える できる限り採用したくない 例:本番やテスト環境ではS3に接続するが、ローカル ではファイルシステムを使う ローカルやCIでは実施されないコードが出てくる
  3. 対策2. VS Code Remote Development機能を使う 対策2. VS Code Remote Development機能を使う

    コンテナ内でVS Code Serverが起動する仕組み 既存のdocker-compose.ymlを流用して設定が可能 まだ試せていないが、かなり良さそう
  4. 3. Docker for Mac遅い問題 3. Docker for Mac遅い問題 課題:Docker for

    Macとホスト間のファイル同期が遅い 理由:MacのDockerはネイティブでない(間にxhyve) マウントなので、ファイルへのアクセス全般が遅い デバッグやテストのパフォーマンスが低下
  5. 対策1. Docker Volumeのオプションを利用する 対策1. Docker Volumeのオプションを利用する 以下のオプションを利用する consistent デフォルト cached

    ホストからコンテナへの更新の遅延を許可する コンテナ内のreadの高速化 delegated コンテナからホストへの更新の遅延を許可する コンテナ内のread/writeの高速化 例: が 486s -> 49s まで高速化 https://docs.docker.com/docker-for-mac/osxfs-caching/
  6. 対策1. Docker Volumeのオプションを利用する 対策1. Docker Volumeのオプションを利用する での設定例 version: '3' services:

    app: image: alpine:latest volumes: # <local path>:<container path>:<option> 形式 指定 - /path/to/app:/app:delegated
  7. before after 対策2. docker-syncによる同期の高速化 対策2. docker-syncによる同期の高速化 # docker-compose.yml services: app:

    volumes: - /path/to/app:/app # docker-compose.yml services: app: volumes: - sync-volume:/app volumes: sync-volume: external: true # docker-sync.yml version: '2' syncs: sync-volume: src: '/path/to/app'