クラウドを『作る』ってどういうこと?

78
クラウドを『作る』って どういうこと?

Upload: kazuto-kusama

Post on 16-Aug-2015

3.988 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: クラウドを『作る』ってどういうこと?

クラウドを『作る』ってどういうこと?

Page 2: クラウドを『作る』ってどういうこと?

Kazuto Kusama@jacopen

NTT Communications

Page 3: クラウドを『作る』ってどういうこと?

仕事• Cloudn PaaSの開発リーダー

• アーキテクチャ設計

• スクラムマスター

• プロダクトの方向性決め

• コード書き

Page 4: クラウドを『作る』ってどういうこと?

個人活動• PaaS勉強会主宰

• 日本Cloud Foundryグループ理事

Page 5: クラウドを『作る』ってどういうこと?

今回お話したいこと

Page 6: クラウドを『作る』ってどういうこと?

クラウドを作るとはどういう仕事なのか

Page 7: クラウドを『作る』ってどういうこと?

クラウドの作り方を 知っている人?

Page 8: クラウドを『作る』ってどういうこと?

そもそもクラウドって何だっけ

Page 9: クラウドを『作る』ってどういうこと?
Page 10: クラウドを『作る』ってどういうこと?

NISTによるクラウドコンピューティングの定義 https://www.ipa.go.jp/files/000025366.pdf

Page 11: クラウドを『作る』ってどういうこと?

クラウドコンピューティングは、共用の構成可能なコンピューティングリソース(ネットワーク、サーバー、ストレージ、アプリケーション、サービス)の集積に、どこからでも、簡便に、必要に応じて、ネットワーク経由でアクセスすることを可能とするモデルであり、最小限の利用手続きまたはサービスプロバイダとのやりとりで速やかに割当てられ提供されるものである。このクラウドモデルは 5 つの基本的な特徴と 3 つのサービスモデル、および 4 つの実装モデルによって構成される。 オンデマンド・セルフサービス ユーザは、各サービスの提供者と直接やりとりすることなく、必要に応じ、自動的に、サーバーの稼働時間やネットワークストレージのようなコンピューティング能力を一方的に設定できる。 幅広いネットワークアクセス コンピューティング能力は、ネットワークを通じて利用可能で、標準的な仕組みで接続可能であり、そのことにより、様々なシンおよびシッククライアントプラットフォーム(例えばモバイルフォン、タブレット、ラップトップコンピュータ、ワークステーション)からの利用を可能とする。 リソースの共用 サービスの提供者のコンピューティングリソースは集積され、複数のユーザにマルチテナントモデルを利用して提供される。様々な物理的・仮想的リソースは、ユーザの需要に応じてダイナミックに割り当てられたり再割り当てされたりする。物理的な所在場所に制約されないという考え方で、ユーザは一般的に、提供されるリソースの正確な所在地を知ったりコントロールしたりできないが、場合によってはより抽象的なレベル(例:国、州、データセンタ)で特定可能である。リソースの例としては、ストレージ、処理能力、メモリ、およびネットワーク帯域が挙げられる。 スピーディな拡張性 コンピューティング能力は、伸縮自在に、場合によっては自動で割当ておよび提供が可能で、需要に応じて即座にスケールアウト/スケールインできる。ユーザにとっては、多くの場合、割当てのために利用可能な能力は無尽蔵で、いつでもどんな量でも調達可能のように見える。 サービスが計測可能であること クラウドシステムは、計測能力 1を利用して、サービスの種類(ストレージ、処理能力、帯域、実利用中のユーザアカウント数)に適した管理レベルでリソースの利用をコントロールし最適化する。リソースの利用状況はモニタされ、コントロールされ、報告される。それにより、サービスの利用結果がユーザにもサービス提供者にも明示できる。

Page 12: クラウドを『作る』ってどういうこと?
Page 13: クラウドを『作る』ってどういうこと?

クラウドの4つの特徴

Page 14: クラウドを『作る』ってどういうこと?

