SlideShare a Scribd company logo
1 of 10
Download to read offline
Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 
Cloud Design Pattern#1 Cache-Aside 
2014/8/1 
http://azure.microsoft.com/ja-jp/
Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 
カテゴリ 
可用性 
データ管理 
設計および実装 
メッセージング 
管理および監視 
パフォーマンスおよびスケーラビリティ 
回復性 
セキュリティ
Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 
概要 
データストアからオンデマンドにキャッシュ読み込みを 行います。 
「データストアアクセスは、必要なときだけ」 
キャッシュとデータストアの整合性を維持します。
Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 
課題と背景 
アプリは、アクセスを最適化しなければならない 
⇒キャッシュの提供
Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 
課題と背景 
Cash Asideパターンでは、リードスルーなキャッシング をエミュレートするデザインパターンです。 
リードスルー? 
キャッシュ 
データストア 
読み込み要求 
ある? 
ないよ。 
ある? 
保持 
http://hiro2matome.seesaa.net/article/401763234.html
Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 
いつ使うか? 
キャッシュがリードスルー操作等を標準装備し ていない場合。 
リソースの需要が予測できない場合。 
「キャッシュ作り込みたいんだけど、がっつりメモリ食いそう 
なんだよね。。」な時 
オンデマンドなので、必要に応じてキャッシング。
Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 
実装 
Microsoft Azureでは、Azure Cacheを利用して 
CasheAsideパターンを実装可能です。 
http://azure.microsoft.com/ja-jp/services/cache/ 
http://redis.io/
Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 
エラーでRedis作れなかった。。
Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 
実装 
private DataCachecache; 
public asyncTask<MyEntity> GetMyEntityAsync(intid){ 
varkey = string.Format("StoreWithCache_GetAsync_{0}", id); 
varexpiration = TimeSpan.FromMinutes(3); 
boolcacheException= false; 
try { 
// キャッシュにヒットすれば、Entity取得 
varcacheItem= cache.GetCacheItem(key); 
if(cacheItem!= null){ 
return cacheItem.Valueas MyEntity; 
} 
} catch (DataCacheException){ 
cacheException= true; 
} 
// キャッシュにヒットしていない場合 
// データストアからEntity取得 
varentity = xxx.GetMyEntityFromDataStore(key); 
if(!cacheException) { 
try { 
if(entity != null) { 
// キャッシュする 
cache.Put(key, entity, timeout: expiration); 
} 
} catch ....// 略 
} 
return entity; 
}
Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 
留意事項 
1.アプリのアクセス特性⇔キャッシュ有効期間 
2.整合性は完全には担保されていない

More Related Content

More from エンジニア勉強会 エスキュービズム

More from エンジニア勉強会 エスキュービズム (20)

Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
 
機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow機械学習ライブラリ : TensorFlow
機械学習ライブラリ : TensorFlow
 
Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。Developer Summit 2016 参加してきました。
Developer Summit 2016 参加してきました。
 
ほんのりTDD
ほんのりTDDほんのりTDD
ほんのりTDD
 
IoTで何をやったか
IoTで何をやったかIoTで何をやったか
IoTで何をやったか
 
2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)2016 新人研修 基本技術講座 (1)
2016 新人研修 基本技術講座 (1)
 
Dockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについてDockerを用いたマイクロサービスについて
Dockerを用いたマイクロサービスについて
 
VRのコンテンツ
VRのコンテンツVRのコンテンツ
VRのコンテンツ
 
Azureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについてAzureで動いている機械学習のいろいろについて
Azureで動いている機械学習のいろいろについて
 
レイアウトについて
レイアウトについてレイアウトについて
レイアウトについて
 
アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)アルゴリズムとデータ構造(初歩)
アルゴリズムとデータ構造(初歩)
 
何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか何故エンジニアはテストをしないのか
何故エンジニアはテストをしないのか
 
