Pages

2014年8月15日金曜日

クラウドテクノロジーの川を渡る5つのポイント

Be.Cloud通信 戌亥です。

暑い日が続きますね。雲一つない青空。これこそ日本の夏です。いやいや、雲(クラウド)がないと困ります。商売あがったりですよ。

そんなことはさておいて、今回はクラウドを上手に使いこなす方法を考えてみました。他人事ではありません。我々もサービスを提供しているもので。5つのポイントにまとめてみましたので、かき氷を食べながらでも読んでみてください。

クラウドのスタイルは従来のITとちょっと違います。なかなか理解し難いですが、まずはこの5つのポイントを理解することから始めてみませんか?クラウドの管理はこれまでのITの管理手法を使うより、Webサービスベンダーのスタイルが参考になります。エンタープライズのITをやっている方から見たら少し危ういと感じるかもしれませんが、Webサービスベンダーは実際に運用をしながら様々な機能のアップグレードをやってのけます。

インスタグラムの社長は、これを「時速100マイルで走りつつ自動車のすべての部品を交換するようなものだ」という表現をつかっています。
想像できないですよね。そこにはあたかも、クラウドテクノロジーという大きな川があり、向こう側とこちら側では別世界が広がっているようです。しかし、その川を渡ってみなければ、どんな世界が存在するかわかりません。思い切ってわたってみませんか?

【クラウドスタイル#1 - まずは従量課金】
まずは従量課金になれることです。従来のITは予算の確定だけの為に従量課金より一括投資が好まれてきました。これ以上予算がかからないことをベンダーに約束させる為に、一括投資をしてきた訳です。その見返りとして、使うか使わないかわからないほどのサーバを購入させられたりしてきたのです。一括投資で一旦予算どおり構築をしても、それはハードウェアやソフトウェアのEoSEnd of Support)までの話です。5年後に買い直しをする費用というのは念頭に入っておりませんよね。それにかかる作業費もです。ベンダー側は、再構築するとお金がかかるというのを知っていて、結局は高い作業費用を積んできます。そうやって、見かけとは別のコストがどんどん積み上がってきます。

私たちのクラウドのお客様では、季節や曜日によってトランザクション量がことなったり、突然の大きなイベントによりサーバの負荷が増えたりすることがあります。しかし、このお客様ではコストをミニマムにする為にトランザクションが増え、サーバの負荷がアップする時だけ、サーバのインスタンスタイプを大きくして運用をしています。エコなシステムです。

こんなことは従来のITではできませんでした。その為、普段は利用しないだろうと思われるほど大きなサーバを用意し、10%とか15%しか、CPUを使っていなかったのですが、クラウドに持っていくと、マシンの能力を変更することは簡単になりました。そのため、その考え方は180度かえなければならなくなったのです。最初にサーバのサイジングに時間をかけるよりも、サーバのインスタンスをいつでも変更できるようなアーキテクチャの構築に時間をかける方が、クラウドにとっては重要です。従量課金というのは、費用面だけで考えずに、それをうまく使いこなす方法を考えて、システムの設計をしましょう。

【クラウドスタイル#2 - インフラもプログラムで書いて構築しよう】
Infrastructure as a codeということばを知っていますか?クラウドのインフラはプログラムを書くことで追加や変更が可能です。プログラムといってもそんな難しいプログラムではありません。シェルスクリプトの様な簡易プログラミング言語でも構わないわけです。これにより、夜間にサーバのインスタンスタイプを変更したり、負荷に応じて、サーバのインスタンスを増加させたりすることが出来ます。

エンタープライズのITを経験した人であればわかりますが、夜間バッチが終わらないとかいうことを経験したことがありますよね。その場合は、サーバを増強したりしなければなりません。運用部門の方はいつも、夜間バッチが動いているかどうか?朝までに終了するかどうか?等を監視していなければなりません。クラウドではプログラムを組むことでマシンの増強が可能です。そのため、データ量に応じて、サーバの構成を変えて実行したりすることは可能です。

従来の様に、メーカーに注文をして納品まで、数ヶ月もかける必要はありません。この為イニシャルコストを下げて、カットオーバーすることができます。スモールスタートし、システムが効果的であることを確認した後に本格的に拡張することができます。例えば、ビッグデータ分析など、イニシャル時に効果を測定することが難しいシステムでも、最小限の投資で始めることができます。サーバ構成はプログラミングにより作成することが可能である為、何百台にも及ぶサーバを自動で構成することも出来ます。

