2015年と2016年の話

第1話
minneから始まる大規模な挑戦
第2話
次世代ホスティングとmruby
第3話
2016年のトレンド予測

2015年と2016年の話

第1話  minneから始まる大規模な挑戦
第2話  次世代ホスティングとmruby
第3話  2016年のトレンド予測

今回の登場人物

栗林 健太郎

栗林 健太郎(あんちぽ)
ネット上では「あんちぽちゃん」として知られる執行役員CTO。2016年も圧倒的コンテンツ力は健在。

柴田 博志

柴田 博志
Rubyコミッターとして世界に名を轟かせる愛されチーフエンジニア。2016年も引き続き愛妻家。

松本 亮介

松本 亮介
福岡勤務のシニア・プリンシパルエンジニア。知略と技術でチームの士気を上げる諸葛亮孔明的存在。

小田 知央

小田 知央
福岡勤務のプリンシパルエンジニア。複数サービスの裏側をモダンな仕様にする傭兵として暗躍。

伊藤 洋也

伊藤 洋也(ひろやん)
プリンシパルエンジニア。近年は新卒エンジニア研修など、教育体制の整備に尽力。

近藤 宇智朗

近藤 宇智朗(うづら)
福岡勤務のプリンシパルエンジニア。福岡Rubyコミュニティとの繋がりも深い。

高橋 健一

高橋 健一(けんちゃんくん)
シニアエンジニア。複数サービスの技術支援の他、プロダクトオーナーシップの勉強会も主催。

柳生 祐介

柳生 祐介(ぎゅうぎゅう)
シニアエンジニア。あんちぽちゃんとともにGMOペパボオーシーの技術フェローを務める。

※写真撮影は欠席のためコメントのみ掲載しています

