KEMBAR78
【CLOUDIAN】コード化されたインフラの実装 | PDF
“コード化されたインフラ”の実装
October 20, 2015 © Copyright 2010-2014Cloudian KK. All rights reserved. P1
第1.1版
オブジェクトストレージの使い方
どうやって使うの?
●“ならではの” 使い方
展示ブースで!・・・・・
これから
P. 2
●“今までと同じ”使い方
展示ブースで!
本枠のお話・・・・・
これから
お話します!
S3 API 完全互換のオブジェクトストレージ
Private
Managed • プライベートクラウドの特⻑
CLOUDIAN HyperStore®は、
Amazon S3 API 完全互換
P. 3
S3 API
Public
Managed
Private
• パブリッククラウドの特⻑
• 簡単に容量を拡⼤・縮⼩
• 運用・保守のアウトソーシング
• 必要な容量だけ利用し完全な従量制課⾦
• プライベートクラウドの特⻑
• ⾃社(グループ)内でデータを管理
• データの所在が明確
• セキュリティーの確保が容易
API とは
API(Application Programming Interface)の定義:
コンピューターの基本ソフト(OS)や、アプリケーション、Webアプリケー
ション、クラウドサービスなどが、自身の機能を外部のアプリケーションやソ
フトウェアに利⽤させるための仕様やその仕組み
P. 4
ハイブリッドクラウド時代必修ITインフラの基礎知識
【第6回】アプリケーション活用の鍵を握るAPI
本橋 信也(クラウディアン取締役COO)
http://it.impressbm.co.jp/articles/-/12694
APIを上⼿に利活用
他のアプリケーションが提供する機能を利⽤
同等の機能をプログラミングする必要無し
開発期間を短縮
P. 5
開発期間を短縮
同じAPIを提供するクラウドサービス間で
あれば、1つのアプリケーションを
共有可能
DevOps や Infrastructure as Code の実装
Infrastructure as Code とは
インフラをプログラミングしてコード化
インフラ構成や設定内容の 可視化
手動設定による 導入ミス回避
P. 6
手動設定による 導入ミス回避
同一インフラ環境の 反復構築の迅速化
インフラ構成の バージョン管理
リソースの 有効活用(必要な時に迅速にデプロイ)
コードによるインフラ即時デプロイ
VM VM VM
サーバー
仮想化基盤
Docker
開発者による
利⽤申請
P. 7
コンテナ コンテナ コンテナ
開発者による
作成
バケット バケット バケット
CLOUDIAN HyperStore®
開発者 or プログラムによる
バケット操作
データ操作
Docker
★開発者PC
S3 API 利用イメージ①
ソフトウェア開発キット(SDK)の準備
AWS SDKをご利⽤頂けます。
(例) AWS SDK for PHP 2 の場合
①Composerを使⽤してaws-sdk-phpおよび
その依存関係にあるパッケージをインストール
(AWS推奨手順)
P. 8
(AWS推奨手順)
ComposerComposer
https://getcomposer.org/
AWS SDK for PHP InstallationAWS SDK for PHP Installation
http://docs.aws.amazon.com/aws-sdk-
php/v2/guide/installation.html#installing-using-
composer
S3 API 利用イメージ②
②パッケージの依存関係を記載する「composer.json」ファイルを作成
{
"require": {
"aws/aws-sdk-php": "2.*"
}
composer.json
P. 9
}
}
③以下のコマンドを実⾏して、“AWS SDK for PHP 2”をインストール
$ php composer.phar install
S3 API 利用イメージ③
④左図のようなフォルダ(ディレクトリ)
構成により、
AWS SDK for PHP 2
Guzzle
がインストールされます。
PHPのソースコード内で
"vendor/autoload.php"
P. 10
"vendor/autoload.php"
をrequireすると、AWS SDK for PHP 2のライブラリが
使⽤できるようになります。
また、あらかじめHyperStoreへの接続に必要となる
S3クレデンシャルの情報を
“./config.php”
等に記載し、ソース冒頭でrequireするようにしておくと便利です。
S3 API 利用イメージ④
<?php
// Instantiate the S3 client with your S3 credentials
$config = array(
'base_url' => 'http://s3.shibuya.local',
'region' => 'region1',
./config.php
P. 11
'region' => 'region1',
'key' => '3720a036a0d080b14db7',
'secret' => 'QZa9f0FjvK8JMUQufc3YO667Tc9uJ3jhGOrLSNri',
);
※ サンプルコードが動作している環境は、インターネットに接続できない完全なローカル環境であるため、
分かり易いように
’key’(アクセスキー)と’secret’(シークレットキー)
を伏せていませんが、通常はアクセスキーとシークレットキーの組み合わせは外部に漏れないよう管理し
てください。
プログラム言語からS3 API①
<?php
require_once("vendor/autoload.php");
require_once("./config.php");
use Aws¥S3¥S3Client;
$client = S3Client::factory($config);
// Sample #1
$result = $client->putObject(array(
'Bucket' => 'mybucket1',
右のコードは、
PHPからS3 APIを直接、呼び出して、ファイルを
HyperStoreに保存する
“PUT”操作
を実⾏するプログラムです。
P. 12
'Bucket' => 'mybucket1',
'Key' => 'sample/data1.txt',
'Body' => 'Hello!',
));
// Sample #2
$client->putObject(array(
'Bucket' => 'mybucket1',
'Key' => 'sample/data2.txt',
'SourceFile' => 'data/test.txt'
));
AWS SDKで予め⽤意されている
S3Clientオブジェクトのメソッド「putObject」を
使⽤することにより、右コードのように非常に簡単
にファイルを格納することができます。
プログラム言語からS3 API②
<?php
require_once("vendor/autoload.php");
require_once("./config.php");
use Aws¥S3¥S3Client;
$client = S3Client::factory($config);
// Get data
$ret = $client->getObject(array(
'Bucket' => 'mybucket1',
右のコードは、
PHPからS3 APIを直接、呼び出して、ファイルを
HyperStoreから取得する
“GET”操作
を実⾏するプログラムです。
P. 13
'Bucket' => 'mybucket1',
'Key' => 'sample/data1.txt',
'SaveAs' => 'data/test2.txt)
);
// Get meta data
$size = $ret['ContentLength'];
$type = $ret['ContentType'];
$mtime = $ret['LastModified'];
AWS SDKで予め⽤意されている
S3Clientオブジェクトのメソッド「getObject」を
使⽤することにより、右コードのように非常に簡単
にファイルを格納することができます。
メタデータの取得
プログラム言語からS3 API③
<?php
set_time_limit(300);
require_once("vendor/autoload.php");
require_once("./config.php");
use Aws¥S3¥S3Client;
use Aws¥Common¥Enum¥Size;
$bucket = ‘data-bucket';
$keyname = 'MultipartUpload.dat';
$filename = "./data/MultipartUpload.dat";
$file = fopen($filename, 'r');
$s3 = S3Client::factory($config);
$response = $s3->createMultipartUpload(array(
'Bucket' => $bucket,
'Key' => $keyname
));
$uploadId = $response['UploadId'];
// Upload the data in parts.
マルチパート
アップロードの開始
マルチパート
アップロードの実⾏
右のコードは、
PHPからS3 APIを直接、呼び出して、サイズの大きな
データを分割しHyperStoreに高速転送する
“マルチパート
アップロード”
を実⾏するプログラムです。
P. 14
// Upload the data in parts.
$parts = array();
$partNumber = 1;
while (!feof($file)) {
$result = $s3->uploadPart(array(
'Bucket' => $bucket,
'Key' => $keyname,
'UploadId' => $uploadId,
'PartNumber' => $partNumber,
'Body' => fread($file, 5 * Size::MB),
));
$parts[] = array(
'PartNumber' => $partNumber++,
'ETag' => $result['ETag'],
);
}
// Complete multipart upload.
$result = $s3->completeMultipartUpload(array(
'Bucket' => $bucket,
'Key' => $keyname,
'UploadId' => $uploadId,
'Parts' => $parts,
));
$url = $result['Location'];
fclose($file);
アップロードの実⾏
マルチパート
アップロードの完了
を実⾏するプログラムです。
このようにJavaやPython、PHP、
.NETフレームワークから直接、S3 APIを呼び出せます。
プログラム言語からS3 API④
現在の各バケットの
バージョニングの状態
(Disabled/Enabled/Suspended)
を表示しています。
開発者/インフラ管理者の皆さんは、
左図のPHPアプリケーションは、
S3 APIを呼び出してバケットの
バージョニング機能を
有効あるいは一時停止させる
サンプルプログラムです。
P. 15
操作(状態を変更させる)
対象のバケットをリスト
から選択します。
変更するバージョニングの
状態を選択します。
対象バケットおよび状態の選択が
完了したら[設定変更]ボタンを
押下します。
開発者/インフラ管理者の皆さんは、
AWS SDKのライブラリを活⽤
各種プログラム言語から
S3 APIを呼び出し
HyperStoreに対してPUTやGET、DELETE等の
データ操作が可能
マルチパートアップロードや
バージョニング等のS3 API独自の
⾼度な機能が使⽤可能
マルチテナント機能の活用
グループ(マルチテナント)構成の決定
HyperStoreシステム管理者
ストレージシステム全体の管理者。
開発グループ管理者に、一部権限を移譲。
開発グループ管理者
自開発グループに所属する開発者アカウントの管理。
自グループ所属開発者の管理を担当。
(個々の)開発者
実際に自分のS3アクセスキー/シークレットキーを使って、
P. 16
HyperStoreシステム管理者
アプリC 開発グループ管理者
アプリC 機能D 開発者
開発者個別のS3アクセスキー
開発者個別のS3シークレットキー
(個々の)開発者
実際に自分のS3アクセスキー/シークレットキーを使って、
開発業務を⾏う開発者。
HyperStoreの特⻑
完全同期
/準同期
P. 17
経済性 拡張性
耐障害性
価格感
●H/Wアプライアンス導入時
ストレージ容量単価
1円/GB/⽉〜(★)
P. 18
1
●HyperStore 各種搭載機能
0円(すべて標準搭載)
★ 概算提供価格を5年償却を前提として「/GB/月」に換算したものです。
CLOUDIAN HyperStore®の
・導入形態(S/W製品 あるいは H/Wアプライアンス製品)
・データ保護方式(複製方式 あるいは EC方式)
・一筐体あたりのディスク搭載容量
によりご提供価格は変動します。
詳細は展示ブースにて、弊社およびパートナー企業営業スタッフまでご確認ください。
まとめ
経済性
完全同期
/準同期
拡張性
耐障害性
=
P. 19
“S3 API”を
有効活⽤
耐障害性
ホームページ:http://cloudian.jp/
www.cloudian.jp
Cloud Storage for Everyoneご清聴、ありがとうございました。
THANK YOU !
ホームページ:http://cloudian.jp/
Facebook:https://www.facebook.com/cloudian.cloudstorage.S3
Twitter:https://twitter.com/Cloudian_KK
ブログ:http://www.cloudian-blog.com/
評価版お申込み:http://www.cloudian.jp/cloud-storage-products/cloudian_eval_agr.php
クラウディアン株式会社
© Copyright 2010-2014Cloudian KK. All rights reserved.October 20, 2015 P20

【CLOUDIAN】コード化されたインフラの実装