7日目の記事でございます。皆様お久しぶりでございます。SREチームの@adachin0817です。タイトルの通り、SREチームではランサーズ内の各サービスをECS/Fargateへ移行する取り組みを行っています。その中でコンテナにしてよかったこと、課題等含めて振り返ってみたいと思います。2020/4〜去年にシクロマーケティング社がランサーズのグループにジョインされました。Creativeという月額定額制のクリエイティブサービスをAWSに移行することになり、初の試みであるECS/Fargateにチャレンジすることになりました。新技術への挑戦に対してかなり時間をかけてしまいましたが、この経験を元に他のグループ会社のインフラやランサーズをコンテナへ移行する計画を整うことができました。次に今年4月に移行してから半年ほど経ちましたが、移行して良かったことや、課題をまとめていきたいと思います。・開発メンバーだけでRuby/Railsを最新にバージョンアップができたEC2と比較すると、ランサーズではAnsibleを運用しており、我々SREチームへの工数がなんとしてもかかってしまいます。逆に開発メンバーにAnsibleを修正してもらうというのも学習コストもかかってしまいます。コンテナの場合はDockerfileで完結し、テスト等は開発環境やStg環境へCircleCIでデプロイすればいいので、バージョンアップ対応まで1ヶ月で対応することができました。基本的にはインフラやアプリ面、全て開発チームに任せることができ、インフラでのちょっとした相談で済むようになりました。Logsで確認することができました。KinesisでリアルタイムでS3にシンクしています。調査するために不要なSSHのportを開ける必要がないので、セキュアな環境が実現できたと思います。・コンテナ台数を増やすためにはタスク起動数を変更するだけで良いこちらもEC2と比較すると、AMIを取得、もしくはAnsibleで構築してアプリをデプロイするまでの工数がかかりますが、コンテナの場合はサービスのタスク起動数をTerraformで変更するだけなので、あっという間に構築が終わります。MacのファイルシステムがLinuxと違うため、ページ遷移が遅いという課題があります。OFFにすることで、ページ遷移が5秒から1秒まで高速化しました。開発環境が遅いことがあれば試してみてください。installに時間がかかってしまうことです。ここはマージ後に走らせるのではなく、commitしてpushするタイミングでコンテナデプロイするのが時間削減になるので修正していこうと思います。・コンテナでのオートスケールを経験していないまだまだ小さいサービスということもあり、負荷対策としてコンテナでのオートスケールを経験したことがないので、ランサーズ本家移行の時にテストをする方向でいきたいと思います。あとはTryでやっていきましょう!以下技術的な内容はブログ書いているので参考にしてください。Agency株式会社」のサービスをECS/Fargate移行計画が始まりました。このサービスはCakePHPで動いているので、ランサーズに近い環境となっております。PostifixからSendgridに移行、アップロード系の処理をS3へ移行が完了したところで、あとはStg環境で一通りテストができれば今月12月には移行できる予定です。コーポレートサイトはWordPressで動いており、こちらはコンテナに既に移行済みとなっています。移行後にやることは以下になります。・PHP/CakePHPのバージョンアップ現在PHPは5.5、CakePHPは2.5.4を利用しています。先月PHP8もリリースしたということもあって、SREチームと開発メンバー含めて対応していきたいと考えています。9月にアソビューさん、コネヒトさんで合同LT大会も行ったのでコンテナ活用について登壇させていただきました。技術的な部分は以下参考にできればと思います。ECS)を開催しました!【コネヒト×ランサーズ】コネヒトマルシェ「事業を支えるWeb開発」vol.2を開催しました。2020/10~現在10月からはMENTAがグループジョインされました。個人なお話になるのですが、副業でMENTAを使っているということもあり、一緒に仕事ができる!ということもあって、なかなか感慨深いところもありました。業務委託でMENTAのサーバーを全て管理していたということもあり、アクセス数も伸びているので、こちらもさくらのクラウドからECS/Fargateに移行することになりました。現状のインフラ移行について進捗を共有しましょう。ランサーズと同様の環境にするため、作り直しからプロジェクトが始まりました。今回は機能ごとに8つのコンテナで実装することにしました。Linuxで構築しています。LancersAgencyの開発環境を参考にしたということもあり、1日で実装することができました。MENTAではPHP7.2、Laravel5.4を利用していますが、今後バージョンアップをする予定です。・本番環境Stg環境は今までの構成とは少し違って、Redashやランサーズと同様に分析基盤/Embulk,Digdag,BigQuery(BI)を運用したいとのことで、コストダウンのためEC2で構築することにしました。それ以外はLancersAgencyと環境は同等です。現在は一部S3への画像アップロードが対応していないため、コンテナ内に画像がアップロードされてしまい、デプロイ時に消えるという現象が発生しています。こちらも早急に対応しているところです。Stg環境とは別に、本番のデータも見れるようにテスト環境を作りたいということで、もう一つAppコンテナを用意することになりました。こちらはランサーズと同じ運用でPrivate環境となります。Actionsを利用しているので、CircleCIに寄せようとしています。CIも動いているので、。コンテナデプロイはAPI経由でStg、Privateにリリース、Masterマージで本番リリースするように実装しています。Slackでもリリースを実装中です。1から2に移行を取り組んでいます。SRE/QAの金澤さん、QAのまみーさんが主体となって、CakePHP4にバージョンアップを行っています。その後管理画面をCake4とPHP8にしてからECS/Fargateに移行し、本体のバージョンアップが完了後、実施となる見込みになっています。長い時間をかけて取り組むという認識でございます。まとめ直近の課題としてはまずは今月中にLancersAgencyの各サービスを移行することと、MENTAの移行をやりきることですね!そしてSREチームが今どんな課題に向けて取り組んでいるのか雰囲気が伝わったかと思います。コンテナ移行以外にも改善するところはたくさんあります。©Lancers,inc.。