リソースを、ネットワーク経由でアクセス

ネットワーク サーバー ストレージ アプリケーション サービス

Page 15: クラウドを『作る』ってどういうこと?

リソースの共用VM

VM

VM

VM

VM

VM

VM

VM

VM

VM

VM

VM

Page 16: クラウドを『作る』ってどういうこと?

オンデマンド・セルフサービス

VM

VM

VM

Website

API

申込書で~ メールで~

○営業日後に~

Page 17: クラウドを『作る』ってどういうこと?

サービスが計測可能であること

ネットワーク(in) 31.31GB

ネットワーク(out) 142.13GB

ストレージ 40GB

仮想サーバー 710時間

料金・・・ xxxxx円

※リソース利用がモニタリングされ、利用者が情報を取得出来ることが必要。  従量課金でないとダメという話ではない。

Page 18: クラウドを『作る』ってどういうこと?

リソースを、ネットワーク経由でアクセス

リソースの共用

オンデマンド・セルフサービス

サービスが計測可能であること

Page 19: クラウドを『作る』ってどういうこと?

クラウドの3つのサービスモデル

Page 20: クラウドを『作る』ってどういうこと?

IaaS (Infrastructure as a Service)

• インフラ(サーバー、ネットワーク、ストレージ)をサービスとして提供する

• 利用者は欲しい時に欲しいだけ、これらのインフラを利用出来る • サーバーやストレージなどの設備を買うのではなく

必要な時に利用する。不要になったら利用を止める = サービス

• 例: Amazon EC2, Google Compute Engine, Cloudn Compute

Page 21: クラウドを『作る』ってどういうこと?

PaaS (Platform as a Service)

• プラットフォーム(アプリケーション実行環境など)をサービスとして提供する

• 例: Cloudn PaaS、Heroku、Google App Engine

Page 22: クラウドを『作る』ってどういうこと?

SaaS (Software as a Service)• ソフトウェアをサービスとして提供する • Gmail、Salesforce、Evernote、Office 365 等々

Page 23: クラウドを『作る』ってどういうこと?

NTT Communicationsは全部やっていますが、

今回は特に IaaS / PaaS についてお話します。

Page 24: クラウドを『作る』ってどういうこと?

仮想サーバーを提供する クラウドを考えてみる

Page 25: クラウドを『作る』ってどういうこと?

家にサーバー買って置きました

Page 26: クラウドを『作る』ってどういうこと?

家にサーバー買って置きました

サービスにすらなってない

Page 27: クラウドを『作る』ってどういうこと?

インターネットに繋がる環境を用意しました。 サーバーの管理権限をユーザーに渡しました。

Page 28: クラウドを『作る』ってどういうこと?

インターネットに繋がる環境を用意しました。 サーバーの管理権限をユーザーに渡しました。

専用サーバーのホスティング

Page 29: クラウドを『作る』ってどういうこと?

サーバー内部の権限を分けて 複数ユーザーに提供出来るようにしました

Page 30: クラウドを『作る』ってどういうこと?

サーバー内部の権限を分けて 複数ユーザーに提供出来るようにしました

共用レンタルサーバー

Page 31: クラウドを『作る』ってどういうこと?

仮想化技術を利用して、ユーザーごとにVMを払い出せるようにしました

VM

VM

VM

VM

Page 32: クラウドを『作る』ってどういうこと?

仮想化基盤を利用して、ユーザーごとにVMを払い出せるようにしました

VM

VM

VM

VM

VPS

Page 33: クラウドを『作る』ってどういうこと?

多くのユーザーの需要に応えられるようたくさんのサーバーを用意して

Page 34: クラウドを『作る』ってどういうこと?

柔軟にリソースの分配ができる仮想化基盤を 導入して

VM

VM

VM

VM

VM

VM

※ただし仮想化基盤の有無は、クラウドの要件ではない。仮想化を用いないクラウドもあり得る。

Page 35: クラウドを『作る』ってどういうこと?

