LoginSignup
3
1

More than 5 years have passed since last update.

ロリポップマネージドクラウドを使ってSPAを作った話

Last updated at Posted at 2018-12-10

概要

この度、ロリポップマネージドクラウドが年末まで利用無料となっております。
ふとしたきっかけでそれを知ったので
さくっとGolangプロジェクトを作って遊んでみました。
その時に詰まったことや気づいたことなどを共有しておきます。

結論を急ぐと、AWSやHerokuに比べてリリースまでが楽で速いため、
「多少お金を払ってもよく、小規模なWebアプリをさっさとリリースしたい」
といった場合は導入を検討するといいかもと思いました。

ロリポップマネージドクラウドとは

ロリポップマネージドクラウド
詳細は上記公式ページをご覧ください。
早い話がGCP等と同じようにコンピューティングリソースを使用できるサービスで、
月当たりの金額が安くなっております。オートスケールとかもできます。
SSLも当然対応(LetsEncryptのドメインベースのやつ)
ロードバランシングとか結構奥まった設定のチューニングはあまりできないです。
その代わりこちらで管理/把握する部分が少なくて済むので、
フロント出身エンジニアのサンドボックスにするといった使い方とかもありだと思います。
注意点としてはDBがMySQL固定で、容量も500M程度が許容範囲となるのでヘビーな利用は慎重に。

対象読者

数あるバックエンドサービスの中でも新しい選択肢を検討する方

投稿背景

1:ロリポップマネージドクラウドを使ってみて、ドキュメントの少なさが気になった為
2:品質はどうあれ、アウトプットすることで各種界隈の盛り上がりに1cmでも寄与する為

何作ったん

StarCraft Battle Timer
esportsとして今めちゃくちゃアツい高難度RTS:StarCraftII
の対戦支援SPAです。
(ゲームは基本無料ですが日本語に対応していないので英語力を強化したい方におすすめです。)

スマホで使うことを想定しています。
使い方は簡単、対戦開始と同時に相手種族のアイコンをポチっと押すだけ!
理論上の最速だと何分ごろどんなテックが上がっているかをプレーしながら横目で確認できます。
戦術Wikiに時間付きテックツリーはあったんですがパッチVerが古めだったので異なっている部分もあり作りました。
マネージドクラウドの無料化が終了するころには撤収予定。

後述の理由によりほぼフロントのみで開発しました。
バックエンドの立ち上がる部分のみgoLangを使用しています。
ロリポップマネージドクラウドのコンテナ起動時コマンドにGolangを指定できるので、任意のgolangファイルをあらかじめSCPで配備して権限を切っておくだけでできます。

環境はWIndows10 × Chrome × Brackets です。

良かったところ/気づいたところ

・ロリポップマネージドクラウドの管理画面は見やすい(設定項目が少ないので)
・公開鍵を設定して簡単にSSH/SCP接続ができるのがよい。
→GCPやFireBaseHostingだとこう簡単にはいかないので、これは結構ありがたいと思います。

・Golangを初めて触りましたが、実行環境別にクロスコンパイルできるってすごいですね。
良いぞ良いぞとは言われてましたが、今回良さの一角を垣間見ました。

つまったところ

・MySQLがSSHコンテナ上コマンドからもgolangファイルからもクライアント側からも接続できない!
これは本当に詰まりました。そして諦めました。
ネット上でもなかなか取り組んでいる記事が見当たらず、、、SPAで使うデータ量が少なかったことと、リリースを優先するためにDBの使用をあきらめております。
ちなみにGolangプロジェクトでは、Linux-amd64系にnginx/MySQL/golangが載っているような構成でした。

consoleのMsg.
can't connect to local mysql server through socket '/var/run/mysql/mysql.sock' (2)

このエラー自体の対策記事は結構あるんですが、ググりまくってあれこれ試してもメッセージが変わらず。。。
MySQLのエラーログファイルも結構探したんですがそもそも見つかりませんでした。
ロリポップマネージドクラウドのコンテナ自体の挙動や仕様に関係があるのか切り分けしきれませんでした。
ここに関しては、もし何か明らかになったら更新しようと思います。

・公式ドキュメントがまだ少し寂しい。
プロジェクト自体はPHP/Ruby/Node/Python/Wordpress/golang
とあるのですが、WebアプリのDB接続についてはRubyのみ記載、
MySQLのクライアント接続はMacのみ記載、など「ドキュメント充実」といった感じではないです。
ドキュメントの今後のそろい方次第ですが、情報が多いプロジェクトを選択するのが良いでしょう。
チャレンジャー根性でgoLangプロジェクトに突撃した私は無事折られました!

まとめ

PHP-LumenやRoR等であまりこみいった事をせず,ド王道のCRUDを使った定番Webアプリをさくっとリリースする という使い方が最も良さを生かせるんじゃないかと思います。
StaticなHostingはFireBaseがあるし、サーバ構成から煮込みたいならAWS/GCPがあるので、
当然ですが要件によって使い分けていきましょう。

以上です。
御観覧頂きましてありがとうございました。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1