[go: up one dir, main page]

SlideShare a Scribd company logo
クラウドを『作る』って

どういうこと?
Kazuto Kusama
@jacopen
NTT Communications
仕事
• Cloudn
PaaSの開発リーダー
• アーキテクチャ設計
• スクラムマスター
• プロダクトの方向性決め
• コード書き
個人活動
• PaaS勉強会主宰
• 日本Cloud Foundryグループ

理事
今回お話したいこと
クラウドを作るとは

どういう仕事なのか
クラウドの作り方を
知っている人?
そもそもクラウドって何だっけ
クラウドを『作る』ってどういうこと?
NISTによるクラウドコンピューティングの定義
https://www.ipa.go.jp/files/000025366.pdf
クラウドコンピューティングは、共用の構成可能なコンピューティングリソース(ネットワーク、サーバー、ストレージ、アプリケーション、
サービス)の集積に、どこからでも、簡便に、必要に応じて、ネットワーク経由でアクセスすることを可能とするモデルであり、最小限の利
用手続きまたはサービスプロバイダとのやりとりで速やかに割当てられ提供されるものである。このクラウドモデルは 5 つの基本的な特徴と
3 つのサービスモデル、および 4 つの実装モデルによって構成される。
オンデマンド・セルフサービス
ユーザは、各サービスの提供者と直接やりとりすることなく、必要に応じ、自動的に、サーバーの稼働時間やネットワークストレージのよう
なコンピューティング能力を一方的に設定できる。
幅広いネットワークアクセス
コンピューティング能力は、ネットワークを通じて利用可能で、標準的な仕組みで接続可能であり、そのことにより、様々なシンおよびシッ
ククライアントプラットフォーム(例えばモバイルフォン、タブレット、ラップトップコンピュータ、ワークステーション)からの利用を可能
とする。
リソースの共用
サービスの提供者のコンピューティングリソースは集積され、複数のユーザにマルチテナントモデルを利用して提供される。様々な物理的・
仮想的リソースは、ユーザの需要に応じてダイナミックに割り当てられたり再割り当てされたりする。物理的な所在場所に制約されないとい
う考え方で、ユーザは一般的に、提供されるリソースの正確な所在地を知ったりコントロールしたりできないが、場合によってはより抽象的
なレベル(例:国、州、データセンタ)で特定可能である。リソースの例としては、ストレージ、処理能力、メモリ、およびネットワーク帯
域が挙げられる。
スピーディな拡張性
コンピューティング能力は、伸縮自在に、場合によっては自動で割当ておよび提供が可能で、需要に応じて即座にスケールアウト/スケール
インできる。ユーザにとっては、多くの場合、割当てのために利用可能な能力は無尽蔵で、いつでもどんな量でも調達可能のように見える。
サービスが計測可能であること
クラウドシステムは、計測能力 1を利用して、サービスの種類(ストレージ、処理能力、帯域、実利用中のユーザアカウント数)に適した管理
レベルでリソースの利用をコントロールし最適化する。リソースの利用状況はモニタされ、コントロールされ、報告される。それにより、サー
ビスの利用結果がユーザにもサービス提供者にも明示できる。
クラウドを『作る』ってどういうこと?
クラウドの4つの特徴
リソースを、ネットワーク経由でアクセス
ネットワーク サーバー ストレージ アプリケーション
サービス
リソースの共用
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
VM
オンデマンド・セルフサービス
VM
VM
VM
Website
API
申込書で∼
メールで∼
○営業日後に∼
サービスが計測可能であること
ネットワーク(in) 31.31GB
ネットワーク(out) 142.13GB
ストレージ 40GB
仮想サーバー 710時間
料金・・・ xxxxx円
※リソース利用がモニタリングされ、利用者が情報を取得出来ることが必要。
 従量課金でないとダメという話ではない。
リソースを、ネットワーク経由でアクセス
リソースの共用
オンデマンド・セルフサービス
サービスが計測可能であること
クラウドの3つのサービスモデル
IaaS (Infrastructure as a Service)
• インフラ(サーバー、ネットワーク、ストレージ)をサービスとして
提供する
• 利用者は欲しい時に欲しいだけ、これらのインフラを利用出来る
• サーバーやストレージなどの設備を買うのではなく

必要な時に利用する。不要になったら利用を止める = サービス
• 例: Amazon EC2, Google Compute Engine, Cloudn
Compute
PaaS (Platform as a Service)
• プラットフォーム(アプリケーション実行環境など)をサービスとし
て提供する
• 例: Cloudn
PaaS、Heroku、Google App Engine
SaaS (Software as a Service)
• ソフトウェアをサービスとして提供する
• Gmail、Salesforce、Evernote、Office 365 等々
NTT Communicationsは全部やっていますが、
今回は特に IaaS / PaaS についてお話します。
仮想サーバーを提供する
クラウドを考えてみる
家にサーバー買って置きました
家にサーバー買って置きました
サービスにすらなってない
インターネットに繋がる環境を用意しました。

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

サーバーの管理権限をユーザーに渡しました。
専用サーバーのホスティング
サーバー内部の権限を分けて

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

複数ユーザーに提供出来るようにしました
共用レンタルサーバー
仮想化技術を利用して、ユーザーごとにVMを

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

払い出せるようにしました
VM
VM
VM
VM
VPS
多くのユーザーの需要に応えられるよう

たくさんのサーバーを用意して
柔軟にリソースの分配ができる仮想化基盤を