ユーザーがオンデマンドで操作できるAPIやGUIを提供して

VM

VM

VM

VM

VM

VM

GUI

API

Page 36: クラウドを『作る』ってどういうこと?

ユーザー要求に応じてリソースの配置や削除を行うコントローラを作って

VM

VM

VM

VM

VM

VM

GUI

APIController

Page 37: クラウドを『作る』ってどういうこと?

リソースの利用状況等をモニタリングする仕組みを作って

VM

VM

VM

VM

VM

VM

GUI

APIController

Resource Monitor

Page 38: クラウドを『作る』ってどういうこと?

VMのデータを保存する共有ストレージとか

VM

VM

VM

VM

VM

VM

GUI

APIController

Resource Monitor

Shared Storage

Page 39: クラウドを『作る』ってどういうこと?

ユーザー要求に応じたネットワークを実現するSDNとか

VM

VM

VM

VM

VM

VM

GUI

APIController

Resource Monitor

Shared Storage

SDN / Controller

Page 40: クラウドを『作る』ってどういうこと?

ログの収集・検索などの仕組みを用意して

VM

VM

VM

VM

VM

VM

GUI

APIController

Resource Monitor

Shared Storage

SDN / Controller

Log management

Page 41: クラウドを『作る』ってどういうこと?

そしてこれらを運用していくための、沢山のツールや監視の仕組みを作って

Page 42: クラウドを『作る』ってどういうこと?

これらが揃って、クラウドサービス(ここではIaaS)が提供出来る。

Page 43: クラウドを『作る』ってどういうこと?

つまり、IaaSを作る仕事とは

Page 44: クラウドを『作る』ってどういうこと?

サービスを実現するためのサーバー・ネットワーク等の 設計(物理/論理) ⇒ 詳しい話は @u1 のセッションで!

Page 45: クラウドを『作る』ってどういうこと?

サービスのコアとなるコントローラの開発

Page 46: クラウドを『作る』ってどういうこと?

ユーザーインターフェースの開発 (GUI・CUI・API)

Page 47: クラウドを『作る』ってどういうこと?

日々の運用

Page 48: クラウドを『作る』ってどういうこと?

ソフトウェア

ソフトウェア

ソフトウェア

ソフトウェア

ソフトウェア

ソフトウェア

ソフトウェア

Page 49: クラウドを『作る』ってどういうこと?

クラウドの神髄はソフトウェアにあり

Page 50: クラウドを『作る』ってどういうこと?

コムのクラウドも(結構)内製でコード書いてます

1からコードを書いて サービスを作るパターン

Page 51: クラウドを『作る』ってどういうこと?

OSSのクラウド基盤を使うパターン

これらを使う場合コードを書く必要はない?

Page 52: クラウドを『作る』ってどういうこと?

OSSのクラウド基盤を使う場合• コード全体に目を通して何がどういう仕組みで動いているか把握

• 問題があったら自分たちでログとコードを追って原因を特定

• 問題を修正

• 修正した問題をコントリビュート

これくらいの取り組みは最低限必要

Page 53: クラウドを『作る』ってどういうこと?

OSSだけで完結しないところは、やはり自製

認証基盤との 繋ぎ込み

課金システム

GUI

Deployment

Cloudn PaaSの場合

カスタマイズ

Page 54: クラウドを『作る』ってどういうこと?

Cloudn PaaSチームの ソフトウェア開発

Page 55: クラウドを『作る』ってどういうこと?

ウォーターフロー開発 アジャイル開発

Page 56: クラウドを『作る』ってどういうこと?

スプリント計画• やるべき項目を「バックログ」として洗い出す

• 2週間を1スプリントとし、バックログの中からスプリントに投入する

→これがチームの2週間の仕事となる

Page 57: クラウドを『作る』ってどういうこと?

ペアプログラミング推奨 コードを書いたら、必ずコードレビュー

Page 58: クラウドを『作る』ってどういうこと?

振り返り• 毎週、チームで振り返りを行う • 「良かったこと」「悪かったこと」

