こんにちは、 ポエムおじさん エンジニアの @karia です。
2015年のanimateLAB Advent Calendarは明日を残すのみとなりました。クリスマスイブの記事という大役を自ら押さえてしまったのですが、タイトルからお察しの通り内容はなんとポエムです。ポエムについての詳しい説明は、弊社CTOの小芝が記事を書いておりますので省略します。
上記の記事におけるポエムの文脈はあくまで「社内においてポエム文化を広めた事例」ですが、この記事では敢えて開発者ブログで公開ポエムを書くことに挑戦します。
この記事は animateLAB Advent Calendar 2015 24日目の記事です。
最高のITインフラってなんでしょう
さて、私が最も長く深く経験しているのはインフラ業になります。IT業界以外の方が、インフラと言うと想像するのは「土木建築」「公共交通」といった分野かと思います。が、当然ながらここで言うインフラとは ITインフラ のことです。ITインフラの定義について話し出すとそれだけで1ポエムになってしまうのでここでは割愛しますが、ざっくりとサーバーやクラウドのことを想像してください。
※ITインフラのイメージ *1
今回は、私が考える「今、最高のITインフラを目指すとしたらこうだ」について綴っていきます。
バズワードに囚われない考え方を
で、いきなり結論から言うと「今、最高のITインフラの構築手段」は ケースバイケース です。「全然結論になってない」と思われるかもしれませんが、順序立ててお伝えしていきます。
企業においてITシステムを稼働するにあたり、何らかのインフラを用意する必要となります。インフラアーキテクチャの選択肢は、大きく分けて以下のようなものがあります。
- オンプレミス環境
- プライベートクラウド
- パブリッククラウド・IaaS
- CDN・PaaS・SaaS
個別用語の解説についてはここでは割愛させていただきますが、このリストは下に行くにつれてマネージドサービス(インフラ提供元の企業にお金を払って構築・管理・運用を実施してもらう)の割合が高まっていく傾向にあります。しかし、「傾向があります」というだけでそこまで単純な話ではありません。
たとえば以下のようなX社の事例を考えてみましょう。
X社がラックをDC事業者から借りて、自社でサーバーマシンを多数購入・設置し、OSインストール・VMのホスト管理も社内で行い、社内各プロダクトにVM単位で提供する
これは分解して表にすると以下のようになります。
モノ | 利用形態 |
---|---|
土地 | データセンター事業者が所有 |
建物 | データセンター事業者が所有 |
ラック | データセンター事業者が建物内に所有・設置し、X社に丸ごと貸与 |
ハードウェア | X社が購入しラックに自力で設置、管理 |
ホストOS | X社が自力でインストール |
VM(ゲストOS) | X社内の各プロダクトにて管理 |
この事例を最初の選択肢に当てはめるには何と呼べばよいでしょうか。「オンプレミス環境」?「プライベートクラウド」?それとも「オンプレミスクラウド」でしょうか。確かに、各プロダクトからするとホストOSやハードウェアの層は意識しなくてもよいので、クラウド と言えなくもありません。
結局のところ、最初に挙げた「インフラアーキテクチャの選択肢」に出てくるワードはよく言うと大分類、悪く言うとバズワードであり、明確な定義はないと思っています。バズワードにとらわれずに各アーキテクチャのメリット・デメリットを考え、各要素としてのクラウド技術や仮想化技術の良い所をプロダクトに取り入れていくことが大切です。
今度は視点を変えてみます。ITインフラを利用する上で、クラウドの良いところって一体何なのでしょう?
キーワードは前述した「マネージドサービス」です。誤解を恐れずに言ってしまうと、要するに「札束を叩いて管理して貰う」ということですね。サーバーのハードウェアやミドルウェアの構築・チューニングにはそれなりの時間がかかります。企業にとって時間はコストの一つです。時間をお金に換算するのは中々難しいものですが、決して無視できないコストだと私は考えます。
では、どこまで「マネージドサービス」に依存するのが良いのでしょうか。ここが冒頭で申し上げた通りケースバイケースだと言いたいのですが、それだけでは何の参考にもならないと思うので具体的に3つほどポエってみます。
【1】 時間帯や季節によって極端にトラフィックの増減が激しいサービスの場合
これは明らかにパブリッククラウドの出番でしょう。時間単位課金のパブリッククラウドなら柔軟に構成をスケールさせることが可能で、事前に巨大なスペックのサーバーを準備しておく必要がなくなります。
厳密に言うとこれはマネージドサービスの最たる例で、クラウド事業者が利用者に変わって巨大なサーバー群を用意しており、利用者にうまく切り売りしているわけです。利用者としては、いかに小さく買っていくか(無駄なリソースを買わないで済ませるか)に注力すると結果としてオトクになるし、逆にユーザーが求めているのであればどんどんリソースを追加してトラフィックに耐えられるようにしていくべきです。もちろん、何も考えずにリソースを追加していくと札束が無限に必要となるので、単純追加ではなくひと工夫必要です。
【2】 ある程度トラフィックパターンが想定されている場合
社内専用の業務サーバーや開発サーバーのように、利用されるユースケースがある程度把握できている場合がこれにあたるのではないかと思います。実はこれが、最もプライベートクラウドにフィットする事例であると考えます。あまりエンジニアが意識することではないかもしれませんが、オーバーコミットによるサーバーリソース共有によって、コストメリットを最も受けやすいパターンであると考えています。このあたりの指標については以下の記事が参考になりましたので、詳しく知りたい方は参照してみてください。
【3】 同一パターンのトラフィック(負荷)が継続的に発生する場合
動画や画像など大容量コンテンツの配信サービスがこれにあたるのではないかと考えています。この場合は、ある一定の規模を超えるとパブリッククラウドに頼るよりはオンプレミス環境で頑張ってチューニングした方が、性能的にもコスト的にもメリットが出る可能性があると考えています。そのチューニング費用や時間が惜しければ、思い切って札束を叩きCDNなどに頼ってしまった方が間違いがありません。
いかがでしたでしょうか。結局のところITインフラにおいて絶対解はなく、ケースに応じて対応する柔らかい思考が大切だということを書いてみました。
現在、アニメイトラボではこのようなインフラポエムに熱く反応してくれるエンジニアを募集しています。採用サイトからご応募いただくことも可能ですし、Wantedlyからご連絡いただければオフィスの見学やランチ会へ参加できます。是非お問い合わせください!
最後までお読みいただきましてありがとうございました。さて、Advent Calendar最終日となる明日は、遅れてきたゆふぃすと 弊社CTO小芝に締めていただきます。よろしくお願いします!
*1:ヤマハ株式会社様のアイコン をお借りしました