【クラウドスタイル#3 - 継続的デプロイメント】
これまでは開発と運用が完全に分離され、開発が作った機能を運用側で品質のチェックをしてから、デプロイをしていました。クラウドスタイルでは、バッチサイズを小さくし、品質を高める工夫をしています。「バッチサイズを小さくする」とは、1度に多くの機能をリリースするのではなく、少しずつの機能をリリースすることです。

こうすることにより、もし万が一作り込んだ機能に問題があっても、一つ前のバージョンに戻すことは簡単です。これまでのバッチサイズの大きなデプロイは、時には戻すことすら出来ない場合があり、大きなリスクが伴います。バッチサイズを小さくすることでリスクを最小化することができます。

バッチサイズを小さくすると、デプロイの回数が増える為、運用が複雑化される様に思われます。毎日あるいは毎週のデプロイメントで同じオペレーションを行う必要があります。この時にクラウドスタイルを使ってデプロイメントの自動化をしましょう。また、開発のプロセスも複雑になるでしょう。1人で開発を行うシステムはほとんどありません。AmazonFacebookの様な多くのWebサービス企業は数百人の開発者が同時に開発を行います。この場合一番気になるのは、お互いの開発するプログラム同士がお互いの機能に干渉しないかという問題です。

この時には、迷わずにテストの自動化を考えましょう。お互いが開発するプログラムをソースコードリポジトリに登録することで、自動ビルドと自動テストが行えるようにできます(継続的インテグレーション)。自動テストは、昼食をとって帰ってくる間に終わっているでしょう。
ソフトウェア開発、運用のあらゆるプロセスが自動化されることで、継続的デプロイメントは可能になります。

【クラウドスタイル#4 - オープンソースを使おう】
運用、開発に発生する様々なプロセスが自動化されれば、クラウドのメリットを傍受することが出来ることはわかりました。しかし、自動化がそんなに簡単に出来るのか?という疑問が残ります。そんな時は、Webサービスベンダーが使っているオープンソースを使いましょう。

プログラムソースコードを管理するリポジトリであるGitSubversion、構成管理を行うChefPuppet、ビルド及びテスト実行の自動化を実現するJenkinsなどの世界的によく使われているツースはすべてオープンソースです。これらのオープンソースはWebサービスベンダーにより、より使いやすく改修されています。実際に、自動化をするツールは世界中で最も実績のあるソフトウェアです。オープンソースといって敬遠するのはやめましょう。現在のオープンソースは、信頼できる友人であると考えましょう。

【クラウドスタイル#5 - DevOpsを始めよう】
ここまで見れば分かる様に、開発(Dev)と運用(Ops)は切り離すことが出来ません。開発は最終的にはそのシステムが運用されることを考えて実装しなければなりません。運用はどんなシステムが出来上がっていれば簡単に運用できるかをフィードバックしてあげる必要があります。開発も運用もビジネスを継続する為に存在するわけです。ビジネスに貢献する為に、継続的デプロイを行い、常に新しい機能を利用者に提供する必要が有るかもしれません。

その場合には、テストを自動化して品質あげる工夫をしなければなりませんし、いくらテスト自動化をし、継続的インテグレーションをやることが出来ていても、デプロイのバッチサイズが大きいと効果がありません。開発と運用はもっと連携を深めるべきです。これは、これまで築いて来たITの規範を破壊するものかもしれませんが、企業の競争力を保つ為に、これを実行している企業は存在します。 

この5つのクラウドスタイルは夢のような話だとおもうかもしれません。また、FacebookAmazonといった巨大Webサービスベンダーだからこそできると思っているかもしれません。しかし、実際にスタートアップや中小企業のWebサービスベンダーでもやっています。企業内の情報システム部もこれらのスタイルを学んで、効率性を高めましょう。

この夏の青空のようにまだまだ、雲(クラウド)は少ないかもしれません。しかし、至る所雲だらけになってから、行動をしても遅いでしょう。なるべく早く雲をつかむ為に、Webサービスベンダーのやり方を学んで、少しずつでもトライをしてみませんか?


雲をつかむような話でした。

0 コメント:

コメントを投稿