「Azure Virtual MachineでVisual Studio & JenkinsなCI環境を構築する(1) ~ インストール編」でAzure Virtual Machineを使ったJenkinsサーバの構築を行いました。今回はそれに続いてJenkinsからgithubのプライベートリポジトリからソースコードを取得してビルドする方法を紹介します。
2013年2月20日
2013年2月19日
Azure Virtual MachineでVisual Studio & JenkinsなCI環境を構築する(1) ~ Jenkinsのインストール
Azure Virtual Machine上にVisual StudioとJenkinsサーバを使ったCI環境を構築してみました。今回はそのVS&JenkinsなCI環境の構築手順を紹介します。
2013年2月18日
Windows Azure Tableの検索パフォーマンス
大分昔(2011年の年末あたり)にAzure Tableへのクエリパターン別の検索パフォーマンスを測って記事を書いていたのですが、公開してませんでした(忘れてた。。。)。
その後いわゆるGen 2のストレージが現れたりしているので、絶対値的には参考にならないと思います。ただ、クエリエンジンがより最適化されるようになったとかっていう話は聞かないので、各クエリ別の相対的な評価としては通用するかと思います。
このまま公開しないのももったいないので、以下最初に書いた時のままですが公開したいと思います。
Windows Azure Tableを使うにあたって、どんなクエリだとどの程度のパフォーマンスが出るのかは気になるところだと思います。昨年末あたりにパフォーマンス計測だけして放っていたので、そろそろ書きます。
ここでは単一パーティションでのクエリ性能を調べるため、単一パーティション内における「RowKeyによる検索とプロパティによる検索」と、「レンジ検索とOR検索」でそれぞれパフォーマンス差がどの程度あるかという点をベンチマークします。そこでベンチマーク対象のクエリは以下の6種類です。
- RowKeyの完全一致
- RowKeyのレンジ検索
- RowKeyのOR検索
- プロパティの完全一致
- プロパティのレンジ検索
- プロパティのOR検索
2013年2月15日
デブサミ2013メモ 【14-D-6】Yahoo! JAPANの新しいクラウドストレージサービス ~Yahoo! JAPANがRiakを選んだ理由とは?~
From Evernote: |
【14-D-6】Yahoo! JAPANの新しいクラウドストレージサービス ~Yahoo! JAPANがRiakを選んだ理由とは?~Clipped from: http://event.shoeisha.jp/detail/1/session/26/ |
Yahooを支える技術
96年から分散kvsに取り組んできた(独自開発)
認証、課金、広告、cdn すべての基盤となるコアテクノロジになっている
データレプリケーションにも対応
フロントがdcをまたがる構成とか
独自開発のオブジェクトストレージがある
利用実績
Yahooボックス 数TB/dayでデータ増加
天気災害
ブックストア
ロコプレイス
など
Riakの紹介
Riak kvsエンジン
Riak eds レプリケーションとか
Riak cs オブジェクトストレージ、データはriak,riak edsに保存
ノードをリング状に並べる
Consistent hashing
CAP定理に従う、1ノード壊れても可用性は失わない
Riak eds インストール
Yumでインストール可
設定変更
自分自身のipを設定
Restで受け付けるipの設定
Earlangの設定
じぶんのip
それからクラスターにjoin
利用する場面
高速なデータアクセスが必要な場合
将来的にデータ件数が増える場合
Riak csインストール
Yumでインストール
同時にstanchonコンポーネントをインストール
Bucketを作ってそこにファイルをいれる感じ s3cmdコマンドを使って操作
オブジェクトストレージ自体をマウントできる
事例
Lohaco アスクル
画像ファイルの配信
450req/s
Riak csを利用したyahooストレージ
2013/4 本番
なぜriakをえらんだか?
S3のapiで使えるものが必要だった
運用コスト削減
既存ノウハウを活かしやすいアーキテクチャ
Riak meetup 3/11
デブサミ2013メモ 【14-C-5】O2Oのデザイン
From Evernote: |
【14-C-5】O2OのデザインClipped from: http://event.shoeisha.jp/detail/1/session/18/ |
Online to offlineの例
クーポン
ソーシャルで伝えたくなる何か
口コミ
在庫の事前確認
など
Offline to onlineの例
qrコード
シェアしたくなるもの
チェックイン
オンラインとオフラインは不可分に
拡張現実の世界へ
リアルなものにオンラインから付加価値を与えることが重要
バーコードUI
バーコードリーダだけでUIを操作する
Tips
バーコードリーダ ー>キーボードとして認識される
デブサミ2013メモ 【14-A-4】グリーにおけるスマホアプリ開発~ネイティブ編
From Evernote: |
【14-A-4】グリーにおけるスマホアプリ開発~ネイティブ編Clipped from: http://event.shoeisha.jp/detail/1/session/4/ |
===メモ===
サーバサイド
Webアプリとネイティブの違い
通信タイミング
表示データ(アセット)のありか
通信タイミングを考える
都度通信
非同期通信
更新タイミングで適宜通信
通信していない時のログ
クライアントで集めて、適宜サーバへ送信する必要あり
データ管理
更新頻度が低い
更新頻度が高い
マスタデータの同期
最初に全部
更新分はテーブル単位でハッシュ値比較して、更新分だけ同期
最初は全部(容量はコントロールすべき、全部やったら大きすぎるなど
更新分はアセットひとつ単位で同期
アセット管理のテーブルをマスタ上に持ってる雰囲気
APIの構成
JSONフォーマットでデータをやり取り
クライアントとの擦り合わせが重要
Webと同じ技術
通信タイミングの設計が重要
クライアントサイド
通信と表示で役割分担して開発
使ってる技術
Unity
Gree unity platform
Lightweight swf
ちょっとした工夫
遷移図からコードを自動生成
考えたこと
共通項は何か?
どこまで自動生成するか?
どれくらいなら使いやすいか?
Yamlで遷移を記述
Graphvizで図式化
rubyのコンバータ(独自)でC#のコード生成
良かったこと
デブサミ2013メモ 【14-B-3】自動改札機の運賃計算プログラムのデバッグ手法 ~10の40乗のパターンをいかにテストするか~
From Evernote: |
【14-B-3】自動改札機の運賃計算プログラムのデバッグ手法 ~10の40乗のパターンをいかにテストするか~Clipped from: http://event.shoeisha.jp/detail/1/session/9/ |
デブサミ2013メモ 【14-C-2】決済だけではないペイパル(ペイパルアクセス活用事例)
From Evernote: |
【14-C-2】決済だけではないペイパル(ペイパルアクセス活用事例)Clipped from: http://event.shoeisha.jp/detail/1/session/15/ |
2012年11月7日
ブランチの作成&追跡ブランチ化の方法
久しぶりの更新です。今回のgitの使い方のお話です。
本来gitは分散型で、中央集権型のサーバを持たない使い方が想定されていると思いますが(実際オープンソースの開発だと特に)、仕事でgitを使うような場合はやはりSubversionに慣れているのもあり、共有サーバを一台用意し、それに対して開発メンバがPushしていくという使い方が多いかと思います。
そのような使い方の場合は、リモートにあるブランチを追跡する追跡ブランチをローカルに持っておくのが便利ですが、今までは「ローカルブランチ作成」→「追跡ブランチ化のコンフィグ設定」→「リモートへ作成したブランチをPush」という手順で追跡ブランチを作成していました。
ちょっとgitの使い方を調べていた所、もっと賢い方法があったので紹介します。(自分への備忘録としても。。。)
これで、追跡ブランチとして新しいブランチを作成できます。
2011年11月28日
Azure Tableによるデータ検索 - エンティティの結合(Join)
Windows Azure Tableに対するLINQクエリおよびREST APIでは、Joinによるエンティティの結合をサポートしていません。もちろんAzure Tableを使う時には、関連するエンティティのプロパティをコピーさせるなどしてJoinする必要がないようにデータモデルの設計を行います。
ただそれでも、仕様変更や機能追加によって当初想定していなかったデータの結合が必要になる場合もあります。そして、どうしてもデータモデルを変更したくないような場合には、Join処理が必要になってくると思います。
今までシステムを実装してきた中で行ったJoinの実装パターンを紹介します。
Azure Tableによるデータ検索処理
Windows AzureのTableストレージにおけるデータ検索では、基本的にはStorage Client LibraryのLinq to Azure Tableを使って開発するものの、AzureのLinqでは一部のLinq式しかサポートしておらず大部分のLinq式がサポート外になっています。http://msdn.microsoft.com/en-us/library/windowsazure/dd135725.aspx
そのため、Azure Tableにおいてデータ検索を行う際は、Linq to Objectを並行して利用する必要が出てきます。この使い分けについての基本的な考え方は表示対象エンティティをLinq to Azure Tableで取得し、その後のデータ加工処理をLinq to Objectで行うといった雰囲気です。ただしこの2つのLinqの使い分けでは、Linq to Azure Tableにおける取得可能なエンティティ数に制限がある(1000件未満、クエリ実行時間5秒以下 参考:http://msdn.microsoft.com/en-us/library/windowsazure/dd179421.aspx)ので、この制限にかからないよう十分にLinq to Azure Tableで絞込みを行う必要です。
2011年6月17日
Windows AzureでLog4Net RollingFileAppenderを使う
Windows Azure上で、Log4NetのRollingFileAppenderによりBlobストレージ上にログファイルを書きだすようにしてみたので、その方法についてまとめです。
やり方自体は単純で、RollingFileAppenderのログファイルの出力先を Windows Azureの Local Storageに設定し(これが意外と面倒)、出力先のLocal Storageの内容をDiagnostics Monitorで転送させてるだけです。またlog4netの設定ファイルlog4net.configはBlobストレージ上に置かれたものを使うようにしました。
2011年5月30日
2011年5月16日
Azure Table Storageに非サポート型のプロパティを保存する
標準のAzure Table Storageにおいては以下の型のみが保存可能な型としてサポートされており、これ以外のプロパティとして持つエンティティを保存しようとするとエラーになってしまいます。
| EDM型 | CLR型 | 詳細 |
| Edm.Binary | byte[] | バイトの配列 (サイズは最大 64 KB) |
| Edm.Boolean | bool | ブール値 |
| Edm.DateTime | DateTime | UTC 時刻として表現された 64 ビット値 (サポートされている値の範囲は 1/1/1601 ~ 12/31/9999) |
| Edm.Double | double | 64 ビットの浮動小数点値 |
| Edm.Guid | Guid | 128 ビットのグローバル一意識別子 |
| Edm.Int32 | Int32 or int | 32 ビットの整数 |
| Edm.Int64 | Int64 or long | 64 ビットの整数 |
| Edm.String | String | UTF-16 でエンコードされた値 (サイズは最大 64 KB) |
ただ、この制限に従って実際にシステムを作ろうとすると、ビジネスロジック層がドメインモデルとして設計されている場合に、ドメインオブジェクト群をストレージへ保存する際、そのオブジェクト構造をフラットに展開してからデータを保存しなければなりません。また、そのデータを読み込む時もフラットな構造から元のドメインオブジェクトに戻す処理が必要です。
データを読み書きするためにいちいちこんなことはやってられないので、今回はStorage Client APIをカスタマイズして、オブジェクト構造をそのままTable Storageへ保存できるようにします。
2011年4月6日
2011年4月4日
TableストレージにおけるExpect100ContinueとUseNagleAlgorithmの効果(1)~1件のエンティティ追加の場合
Windows AzureのTableストレージに関するホワイトペーパー「Windows Azure Table – テーブルストレージのプログラミング」(http://www.microsoft.com/japan/windowsazure/whitepapers/)では、ストレージのパフォーマンス向上のために、Expect100ContinueおよびUseNagleAlgorithmをfalseにすることが推奨されている(p67-68あたり)。
ただ実際のところ、この設定がどの程度パフォーマンスに影響を及ぼすか不明だったため、試してみた。
Windows AzureでZeroMQを使ってみた
Windows Azureのインスタンス間通信にzeromq(http://www.zeromq.org/)をWindows Azure上で使う機会があったので、使うまでの手順とか注意点を記す。またWindows Azureプロジェクトからzeromqを利用するために、clrzmq2(http://www.zeromq.org/bindings:clr)というzeromqのC#バインディングを用いる。
2011年3月31日
Visual StudioにDLLをコピペする際の注意点
64bit版Windows 7において、Visual Studio上にSystem32のDLLをコピペすると32bit版のDLLがペーストされる問題があった。わかってから考えると当然かとは思うものの結構ハマったのでメモ。
2011年3月10日
Azure SDK 1.4がリリースされました
今回のアップデート内容は以下。(訳が間違っていたら教えてください、修正します)
- Windows Azure Connect:
- 管理UIでの複数管理者サポート
- クライアントUIの更新(ステータス通知やDiagnostic周りの機能向上)
- 非英語版WindowsでConnect Clientがインストールできるようになった
- Windows Azure CDN:
- Windows Azure CDN for Hosted Services: WebRoleやVMRoleのコンテンツをWindows Azure CDN経由で配信出来るようになった。静的なコンテンツは自動的にエッジサーバ(United States, Europe, Asia, Australia, South America)でキャッシュされ最大の帯域幅と低レイテンシでユーザにコンテンツが届けられる。
- Serve secure content from the Windows Azure CDN: Azure管理ポータル上のオプション設定を有効にすると、https経由でAzure CDN上のコンテンツをセキュアに配信できる
2011年3月4日
ODataObjCを使ったiOSアプリを作ってみた(4)~ソースコード公開しました
↓からダウンロードできます。
http://cloudbookshelf.codeplex.com/
Apache License 2.0で配布してますので、ご自由に使ってください。
ODataObjC(OData Client for Objective-C)に関する情報がもっともっと増えていけばいいなと思います。





