Published on

色々なマイグレーション、踏み台を試してみてCI、セッションマネージャ、EC2の組み合わせが最も楽だと知った

Authors

いろいろ試してきたので、メリデメ書いていきます

マイグレーション編

  • CIからECSタスク起動でマイグレーション
  • CIからLambda起動でマイグレーション
  • CIでセッションマネージャで踏み台と繋ぎながらマイグレーション

踏み台編

  • EC2と公開鍵
  • ECSとセッションマネージャ
  • EC2とセッションマネージャ

比較点

以下の通り整理してみました

  • セキュアか
    • 公開されたネットワークか?閉じたネットワークか
    • インスタンスはマイグレーション毎に新しくなるか
  • 高速か
    • 起動時間は長いか
    • 起動の前にデプロイが必要か
  • 実装が楽か
    • マイグレーションの基盤と踏み台基盤を兼ね合わせることができるか
    • CIからの呼び出しは楽か
    • インフラ構築が楽か
    • シェルスクリプトが複雑化するか
  • 運用が楽か
    • 秘密鍵の共有を強いるか
    • Sequel Proなどから接続は容易か
  • 費用は
    • 常時起動か、スポット起動か

まとめ

秘密鍵運用は避けたく、セッションマネージャを活用するべきと思いました。閉じたネットワークにも構築できるメリットもあります。

セッションマネージャとつなぐ対象をECSにすると、今日ではセッションマネージャの連携はスクリプト書いたりする必要があり、ハードルが高いです。

EC2にすると費用やインスタンスが常に新しくならないデメリットがありますが、実装がとても楽になり、踏み台としてもCIでのマイグレーションとしても、即時起動し完了する体験はとても大きく、ECSでなくEC2を採用するのには逆戻り感がありますが、EC2を選定しました。

また、この組み合わせが唯一マイグレーション基盤と踏み台基盤を兼ねることができると思っていて、トータルの実装でも楽です。

まだ課題というか対処できてないのがssh/configにセッションマネージャを起動するスクリプトをdirenvを活用しながらどう仕込むかですが、一度完成させれば許容できる複雑性だと思います。