GMOペパボ株式会社

mrubyで実現したクラウドライクなサービスで、より快適な「表現する」場を提供したい

Ruby bizグランプリ2019で大賞を受賞した「ロリポップ!マネージドクラウド」は、GMOペパボのサービス「ロリポップ!レンタルサーバー」のプランのひとつである。
GMOペパボは福岡にて、「ロリポップ!」というホスティング事業で創業した。
本社を東京に移転した後もホスティング事業部は福岡にあり、今でもGMOペパボの主要な事業のひとつである。
今回は、「ロリポップ!マネージドクラウド」のサービスの主要技術のひとつであるHaconiwaを開発した、技術部 技術基盤チーム シニア・プリンシパル エンジニア 近藤 宇智朗氏と、ロリポップ!マネージドクラウドのサービスの開発、運用をしているホスティング事業部ホスティンググループ マネージドクラウドチームのプリンシパルエンジニア 小山 健一郎氏とサブマネージャー 尾川 いづみ氏から話を伺った。

〈 GMOペパボ株式会社の近藤氏と小山氏 〉

レンタルサーバーの弱みを解決できるサービス

「ロリポップ!マネージドクラウド」は、かねてからあった「福岡で新しいホスティングサービスを!」の思いを実現したものである。
歴史の長いレンタルサーバーを、クラウドライクに使えるサービスとして設計したもので、サービスの位置付けとしては、レンタルサーバーとクラウドの間を埋めるような位置にある。

レンタルサーバーでは、サービスなどがテレビの人気番組で紹介されたり、SNSで話題になると、想定外のアクセス急増に耐えられない場合がある。
しかもその仕組み上、自身のサイトだけでなく同じホスト上にある他のサイトも影響をうけてしまう。
解決策のひとつとして、クラウドに移行するという手段があるが、インフラエンジニアがいない組織では運用が難しく、外注すると運用コストが高くなってしまう。

「ロリポップ!マネージドクラウド」は、クラウドの利点のひとつであるオートスケールをインフラエンジニアがいなくても使えるサービスである。
インフラに詳しい人がいなければ、想定外のアクセス急増による思わぬ利用料の増加に驚いたりするのでは?という疑問に対しては、いわゆる「クラウド破産」のようなことにならないように料金上限の設定ができるようになっているとのことであった。

「ロリポップ!マネージドクラウド」を支える技術

このようなサービスの実現に大きく貢献しているのが、近藤 宇智朗氏が開発しているOSSのHaconiwa(https://github.com/haconiwa/haconiwa)である。
これは個人的な趣味で開発したものだそうだ。
Haconiwaについては、RubyKaigi2016にて近藤氏自ら「Welcome to haconiwa - the (m)Ruby on Container」( https://rubykaigi.org/2016/presentations/udzura.html )と題して発表している。

Haconiwaは「mrubyでプログラマブルなコンテナを作る」ことを目的として実装した、Linuxコンテナランタイムである。
Goで実装されているDockerに対して、HaconiwaはLinuxのコンテナ機能をRubyから呼べるように、mrubyでLinuxシステムコールなどのC APIのラッパーを実装したものだ。

また、mrubyを使いLinuxの機能をインターフェース経由で使う設計方針にしたため、作り込んだコードがLinuxのセキュリティアップデートに影響したりしない。
Linuxの得意な企業が自分たちの用途に合わせてチューニングするとパッチを直接当てられなくなるデメリットが大きく、結局チューニングをやめてしまった事例も聞くだけに、賢明な選択だと言えるだろう。
実際、ホスティングサービスを実装するには、「Linuxの機能をカリカリに使わないといけない」(近藤氏)のだそうだ。

「ロリポップ!マネージドクラウド」は、Haconiwaの他にngx_mrubyも使用している。これらを利用することにより、mrubyを使ってマネージドクラウドの構想を実現することができ、さらにRubyでLinuxの機能を使ったサービスの作り込みを可能にした。
実際にこのマネージドクラウドをRubyを使って開発し、今も機能拡張などを続けている小山氏によると、「Rubyを書いている気持ちで書けている」のだそうだ。
「mrubyのグルー言語としての側面をうまく利用できたと思う」と近藤氏も述べていたとおり、mrubyの特長を活用できている。
Haconiwaの開発は大変な部分もあったようだが、その上で動くRubyの実装を担当している小山氏は「開発効率がよく、サービスの変化に追従して実装できている」と絶賛していた。
すでに1年以上運用しており、内部的には細かいチューニングをしたりしているが、それらもすべてRubyのみで実現できている。

「ロリポップ!マネージドクラウド」を使って若手エンジニアを育成

プログラミングを始めようと思っても、開発環境構築に時間を取られてしまう、それどころか環境構築で挫折してしまうといった課題はよく聞く。
レンタルサーバーの利点として、サポートしている言語であれば、自分で環境構築しなくても、プログラミングをすることができる。「ロリポップ!マネージドクラウド」でもその点は同じで、さらに多くの実行環境をサポートしている。現在、Ruby on Rails、PHP、WordPress、Node.js、Golang、Python、.NET Core、Javaの8つに対応している。
この強みを活かして、プログラミング教育にも使用している。

GMOペパボは、教育支援にも力を入れている。
以前から社内研修の内容をテックブログで紹介したりしていたが、そこで得た知見をもとに社外向けの教育支援も開始した。
2019年より福岡市内の地名「大名」を冠した大名エンジニアカレッジ(https://daimyo-college.pepabo.com/)を開始し、そこでもRubyのプログラミング環境としてマネージドクラウドを活用しているそうだ。
これは未経験者を含むエンジニア希望者のためのカレッジであり、「この活動がRubyistを増やすことに貢献できるとうれしい」とのことであった。

その他にも、この「ロリポップ!マネージドクラウド」を「ロリポップ!」とともに、専門学校や高校に無償で提供している。現時点では全国の50校以上に増えているそうだ。

この受賞をきっかけにより多くの人に知ってもらい、利用してほしいとのことであったが、エンジニアのみなさんにもDockerとは違うHaconiwaを使って作られたホスティングサービスを是非試してみてほしい。

※本事例に記載の内容は取材日時点(2020年1月)のものであり、現在変更されている可能性があります。