IoTのIを考えてみる話
IoTのIを考えてみる話IoTのIを考えてみる話
IoTのIを考えてみる話
 
AzureのIaaSとかの話
AzureのIaaSとかの話AzureのIaaSとかの話
AzureのIaaSとかの話
 
【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ【エンジニア勉強会】品質ってなんなのさ
【エンジニア勉強会】品質ってなんなのさ
 
【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた【エンジニア勉強会】PMやってみた
【エンジニア勉強会】PMやってみた
 
Dockerを社内で使うために
Dockerを社内で使うためにDockerを社内で使うために
Dockerを社内で使うために
 
Riot.jsに触れてみた話
Riot.jsに触れてみた話Riot.jsに触れてみた話
Riot.jsに触れてみた話
 
Go言語オーバービュー201507
Go言語オーバービュー201507Go言語オーバービュー201507
Go言語オーバービュー201507
 
Winストアアプリでble接続
Winストアアプリでble接続Winストアアプリでble接続
Winストアアプリでble接続
 

Recently uploaded

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 

Recently uploaded (9)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 

Cloud Design Pattern #1 Cache-Aside_エンジニア勉強会20140917

  • 1. Copyright © 2014 by S-cubism Technology Inc. All rights reserved. Cloud Design Pattern#1 Cache-Aside 2014/8/1 http://azure.microsoft.com/ja-jp/
  • 2. Copyright © 2014 by S-cubism Technology Inc. All rights reserved. カテゴリ 可用性 データ管理 設計および実装 メッセージング 管理および監視 パフォーマンスおよびスケーラビリティ 回復性 セキュリティ
  • 3. Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 概要 データストアからオンデマンドにキャッシュ読み込みを 行います。 「データストアアクセスは、必要なときだけ」 キャッシュとデータストアの整合性を維持します。
  • 4. Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 課題と背景 アプリは、アクセスを最適化しなければならない ⇒キャッシュの提供
  • 5. Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 課題と背景 Cash Asideパターンでは、リードスルーなキャッシング をエミュレートするデザインパターンです。 リードスルー? キャッシュ データストア 読み込み要求 ある? ないよ。 ある? 保持 http://hiro2matome.seesaa.net/article/401763234.html
  • 6. Copyright © 2014 by S-cubism Technology Inc. All rights reserved. いつ使うか? キャッシュがリードスルー操作等を標準装備し ていない場合。 リソースの需要が予測できない場合。 「キャッシュ作り込みたいんだけど、がっつりメモリ食いそう なんだよね。。」な時 オンデマンドなので、必要に応じてキャッシング。
  • 7. Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 実装 Microsoft Azureでは、Azure Cacheを利用して CasheAsideパターンを実装可能です。 http://azure.microsoft.com/ja-jp/services/cache/ http://redis.io/
  • 8. Copyright © 2014 by S-cubism Technology Inc. All rights reserved. エラーでRedis作れなかった。。
  • 9. Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 実装 private DataCachecache; public asyncTask<MyEntity> GetMyEntityAsync(intid){ varkey = string.Format("StoreWithCache_GetAsync_{0}", id); varexpiration = TimeSpan.FromMinutes(3); boolcacheException= false; try { // キャッシュにヒットすれば、Entity取得 varcacheItem= cache.GetCacheItem(key); if(cacheItem!= null){ return cacheItem.Valueas MyEntity; } } catch (DataCacheException){ cacheException= true; } // キャッシュにヒットしていない場合 // データストアからEntity取得 varentity = xxx.GetMyEntityFromDataStore(key); if(!cacheException) { try { if(entity != null) { // キャッシュする cache.Put(key, entity, timeout: expiration); } } catch ....// 略 } return entity; }
  • 10. Copyright © 2014 by S-cubism Technology Inc. All rights reserved. 留意事項 1.アプリのアクセス特性⇔キャッシュ有効期間 2.整合性は完全には担保されていない