マネージドクラウドの上で自分たちのサービスを運用してみた話
はじめまして!開発チームのtascriptです。
普段はフロントエンドエンジニアとしてお仕事をしております。
今後ともよろしくお願いします。
早速ですが、こちらのリリースノートにてご紹介しましたカラーミーWPオプション、実はマネージドクラウドのNode.jsプロジェクト上で運用しています!ということで、今日はNode.jsプロジェクトをマネージドクラウド上で運用する時のTipsをちょっとだけご紹介します!
ちなみに簡単にカラーミーWPオプションの技術スタックをまとめると以下のとおりです。
・ Nuxt.js
・TypeScript
・TypeORM
・InversifyJS
・Yarn
「あれ?マネージドクラウドってYarn使えるの?」と思われた方はこちらの記事を参考にしていただけますと幸いです!
デプロイに関するTips
マネージドクラウドでは、gitを用いたアプリケーションのデプロイを実施することができます。また、より高度なデプロイを実施したい場合や、既存のデプロイツールを使いたい場合は、Capistranoなどsshを使用したデプロイツールを使用することも可能です。実際にカラーミーWPオプションの開発において、マネージドクラウドへのデプロイにはCapistranoを使用しています。ここではデプロイツールを使用する場合のTipsについて紹介します。
世代管理とファイル数
Capistranoを使用して世代管理をする場合はファイル数に注意して世代管理を実施してください。複数世代を残す場合はその分ファイル数の上限(150,000)を圧迫してしまうので、デプロイに失敗してしまう可能性があります。ちなみにカラーミーWPオプションの場合は1世代だけ管理しており、ファイル数は以下のようになりました。
世代管理については、アプリケーション内のファイル数と相談しながら世代数を決定することをオススメします。
Node.jsプロジェクトに関するTips
ここからはNode.jsプロジェクトに関するTipsを紹介します。
最大メモリサイズ
マネージドクラウドで提供しているコンテナのメモリサイズは512MBです。これを超えるメモリ容量を使用するとエラーが発生してしまうので、max-old-space-sizeなどメモリ使用量を設定するオプションが必要な場合は注意してください。カラーミーWPオプションでは、Nuxt.jsのアプリケーションをビルドする際に使用する最大メモリサイズを512MBに制限しました。(参考となるissue)
コンテナ起動時に起動するスクリプト
マネージドクラウドでは20分間アクセスが発生しなかったコンテナは停止する仕様になっており、起動時にはpackage.jsonのscriptsのうち、startコマンドが実行されます。アプリケーションの起動コマンドは startコマンドに記載するようにしてください。
{
"scripts": {
"start": "node ./index.js"
}
}
(余談)カラーミーWPオプション開発に関するお話
最後に、カラーミーWPオプション開発時の取り組みについて少しだけご紹介します。
ドッグフーディングを実施
ドッグフーディングとは自社のサービスを社員が自ら利用することで、サービス上の問題点や改善点の確認および発見を実施することを指します。今回のように自ら開発したアプリケーションをマネージドクラウド上で運用するといった試みは、チームとしても初だったのですが、リリース後に以下のようなことをチームで考えるきっかけになりました。
・マネージドクラウドを利用する上でのメリットはなにか
・マニュアルは充分にわかりやすいか
・マネージドクラウドへのデプロイは簡単か
・お客様の求めるサービスになっているか
マネージドクラウドチームではこれらを議論し、お客様にとってよりよいサービスを目指すべく、よりチーム一丸となってサービスの改善に努めています。もちろん「こんな機能が欲しい!」「こういうことで困ってるんだけど…」といったお客様からの声もお待ちしておりますので、こちらのお問い合わせからご意見、ご質問等いただけますと幸いです。
それでは、今後ともロリポップ!マネージドクラウドをよろしくお願いします!