CodeIQ MAGAZINECodeIQ MAGAZINE

GMOペパボの新技術「Haconiwa」、新アーキテクチャ「FastContainerアーキテクチャ」とは?

2017.01.12 Category:勉強会・イベント Tag: , , ,

  • 49
  • このエントリーをはてなブックマークに追加

個人向けインターネットサービスを提供しているGMOペパボ。GMOペパボが開発した新技術やアーキテクチャとはどのようなものなのか。また、どんなエンジニアがどんな環境でそれを実現しているのか。
ホスティングサービスの開発運用を行っているGMOペパボ福岡支社(以下、ペパボ福岡)のエンジニアたちが、12月12日に実施された勉強会で明らかにした。
by 馬場美由紀 (CodeIQ中の人)

転職者が明かす「GMOペパボとはどんな会社か」

GMOペパボは、レンタルサーバー「ロリポップ!」やブログサービス「JUGEM」、ネットショップ運営サービス「カラーミーショップ」、日本最大級のハンドメイドマーケット「minne」など、さまざまな個人向けインターネットサービスを提供する会社である。

12月12日、同社本社が入っている渋谷セルリアンタワーのコミュニケーションスペース「GMOインターネットグループシナジーカフェGMO yours」で、ペパボ福岡の技術力とワークスタイルなどについて紹介するイベント「GMOペパボ ホスティング技術カンファレンス~破壊的イノベーションをおこす革新的技術~」が開催された。

最初に登壇したのは鹿児島県出水出身のエンジニア、山下和彦氏。セッションタイトルは「ホスティングと僕の継続的成長」。

GMOペパボ株式会社 ホスティング事業部 チーフテクニカルリード 山下和彦氏

山下氏は家電メーカーのSEとしてキャリアをスタートさせ、ISPでエンジニアを経験。そしてWebエンジニアとしてGMOペパボに入社。

「当時はコードをほとんど書けなかった」という。現在、STNS(サーバーレスでLinuxのユーザー管理を行うことができるシステム)の開発に携わっている。

山下氏のセッション概要は以下の通り。

ホスティング事業部に所属する山下氏の仕事は「ロリポップ!」や「ムームードメイン」「heteml(以下、ヘテムル)」というサービスを、横串でよりよいサービスにするための開発を行うこと。

「ロリポップ!」は01年11月から、「ムームードメイン」は04年1月から、「ヘテムル」は05年11月からというように、いずれも10年以上も継続してサービスを提供している。

しかも現在もこれらのホスティングサービスは同社の売上高の過半を占めている主力事業であり、いまだに成長中である。

継続的に成長するために大切にしていることは次の3つ。

第1に仕組みを変え続けること。レガシーなアーキテクチャは利益を生んできた資産だが、メンテナンス性も開発効率も悪く、モチベーションも上がりづらい。

そこで資産活用しつつ、新しい形へ変化し続けるのである。例えばデバッグ情報の通知も、00年初頭と比べると次のように変化している。

今風の仕組みを既存システムに組み込むのは難しいが、そこに技術的チャレンジの面白さがある。

さらに収集した情報を基に施策を実行し、検索を分析してサービスを改善するという新たなアプローチも行っている。改善するのは既存システムだけではない。

インフラエンジニアもサーバーの監視アラート数などのデータを取り込み指標にするようになった。運用も変化し、メンテナンスコマンドはGolangに移行、サーバー負荷の動的な制御も自動で行えるようにしている。

第2はアウトプットすること。GMOペパボの大切にしてほしい3つのことの1つでもある。アウトプットすることで研鑽と整理とフィードバックのサイクルを回すことでより成長できるからだ。

ここで言うアウトプットとは、社内外のカンファレンスで発表することだけではない。自分で勉強や研鑽した結果を業務で発揮すること、業務で使うソフトウェアも抽象化してOSSとして社外に開示することなども含まれる。

第3はチャレンジし続ける文化があること。GMOペパボではチャレンジに対して寛容で、万一、チャレンジに失敗したときは「nice try」と声をかけることにしている。

こうすることで、チャレンジし続けるモチベーションが維持できるからだ。そして再び失敗したときは、組織的な解決を行っている。

この3つが揃っていることで、当社のサービスは成長し続けることができると考えている。

では次の10年に向けてどんなことを考えているのか。私たちがやりたいことは非常にシンプルで「破壊的技術を生み出し、伝説を作る」ことである。

