ここ数ヶ月でクラウド移行作業が自分の業務の9割を占めています。Fargate)をやってきて知見が貯まってきたので一旦まとめてみます。当初は何を考慮しなければいけないのかもよく分かっていませんでしたが、数をこなした結果、気をつけるポイントが分かってきました。Fargateで動かすのが目標ですが、GCPでk8sでも基本的に考える点は共通だと思います。秩父ミューズパークは、埼玉県秩父市および秩父郡小鹿野町にまたがる地域にある公園。本文には特に関係ありません。クラウド移行の話題は過去2回YouTubeライブで配信されているので、よかったら合わせてご覧ください。hiring!まずはクラウドに移すとにかく移行することが目的なので、リファクタリングやコードの改修はDocker化するのに必要な最小限にとどめる方針です。コードの改修が原因か切り分けづらくなりますし、移行完了までの時間も長くなるので、改修はあとまわしにします。環境ごとに変えるべき設定はできるだけ環境変数で渡せるようにします。ECSでは、秘密にしたい設定(パスワードなど)はSSMで、そうでない設定はタスク定義で設定することになります。アプリケーションの設定がどこに、どのように設定されているか確認します。設定ファイルにまとまっていればよいですが、設定ファイル以外にコード中に設定が埋まっている場合もあります。コード中から直接環境変数や、Javaならシステムプロパティを読んでいる場合もあります。これらの設定のうち、環境ごとに変えたい変数を環境変数で切り替えられるようにします。個人的にはDocker化する段階で直した方がよいと思います。無理に直して事故るのも恐いので、難しそうならそのままにします。ログはファイルに書き出す訳にはいかないので、すべて標準出力に書くことになります。モダンなloggingシステムなら、出力先をファイルから標準出力に変更することはそれほど難しくないと思います。logsに出すだけです。DBに書かないような利用履歴をログに書いて、それをBigQueryに送ったり、S3に保存したりすることの方が多いです。Bitで振り分けることになります。豊富なプラグインが揃っていますし、だいたいの用途はこれで解決できるはずです。個人的にはここが移行で面倒なポイントでした。フィルタしやすいようにアプリケーションの出力側の形式を修正したり、が意外と時間がかかります。EFSでマウントした領域に保存して、保存したログの処理はLambdaとか小さいEC2で何とかするものありだと思います。外部との通信を確認アプリケーションがどこに接続しているか、どこから接続されるか、を調べます。移行によってIPや経路が変わるので、接続先の設定を更新する必要があります。NATゲートウェイを通して固定のEIPでアクセスできるようにインフラ構築が必要になる場合もあるので注意が必要です。SecurityGroupにどのように設定するか、ALBの設定に関わるので、事前に把握する必要があります。監視はとりあえずCloudWatchとSentry現状の運用でどのような監視と通知を実施しているかを調べます。SNS経由でメールやslackで通知するくらいでした。定期的にCloudWatchのカスタムメトリクスでgoroutineの数を出力させました。最近ならばCloudWatch経由でPrometheusメトリクスを収集するのがよさそうです。www.m3tech.blogdocs.aws.amazon.comなお、エラー監視はオンプレでもSentryを使っているので、そのままSentryに任せています。sentry.ioバッチも忘れずにアプリケーション本体だけでなく、バッチがあればこれも移行が必要です。実行されていたのをそのままECSに移行しただけのパターンしかないので、まだあまり知見がありません。Taskなどが使えそうです。hiring!エムスリーのクラウド化推進はまだまだ途上で、課題もたくさんあります。簡単に移行できるサービスから順に移行しているのでこれからが本番です。一緒に参加してくれる仲間を募集中です。来週12/16にはSRE/基盤チームの説明会もあります。お気軽にお問い合わせください。9注目記事はてなブログをはじめよう!m3techさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。