GAEについて

・2008/04にpythonを開発言語としてstart


googleクラウドのハードウエア
スケールアップ:サーバの性能を向上させるため、高性能サーバに移行
スケールオウト:サーバの性能をそのままして、台数を増やす
googleクラウド → スケールアウトによって負荷の増加に対応


googleクラウドのソフトウエア
□構成
Google File System(大規模分散ファイルシステム)
MapReduce(大規模分散並列処理システム)
Bigtable(大規模分散データベース)
・Chubby(分散ロックサービス)

□分散システム
・サーバ起動
サーバ → リクエストディスバッチャ

・クライアントからリクエス
サーバ → クライアント ⇔ リクエストディスバッチャ
  (②サーバ通信)  (①サーバ問い合わせ)
 ↓フェイルオーバ             ↓フェイルオーバ
代替サーバ1,2...         代替ディスバッチャ1,2...

・ディスバッチャの構造
上位ディスバッチャ⇔リクエスト〜 ⇔クライアント群+サーバ群
               
Bigtableにアクセス
Bigtableアクセス役割を受け持つサーバ→ タブレットサーバ
Chubbyが加わる


□CAP定理
Consistency
Availability
Tolerance to network Partitions
・CP○ A×
・AP○ C×
eg. googleなどのクラウド環境
・AC○ P×


□BASE
Basically Available
Soft-State
Eventually Consistent

□GAEモジュール構成 
         サービス(mail,XMPP,google account...)
              ↑
cronスケジュール→ ユーザapp→ データストア
         (python +java) (Bigtable)
              ↑       ↑
          programアクセス onlineアクセス  

・データストアアクセス
GAEでのメインとなる機能
CRUD(書き込み、読み込み、更新、削除)処理できる
Bigtable→ キー、バリュー型データストア

・cron
cronで定期スケジュール実行可能
    
・Secure Data Connector
企業システムと連携、firewall内のデータに安全アクセス機能を提供

・GAEjのJAVA機能制限
→file書き込みできない、読み込み可能
→プロセス・スレッドの生成と利用できない
→socket通信使用できない
→UI API使用できない(AWT、Swing)
→ログ出力はjava.util.logging.Loggerは必ず使用
→JNI(Java Native Interface)によるJava programからの、他言語で開発されたnativecode programの利用