ハーバード・ビジネス・スクールのクレイトン・クリステンセン教授は「The Innovator’s Dilemma(イノベーションのジレンマ)」の中で、イノベーションには「破壊的イノベーション」と「持続的イノベーション」があるというが、これまで当社が既存サービスにおける取り組みは、持続的イノベーションだと言える。

そして次の10年こそ、破壊的イノベーションに取り組んでいくということだ。今検討しているのはクラウドサービス、VPS、レンタルサーバーなど、その分野に対して新しい何かをやっていきたい。詳細については次以降のセッションで話す予定だ。

Webアプリケーション開発未経験で、なぜGMOペパボに転職できたのか

続いて登壇したのは、16年10月1日に入社したばかりの中村光佑氏。セッションタイトルは「一歩踏み出した先にあったもの」。

GMOペパボ株式会社 ホスティング事業部ムームードメイングループ 中村光佑氏

中村氏の前職は、社会インフラシステムのソフト開発エンジニア。なぜ、GMOペパボに入社するに至ったか、その経緯などについて語った。

前職の職場は働きやすい職場だったが、入社から3~4年経った頃、自分のキャリアについて考えるようになった。

中村氏が目指すエンジニア像とは、「今までに世になかった技術を具現化できる」「事業を差別化できる」「今あるものをもっとおもしろくできる」という人である。

ここにいると、自分が目指すエンジニア像にはなれないと感じたのだという。

とはいえ、転職という行動になかなか踏み出せなかったが、そんな背中を押してくれるきっかけとなったのが、16年2月中旬に東京で開催されたGMOペパボ主催のイベントに参加したことだ。

「福岡で働く」というワードに惹かれたのだ。同イベントに参加して、ペパボのサービスやエンジニア環境、福岡では働くことについて知り、本気で「この会社いいな」と思った。

そして今回は、「今動かなかったら一生無理。2~3年後に後悔したくない」という気持ちが強くわき起こり、自分の覚悟ができたのだ。

そしてタイミング良く、周囲の状況も変化した。所属しているチームの人数が3人から5人に増えたのである。

しかもちょうどよいタイミングでペパボカレッジ(以下、ペパカレ)が開校され、1期生の募集が始まったのだ。これによりWeb業界に転職する心理的ハードルが下がったというわけだ。

GMOペパボを転職先に選んだ理由の第1は自社サービスを開発・運営しており、エンジニアたちのやる気とスキルがあれば、何でもやらせてもらえる環境だったからだ。

第2にエンジニア職位制度が用意されており、エンジニアとして成長できる環境だったからだ。またアウトプットの文化により、会社や所属エンジニアについての情報が豊富だったこと。

第3は福岡支社があったこと。大学は福岡で、いつか福岡に戻りたいと思っていたからだ。

第4は面白そうな会社だったこと。会社説明会でヘビメタが流れたり、佐藤社長と栗林CTOがヒップホップユニットを形成していたり、そのユニークさに惹かれたのだ。

そして最後の理由は、縁があったこと。イベントの開催やペパカレ募集のタイミングが、転職タイミングとぴったり重なった。

入社して約1カ月間は、ペパカレでWeb開発研修を受講。フロントサイド、サーバーサイド、インフラ開発を一通り経験するなど、濃密な時間を過ごすことができた。

配属後もチーム開発で必要な基礎知識を習得、GitHub Enterpriseでのプルリクエストの出し方やSlackの使い方なども習得できたので、すんなりチームに入ることができた。

また中途採用ながら同期が4人いることも良かった。ペパカレについては、ペパボテックブログで紹介されているので、興味のある人はぜひ、読んでほしい。

一歩踏み出した先にあったものは、自分が目指すエンジニアへのスタートラインに立てただけではなかった。

今の環境はいるだけで成長できる環境に所属できたということ。次どんな技術を使って何をやりたいか議論ができ、幅広い技術に触れられ、自分の得意分野もよくわかる。

そして高度な専門技術を持つエンジニアが集まっており、そんな彼らと切磋琢磨できるのだ。だが、それだけではない。

GMOペパボは社内外の様々な場所で情報交換をしている会社の枠を超えたオープンコミュニティを形成しているのである。だから面白い技術が作れていると思う。

今はとにかく勉強して、チームの先輩エンジニアたちに追いつくことが第1の目標。

そしていろんなサービスを面白くしていきたい。最後にこの言葉で締めくくりたい。

まずは自分の人生から破壊的イノベーションを起こせ!!

Linuxコンテナエンジン「Haconiwa」とは?