「来週からどう改善するか」を全員で出し合う

Page 59: クラウドを『作る』ってどういうこと?

IRC

いろんなツールを活用新しい仕組みの導入を恐れない

Page 60: クラウドを『作る』ってどういうこと?

http://www.slideshare.net/jacopen/cloudn-paaschatops

Page 61: クラウドを『作る』ってどういうこと?

チーム力を高めていくのが大事

Page 62: クラウドを『作る』ってどういうこと?

どうして自分たちで コードを書くのか• クラウドの神髄はソフトウェア

• ソフトウェアの開発力を高める=サービスの魅力を高める

• 世の中の動きが激しすぎて、外注ではスピードが追いつかない

Page 63: クラウドを『作る』ってどういうこと?

どうして自分たちで コードを書くのか• クラウドの神髄はソフトウェア

• ソフトウェアの開発力を高める=サービスの魅力を高める

• 世の中の動きが激しすぎて、外注ではスピードが追いつかない

• そのほうが楽しいから

Page 64: クラウドを『作る』ってどういうこと?

楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌

Page 65: クラウドを『作る』ってどういうこと?

求められる知識の幅が広い• 単にソフトウェアを書くだけでなく、

• インフラ周り • OSやデータベース • その他ミドルウェア • バックエンドアプリ • フロントエンドアプリ • UI / UX • その他派生する技術(IoT,ビッグデータetc)

ネットワーク

ハードウェア

OS

ミドルウェア データベース

バックエンドアプリ

フロントエンドアプリ

UI / UX

Page 66: クラウドを『作る』ってどういうこと?

求められる知識の幅が広い• 単にソフトウェアを書くだけでなく、

• インフラ周り • OSやデータベース • その他ミドルウェア • バックエンドアプリ • フロントエンドアプリ • UI / UX • その他派生する技術(IoT,ビッグデータetc)

ネットワーク

ハードウェア

OS

ミドルウェア データベース

バックエンドアプリ

フロントエンドアプリ

UI / UX

Page 67: クラウドを『作る』ってどういうこと?

楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌

Page 68: クラウドを『作る』ってどういうこと?

楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌

もちろん、大変なことも多いけどね。 ⇒ 詳しくは @r_takaishiのセッションで!

Page 69: クラウドを『作る』ってどういうこと?

クラウドエンジニアになろう!

Page 70: クラウドを『作る』ってどういうこと?

技術力はあったほうが良いに超したことはないけど

Page 71: クラウドを『作る』ってどういうこと?

必要なのは

好奇心 行動力

Page 72: クラウドを『作る』ってどういうこと?

この2つがあれば 技術力は勝手についてくる

Page 73: クラウドを『作る』ってどういうこと?

勉強会に出てみよう

• 好奇心と行動力の塊みたいな人がいっぱい居る

• まずは参加してみる。次に発表してみると力が飛躍的に高まる

• 詳しくは @hico_horiuchi のセッションで!

http://www.slideshare.net/hico_horiuchi/janog3

Page 74: クラウドを『作る』ってどういうこと?

同志を見つけよう

• 尖ったサークルで活動することは

一生の糧になる(と思う)

Page 75: クラウドを『作る』ってどういうこと?

ロールモデルを見つけよう

• 身近に「この人はすごい」

という人がいれば、

その人から教わるとか、行動をマネしてみるといい

Page 76: クラウドを『作る』ってどういうこと?

クラウドエンジニアになろう!

Page 77: クラウドを『作る』ってどういうこと?

ちなみにNTTコミュニケーションズだと✓ 大規模なリソースを扱うことができて ✓ 世界トップクラスのインフラがあって(アジア唯一のTier1ステータス)

✓ IaaSもPaaSもSaaSも作ることができて

✓ ソフトウェア開発に力を入れ始めていて ✓ クラウドをやりきれるだけの十分な体力があって ✓ エンジニアが自由に活動できる

Page 78: クラウドを『作る』ってどういうこと?

Questions?