あんちぽ
創業以来ペパボが提供してきた事業であるホスティングサービスに関しては、別の方法で改革を進めた1年でした。なぜかというと、ホスティングというのはサーバー運用そのものを提供するところがサービスの肝なので、他のサービスと同様にクラウド化して、運用が効率化できるわけではないんですね。ホスティングサービスにとってどんな1年だったのかは、松本さんからご説明いただけますか。
松本
入社前から、前職のときも研究者としてもずっと取り組んでいた技術の実装と研究を、サービスの提供で実践することに注力してきた1年でした。その実践を「次世代ホスティング」と名付け、お客さんの触る環境をもっと早くしたり、負荷対策や監視を動的に処理したりというプロジェクトに取り組んできました。
あんちぽ
「次世代ホスティング」の「次世代」には、どういった意味が込められているんですか?
松本
ホスティングサービスというのは10〜20年くらい前から存在していた歴史の長いサービスで、当時と同じ技術が常識として、今でもそのまま使われていることがあるんです。具体的に言うと、セキュリティ・運用・リソース管理等の都合から、超低コストを実現するための高集積のサーバーにはCGIを使わなければならないというのが当然のように思われていたりする。これまでの常識を覆す次世代のホスティングとして、もっと違うアーキテクチャを作りさえすれば、今の数十倍もの性能を出すこともできるんじゃないかといった考え方を元に仕組みを作って実際に導入して結果を出すという意味を込めています。実作業としては数ヶ月でかなり大きな変更ができたので、ペパボのインフラエンジニアのスキルの高さを改めて実感しました。
あんちぽ
2015年のペパボのホスティングは松本さんの予測に基づいて検証と開発を重ね、そのとおり実績を作ったんですね。では、2016年以降はどうなっていくと予測されているのでしょうか。
松本
さきほどのOpenStackやクラウドの話に象徴されるように、この先OSがどんどん自由に連携できるようになると、大きなホストOSの中で動くVMがプロセスと考えられるようになってくると思います。実際のOSの中と、OSの外にあるVMやコンテナのシステム連携というのは、構造的に同じ解釈ができつつあると考えています。このように重ね合わせて考えると、必然的に、例えばプロセスのように見えるVMをいかに早くフォークするか、あるいはスレッドのように解釈できるコンテナに置き換えて高速化できないか、という点に注目して、2016年は研究や開発に取り組んでいきたいと思っています。
あんちぽ
なるほど。以前松本さんと対談したときに出てきた「限られたひとつのシステムの中でいかに効率的にお客さんにリソースを提供するか」という点は、ホスティングサービスにおいてもその他のサービスにおいても、共通して次のステップの課題になってくると。
松本
はい。今は簡単にVMが構築できるようになって、システムも作りやすくなってきてると思うんです。それをふまえた上で、VMが作るシステム連携にOSの機能を見立てて実装できれば、より高いレイヤーにおける新しいOSを作りあげる事ができる。OSで活用されてきた技術はVMのシステム上でも必ず応用できると思っていて、例えばVMをより早く作ったり入れ替えたり、さらには、スケジュール管理したり相互にリソース管理したりできると、これまでとは発想から異なるようなシステムが作れる。そんなふうに、両者を重ね合わせて考えています。
あんちぽ
その「次世代ホスティング」でも重要な技術要素のひとつであるmrubyは、去年の座談会で、2015年に注目したいキーワードとして柴田さんが挙げていました。これに関しては、実際かなり予想通りになりましたね。
柴田
ペパボには今春、ngx_mruby開発者の松本さんも入社されましたし、この1年で大半のサーバーにmrubyやngx_mrubyが組み込まれました。mrubyに関わる動きはペパボに限らず、herokuのTerenceが作ったmruby-cliという、mrubyでCLIプログラムを簡単に書くためのひな型作成ツールを使って、mrubyで必要なライブラリーが全部格納されたファットバイナリなCLIツールを簡単に作れるようになりました。これまではGoで書くことが多かった分野なんですが、mruby-cliを使えば、RubyでOS X、Linux、Windowsのバイナリをクロスコンパイルしてバイナリを作ってくれる。つまり、OS XやWindowsのような個人の開発環境でCLIツールを作成して、それをLinux向けにフィールドしたバイナリを作成し、それをサーバーにアップして、何かを調査して通知するようなツールとして使うということが簡単にできるようになった。こういう動きを見ると、2015年はmrubyが普及したと言っていい1年だったと思います。
あんちぽ
mrubyというのはもともと機器向けの組み込み言語として開発されたものを、特に松本さんがWebサーバーの組み込み言語として採用したことが大きなきっかけとなって、機器だけでなくていろんなものに対する組み込み言語という位置づけに広がってきたのが、特に2014年から2015年にかけての流れでした。ペパボの中では来年以降、mrubyはどういう位置づけになっていくのでしょうか?
松本
RubyKaigiやRubyWorld Conferenceでも発表がありましたが、mrubyをWebサーバーに組み込むメリットを感じる人が増えてきた印象があるので、この流れは今後も続くと考えています。その後はミドルウェアだけではなく、OSが基盤になっているコンポーネントの設定を、mrubyで動的に書けるようになるといいなと思います。今の技術の進歩や背景に合わせてDSLでのOS間の連携ができるようになれば、例えばプロセスと見立てたVMやスレッドと見立てたコンテナに応用したときに、mrubyによって軽量かつ簡単にOSが持つ各種機能をネットワークを介して実装できるのではないかと考えています。
あんちぽ
2016年はオーケストレーションとシステム全体としての効率的なリソースの利用というのが、さまざまなレベルで課題になってくる。なぜ僕らがこんなにmruby活用を推進するのかというと、松本さんというキーパーソンがいるからだという理由は当然あるんですが、課題解決のために既存のものを改善していく必要が出てきた場合に、インフラのレイヤーとアプリケーション開発のレイヤーを技術的につなぎやすいmrubyはまさに最適な言語だというのが大きな理由だと感じています。例えば僕とうづらさんが開発に取り組んでいるlibpam-mrubyで実現しようとしているのは、外部にあるアカウント管理のアーキテクチャとOSを連携させることで効果を最大化できるツールなので、まさにインフラと開発のレイヤーの架け橋であるmrubyという言語がその効力を発揮した例だと考えています。
うづら
ロードバランサの仕組みにおいてもmruby-ipvsのようにmrubyを活用してオーケストレーションできないかと取り組んでいる最中です。あとは松本さんが最近作られた、rconというmrubyを使ったサーバーのリソース制御の技術は次世代ホスティングでも実践できそうな技術ですし、この調子でmrubyを使う流れをどんどん作れたらなと思っています。
あんちぽ
昨年の座談会でもうひとつ話題になっていたのがMicroservicesの波が来るぞ、という話なんですが、ペパボでも実践が行われ始めた1年でしたね。カラーミーショップでは、APIとカートの部分を切り出してRailsで作り直した新しいショッピングカート機能をリリースしました。単にそれで終わりではなく、そのAPIをベースにサービスを提供しているコンポーネントを新しくしていったり、置き換えていったり、作り直したり、いろんなことをやっている。カラーミーショップに限らず、他のサービスでもMicroservices化の流れは今後も続くぞというのが2016年以降の予想ですね。
うづら
今はひとつのサービスの中でも、機能や役割がどんどん複雑化する方向にあると思うんですが、Microservicesの流れに乗りましょうという動きと、サービスを協調させるツール―例えばDockerにおけるKubernetesや、CoreOSを使おうとする動きがきちんと連携できている段階ではないと感じています。今はツールの機能に合わせてオーケストレーション層の自動化をするという流れが主流のように見受けられますが、そうではなく、現実の要件に合わせてツールを動かすという考えにこれからはシフトしていかなくてはならないというのが僕の考えです。ちょっと話が大きくなってしまいましたね。
あんちぽ
いや、僕もうづらさんのおっしゃるとおりだと思っています。ペパボが今取り組まなければならない課題は、Web業界全体として取り組むべき課題に一致するという考え方もできると思うんです。


~第3話へつづく~