3番目に登壇したのは、福岡勤務4年目の移住組である近藤宇智朗氏。セッションタイトルは「Haconiwaの中身 – コンテナエンジンをmrubyで作るには」。

GMOペパボ株式会社 技術部 技術基盤チーム プリンシパル 近藤宇智朗氏

近藤さんは学生時代および就職期間を含め、10年ほど東京で過ごしていたという。Ruby on Railsなどを書いていたが、今はシステムプログラミングを主食にしている。

近藤さんのセッション概要は以下の通り。

「Haconiwa」とはLinuxコンテナエンジンの1つである。コンテナエンジンとはすばやく小さく独立した「OSのような」環境を作る一種の仮想化技術。

最近注目を集めている「Docker」や「LXC」「rkt」「OpenVZ」などがある。VirtualBox/KVMのような仮想化とは違い、CPU等のエミュレートやOSカーネル自体を含まない。

Haconiwaの主な特徴は、Namespaceやcgoupなど、Linuxコンテナを構成する様々な要素・機能を自由自在に組み合わせることができること。

なおかつ、その組み合わせるための内部DSLをRuby(mruby)で記述できる。RubyKaigi2016でも話しているので、その内容を聞きたい方はこちらを見てほしい。

これまでDockerやLXCに触れてきた。それらと比較してもやりたかったことを実現するために開発したのが「Haconiwa」である。

Dockerはすごく良いコンテナエンジンだが、コンテナの各属性・コンポーネントが非常に密につながっているという問題点がある。特にファイルシステムについては運用が難しい。

一方のLXCもDockerよりも古くから作られているコンテナエンジンでこちらもすごく良いが、動的に設定できる項目が限定的という問題点がある。

そこで、より柔軟に利用するコンテナ要素を選択でき、なおかつそれをプログラマブルに制御したいという思いから、Haconiwaを開発したというわけだ。

Haconiwaは実質、1カ月ぐらいで基本を作り上げた。ここでデモを実施。Haconiwaの使い方について紹介した。

Haconiwaの展望としてはより柔軟さを追究していきたい。

コンテナの柔軟さとは、プログラムによるリソースの割り当ての制御や停止フック、シグナル受信時のフックの定義、イメージ作成手順のmrubyによる記述の自由度の高さ、不要なコンテナ機能の無効化による高集積化などが挙げられる。

例えば起動時のリソース状況でcgroupの割り当てを変えたり、起動中に動的にcgroupの設定を変更できたり、状況を見てコンテナを自動で落としたり立ち上げたり、さらにはスナップショットを撮って高速に立ち上げたりすることができるようにする。

つまり、複雑化・多様化する運用条件をDSLによる制御で対処できるようにすること。コンテナはスレッド的にAPIを通して自在にコントロールできることなどを目指していく。

FastContainer構想により、DAOS(Dimension-free Autonomous Operating System)が提案された。コンテナを1つの生存期間の区切られたスレッドと捉えると、DAOSの用語でいうとMortalとなる。

その場合、Haconiwa(internal API)で実現している抽象化レイヤが存在するなら、それはシステムコールに相当すると言える。

つまりDAOS/Haconiwa internal APIをベースとした新しいスタックを提案できるのではと考えている。

今までのOSは1つだけで完結していたが、クラウドの世界はそうではなく、いろいろなOSを共存させていくことが求められる。

FastContainer構想に対応する機能の拡充、CRIUとの連携強化、フック処理の拡充、DSLの機能追加、Haconiwaの中間層の抜き出しと抽象化などの開発を進め、今までにないようなホスティングのサービスを提供したい。

Haconiwaの普及に向け、チュートリアル的なものの提供についても考えていく。

インターネット利用者が快適に表現できる場所を提供する「FastContainerアーキテクチャ」

最後に登壇したのは、16年7月に新設されたペパボ研究所の主席研究員兼シニア・プリンシパルの松本亮介氏。

セッションタイトルは「FastContainerアーキテクチャ概論 Reactive, Stateless and Mortal Architecture for Web Applications」。

GMOペパボ株式会社 ペパボ研究所 主席研究員兼シニア・プリンシパル 松本亮介氏

FastContainerというアーキテクチャで実現したいことは、インターネット利用者が快適に表現できる場所を提供することである。

例えばよくあるオートスケールは、利用者に独自仕様を要求するため、自動的にリソースを割り当てすることは、エンジニア以外には難しかった。

またよくあるスケールアップの場合、VPSのイメージをスナップショットし、性能良いVPSにイメージを適用して再起動するということが必要で、リアルタイム性が低く、これもエンジニア以外には難しい作業だった。

