タグ

googleappengineに関するhata186cのブックマーク (10)

  • App Engine 1.3.4 のOpenID 認証 - hidemonのブログ

    月刊 App Engine SDK の6月号は1.3.4。Google I/Oではfor business とか、VMware との協業とか、mapper APIとかchannel APIとかもっと面白い話しがあったようだけど、SDK 1.3.4の最大の売りは、OAuth対応とOpenID対応の二つのユーザ認証機構。ここではOpenIDでの認証のしかたを書いてみる。 リクエストを送るには3rd partyのライブラリかなんかが必要なんだろうと思って、いろいろ調べたり試したりして、数時間を無駄にしたのだけど結局わからず、twitterでつぶやいたら @shin1ogawa さんに1分後に教えていただいた。 ありがとうございました@shin1ogawaさん!そして、おそるべしtwitter。。。 OpenID の動作 OpenID はFederated Identity と呼ばれるものの一つで

    App Engine 1.3.4 のOpenID 認証 - hidemonのブログ
  • Google App Engineでランキングやページングを実現する - $koherent->diary

    昨日一昨日、Google App Engine (GAE)に関する日最大の勉強会(だと思う)appengine ja night #7 (ajn7)が行われました。 その中で『ランキング問題』が話題に上がりました。『ランキング問題』とは、何十万件もの点数のデータがあるときに、App Engine上で、「◯点は何位です」と高速に求めることは難しい、という問題です。(◯ページ目を表示、というページングもこれと同じ種類の問題になります。) ajn7では「上位でない限り正確な順位は必要ないのではないか」という話になりましたが、Skiplistを用いた検索アルゴリズムを使えば正確かつ高速に順位を求めることができるのではないかと思い、実装&検証してみました。 ランキング(順位取得)のデモ 下記ページで順位取得のデモを動かしています。スコア(点数)を入力すると順位と取得にかかった時間が表示されます(時

    Google App Engineでランキングやページングを実現する - $koherent->diary
  • Song of Cloud: 送金のトランザクション処理パターン

    App Engineで現実的な送金処理について考え中です。 ドラフト版なので、怪しい点があればご指摘いただければ幸いです。 コメントで情報いただきました。 Distributed Transactions on App Engineで紹介されてる方法と基的に同じなので、おそらく問題なく動きそうです。ありがとうございました。 今回はこんな図を使います。 この図の読み方は、矢印の方向にユースケースの一連の処理(またはリクエストの処理)が流れていて、右に行くほど時間が経過しています。そして、矢印がくし刺しにしている四角形は、そのユースケース中で操作するエンティティを表しています。 また、左右の位置が同じ矢印は、基的には同じ時刻に発生したイベントを表しています。上記の図では、A, B, Cがそれぞれの口座エンティティを同時に操作している感じです。 並行性制御(おさらい) 最初の図のように、それ

  • Song of Cloud: グローバルトランザクション処理のパターン

    送金のトランザクション処理パターンでは、Google App Engine (GAE)のEntity Groupにまたがるトランザクション処理を行う方法について紹介しました。また、それに少しだけ最適化を施した結果、下図のような処理になりました。 しかし、このトランザクション処理はいくつかの制約があります。 (a) 送金中に合計金額がずれる (b) 送金先の口座に制約をかけられない このトランザクションはEventual Consistency (結果整合性)というレベルの整合性保証しかしないため、2つのEntity Groupの値にずれが発生する場合があります(a)。たとえば、口座(A)から口座(B)に1000円だけ送金する場合、(1)と(2)の間は「口座(A)から出金したが、口座(B)に入金されていない」という状態になります。 また、送金元の口座に制約はかけられますが、送金先の口座に制約

  • Google App Engineでコードを書くと、処理のひとつひとつが課金に見える

    先週末、ちょっとしたプログラムをGAE/Jで動かして実際に使ってもらってみたのですが、そうすると、いままでテストでちょこちょこやってたときには全部のDaily Quotaが0%だったものが、数%の数字を示すようになります。 これを、ちゃんとプロモーションして多くの人に使ってもらおうとすると、課金が発生したり制限にひっかかったりしそうです。 で、たとえばDatastore APIの呼び出し回数がヤバいとして、API呼び出しを減らすためにキャッシュしようとすると、MemcacheのほうのAPI呼び出し回数がヤバくなってきます。 で、じゃあということでデータストアにデータを置くようにすると、保存量の制約で課金がかかってきます。で、それならと、データストアに置くのはシリアライズしたデータにしてデータ量が最低限になるようにすると、今度はその処理をするためのCPU時間で課金がかかってきます。 コードを

    Google App Engineでコードを書くと、処理のひとつひとつが課金に見える
  • Song of Cloud: App Engine SDK 1.3.0 (overview)

    先ほどApp Engine SDK 1.3.0がリリースされました。 新機能について簡単に紹介します。 Blobstoreサービス 今回のアップデートの最大の目玉は、Blobstore APIが追加された点です。 これまではApp EngineのDatastoreを利用していましたが、これに格納できるそれぞれのデータは1MBという厳しい上限があったため、巨大なデータを格納する用途には向いていませんでした(巨大なデータを格納するには、データを分割したり、他のサービスと連携したりしていました)。 今回追加されたBlobstoreは巨大なデータ(Binary Large OBject)を格納するためのAPIで、50MBまでのデータを取り扱えるようです。 ただし、APIを見る限りでは、ファイルの内容を直接アプリケーション内で操作する用途ではなく、現時点ではアップロードされたファイルの保存と、そのフ

  • たけまる / Google App Engine のデータストアは Bigtable をどのように使っているのか

    _ Google App Engine のデータストアは Bigtable をどのように使っているのか [gae][bigtable] Google App Engine (GAE) が発表されてから2週間ほど経ちます.GFS や Bigtable という名前だけはよく耳にするようになりましたが,Bigtable と GAE のギャップについては話題になっていないように思います. Bigtable は multi dimensional sorted table と言われるように, primary key (row key) でソートされたテーブルでしかありません.つま り,GAE のデータストアが提供するような多様な検索機能は持たないわけ です.というわけで,GAE のデータストアを実現するために,Bigtable がどのように使われているのかを考えてみました. # この件について,もし

  • Google App Engine入門:実行効率を犠牲にせずに開発効率だけを上げるテクニック

    一つ前の富豪プログラミングのエントリーともつながる話だが、Google App Engineは「ちゃんとスケーラビリティを考慮してアプリケーションを作るには何に気をつけなければならないか」を勉強するには絶好の環境だ。そこで今回は、その「ケチな大富豪的なプログラミング」の実践編。 Google App Engine上のアプリをいくつか書いているうちに、必要に迫られて自然発生的にできてきたのが、gdispatchという数十行のコードからなる小さなモジュール(ソースコードはgithubに置いてある)。これをGoogle App Engineに標準で付いて来るwebappと組み合わせてフレームワークとして使っている。 gdispatchを設計する上で重視したのは、 (1)Google App Engine上でのアプリの開発を効率化する上で「明らかにこれがあると開発効率が格段に向上する」というもの以

  • Song of Cloud: 分散トランザクション処理の最適化

    前回の「送金のトランザクション処理パターン」では、EntityGroupにまたがるトランザクション処理について簡単に紹介しました。 様々なコメントいただきまして(ありがとうございます)、どうやら「Distributed Transactions on App Engine - Nick's Blog」のやり方が非常に優れているようですので、今回は「送金のトランザクション処理パターン」で紹介した手法に最適化を施して、Nickさんのやり方に近付けてみようと思います。 今回紹介する最適化は、前回のような「狭い範囲のACIDトランザクション」と「べき等性による処理の伝搬」を組み合わせた分散トランザクション一般に適用できそうな手法です。そんなに大層なことはしていませんが、例によってまだ構想段階ですので、また至らない点があればご指摘いただければ幸いです。 おさらい 送金のトランザクション処理パターンで

  • ここが大変だよBigtableとGoogle App Engine

    ここが大変だよBigtableとGoogle App Engine:分散Key-Valueストアの命「Bigtable」(3)(1/2 ページ) RDBとは別の、クラウド時代のデータベースとして注目を浴びている「分散Key-Valueストア」。その命ともいえる、Googleの数々のサービスの基盤技術「Bigtable」について徹底解説 月間3000万PVの大規模サイトの運用費が月額4万円!? 月間3000万PV相当の膨大なトラフィックを楽々とさばく大規模サイトが、月額4万円弱で運用されている。 Google App Engine(以下、App Engine)が普及するにつれて、そんな驚愕の国内事例も登場しつつあります。GClueがApp Engine上で実装したmixiアプリモバイルモバイルには、1日100万PV以上のアクセスが集中している状態でもサービスのレスポンス低下やダウンは皆無

    ここが大変だよBigtableとGoogle App Engine
  • 1