導入して
VM
VM
VM
VM
VM
VM
※ただし仮想化基盤の有無は、クラウドの要件ではない。仮想化を用いないクラウドもあり得る。
※
ユーザーがオンデマンドで操作できるAPIやGUI
を提供して
VM
VM
VM
VM
VM
VM
GUI
API
ユーザー要求に応じてリソースの配置や削除
を行うコントローラを作って
VM
VM
VM
VM
VM
VM
GUI
API
Controller
リソースの利用状況等をモニタリングする仕
組みを作って
VM
VM
VM
VM
VM
VM
GUI
API
Controller
Resource
Monitor
VMのデータを保存する共有ストレージとか
VM
VM
VM
VM
VM
VM
GUI
API
Controller
Resource
Monitor
Shared
Storage
ユーザー要求に応じたネットワークを実現する
SDNとか
VM
VM
VM
VM
VM
VM
GUI
API
Controller
Resource
Monitor
Shared
Storage
SDN /
Controller
ログの収集・検索などの仕組みを用意して
VM
VM
VM
VM
VM
VM
GUI
API
Controller
Resource
Monitor
Shared
Storage
SDN /
Controller
Log management
そしてこれらを運用していくための、

沢山のツールや監視の仕組みを作って
これらが って、クラウドサービス(ここではIaaS)
が提供出来る。
つまり、IaaSを作る仕事とは
サービスを実現するためのサーバー・ネットワーク等の
設計(物理/論理)  詳しい話は @u1 のセッションで!
サービスのコアとなるコントローラの開発
ユーザーインターフェースの開発
(GUI・CUI・API)
日々の運用
ソフトウェア
ソフトウェア
ソフトウェア
ソフトウェア
ソフトウェア
ソフトウェア
ソフトウェア
クラウドの神髄は

ソフトウェアにあり
コムのクラウドも(結構)内製でコード書いてます
1からコードを書いて
サービスを作るパターン
OSSのクラウド基盤を使うパターン
これらを使う場合コードを書く必要はない?
OSSのクラウド基盤を使う場合
• コード全体に目を通して何がどういう仕組みで動いているか把握
• 問題があったら自分たちでログとコードを追って原因を特定
• 問題を修正
• 修正した問題をコントリビュート
これくらいの取り組みは最低限必要
OSSだけで完結しないところは、やはり自製
認証基盤との
繋ぎ込み
課金システム
GUI
Deployment
Cloudn
PaaSの場合
カスタマイズ
Cloudn PaaSチームの
ソフトウェア開発
ウォーターフロー開発
アジャイル開発
スプリント計画
• やるべき項目を「バックログ」として洗い
出す
• 2週間を1スプリントとし、バックログの
中からスプリントに投入する

→これがチームの2週間の仕事となる
ペアプログラミング推奨
コードを書いたら、必ずコードレビュー
振り返り
• 毎週、チームで振り返りを行う
• 「良かったこと」「悪かったこと」

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

出し合う
IRC
いろんなツールを活用

新しい仕組みの導入を恐れない
http://www.slideshare.net/jacopen/cloudn-paaschatops
チーム力を高めていくのが大事
どうして自分たちで
コードを書くのか
• クラウドの神髄はソフトウェア
• ソフトウェアの開発力を高める

=サービスの魅力を高める
• 世の中の動きが激しすぎて、外注では

スピードが追いつかない
どうして自分たちで
コードを書くのか
• クラウドの神髄はソフトウェア
• ソフトウェアの開発力を高める

=サービスの魅力を高める
• 世の中の動きが激しすぎて、外注では

スピードが追いつかない
• そのほうが楽しいから
楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
求められる知識の幅が広い
• 単にソフトウェアを書くだけでなく、
• インフラ周り
• OSやデータベース
• その他ミドルウェア
• バックエンドアプリ
• フロントエンドアプリ
• UI / UX
• その他派生する技術(IoT,ビッグデータetc)
ネットワーク
ハードウェア
OS
ミドルウェア データベース
バックエンドアプリ
フロントエンドアプリ
UI / UX
求められる知識の幅が広い
• 単にソフトウェアを書くだけでなく、
• インフラ周り
• OSやデータベース
• その他ミドルウェア
• バックエンドアプリ
• フロントエンドアプリ
• UI / UX
• その他派生する技術(IoT,ビッグデータetc)
ネットワーク
ハードウェア
OS
ミドルウェア データベース
バックエンドアプリ
フロントエンドアプリ
UI / UX
楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
楽しい!!✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
もちろん、大変なことも多いけどね。  詳しくは @r_takaishiのセッションで!
クラウドエンジニアになろう!
技術力はあったほうが良いに

超したことはないけど
必要なのは
好奇心 行動力
この2つがあれば
技術力は勝手についてくる
勉強会に出てみよう
• 好奇心と行動力の塊みたいな

人がいっぱい居る
• まずは参加してみる。次に発表

してみると力が飛躍的に高まる
• 詳しくは @hico_horiuchi の

セッションで!
http://www.slideshare.net/hico_horiuchi/janog3
同志を見つけよう
• 尖ったサークルで活動することは

一生の糧になる(と思う)
ロールモデルを見つけよう
• 身近に「この人はすごい」

という人がいれば、

その人から教わるとか、行動をマネ

してみるといい
クラウドエンジニアになろう!
ちなみにNTTコミュニケーションズだと
✓ 大規模なリソースを扱うことができて
✓ 世界トップクラスのインフラがあって(アジア唯一のTier1ステータス)
✓ IaaSもPaaSもSaaSも作ることができて
✓ ソフトウェア開発に力を入れ始めていて
✓ クラウドをやりきれるだけの十分な体力があって
✓ エンジニアが自由に活動できる
Questions?

More Related Content

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