よくあるスケールアウトは高負荷時に手動でVMを追加する、もしくは負荷に応じて自動でVMを追加するのであれば、高度なスキルが必要だったりした。

つまりレンタルサーバーのように始められてVPSのように自由度が高く、クラウドサービスのように拡張性が高いWebアプリケーションのホスティングサービスが欲しい。

同時にシンプルで運用しやすいシステムアーキテクチャを実現したい、という思いがあった。技術で実現したいことは大きく利用者目線と事業者目線に分けて考えた。

利用者目線としては、専門的知識がなくてもいいように、使うための独自仕様が極力求められないこと。そしてコンテンツ以外はマネージドが可能で、将来的にはVPS的な使い方を見据えた設計であること。

さらに再起動することなく即時スケールアップが可能で、リクエスト契機でオートスケールアウトが可能であること。アプリケーション起動中だけ課金対象として、イベントドリブンでアプリケーションの起動を可能にすることである。

一方の事業者目線で実現したいことの第1は、複雑なシステムコンポーネントの連携を減らすこと、状態を持つ・持たないを明確に分離すること、切り分けはメンテナンスなど、運用しやすいシステム設計をすることである。

これを実現するために思いついたのが、FastContainerアーキテクチャである。

これまでのWebアプリケーションのプロセスの考え方としては、immortal(死なない、不死身の)が求められてきた。

またバッチ処理やツール類は概ねshort-lived(短命の、つかの間の、はかない)が求められてきた。そして私たちが求めているのはmortal(死を免れない、死すべき運命の)。

生きている間は凄く頑張るというプロセスのアーキテクチャを考えることとなった。そこで参考になるのが、FastCGIモデルである。

これはWebサーバーでCGIを実行するための1つのアーキテクチャである。

図を見れば分かるとおり、

非常にmortalな振る舞いをする。FastCGIのメリットはCGIと比較してリクエストごとのプロセス生成・破棄を行わないため性能が高いことだ。

また一定時間でプロセス破棄が行われるため、プロセス数が増え続けることなく離ソール効率も比較的良い。

つまり「CGI is short-lived, http is immortal」である。さらにFastCGIをモダンに考察してみると、イベントドリブンにWebサーバーが起動でき、イミュータブルさも実現している。

一定期間プロセスプールナ可能な処理方式となっており、ReactiveでStatelessに動作するmortalなWebサーバーモデルだとも言える。

FastCGIを応用すると、起動対称はCGIからコンテナとなり、コンテナ起動が遅いものはCRIUでイメージ化する。

リクエスト契機でコンテナを起動させることになるので、起動が速く応用可能なのではという発想に至ったのだ。

そして実現したのが、FastContainerである。FastContainerはWebアプリケーション実行基盤としてのFastCGIを実現する。

つまりタイトルでも示したように、「FastContainer is reactive, stateless and mortal architecture for Web applications.」である。

フローは図の通り。コンテナが起動していない場合はCMDBからコンテナ情報を取得して、Local Web Proxyが起動指示する。

システム管理側の特徴としてはCMDBに収容先を追加するだけでスケールアウトが可能。スケールアウトしても不要になれば、勝手に停止できる。

コンテナなので起動したままスケールアップが可能となり、コンテナのホスト間移動や複製・破棄も容易になる。

システムやライブラリが都度最新の状態を確保できるようになる。エンジニア以外の人たちでも使えるよう、このような新しいアーキテクチャを提案した。

今後の取り組みとしては、FastContainerのように破壊と再構築をmortalに行いながら、動的に平衡状態を保ち、その他コンポーネントはネットワークを介して包括するシステムの開発を目指す。

それを「Dimension-free Autonomous(DAOS)」と定義。DAOSにおけるプロセスは動的平衡の系にあるVMのようなものであり、DAOSにおけるスレッドはFastContainerのコンテナのようなものである。

そしてDAOSにおけるスレッドをMortalと命名している。DAOSを基盤としたなめらかなシステムの開発を目指していく。

ペパボ福岡とはどんなところか。開発している最新技術および、その開発に従事している人たちの素顔が見える勉強会となった。

  • 49
  • このエントリーをはてなブックマークに追加

今週のPickUPレポート

新着記事

週間ランキング

CodeIQとは

CodeIQ(コードアイキュー)とは、自分の実力を知りたいITエンジニア向けの、実務スキル評価サービスです。

CodeIQご利用にあたって
関連サイト
codeiq

リクルートグループサイトへ