App Engine のメイン ページには、「Python 環境用に記述されたアプリケーション コードは、Python のみで記述する必要があります。C 言語で記述された拡張機能はサポートされていません」と記載されています。
https://developers.google.com/appengine/docs/whatisgoogleappengine
C/C++ アプリを SaaS サービスに移植する必要があります。Google App Engine で実現できますか?
App Engine のメイン ページには、「Python 環境用に記述されたアプリケーション コードは、Python のみで記述する必要があります。C 言語で記述された拡張機能はサポートされていません」と記載されています。
https://developers.google.com/appengine/docs/whatisgoogleappengine
C/C++ アプリを SaaS サービスに移植する必要があります。Google App Engine で実現できますか?
現在、Google App Engine で使用できるランタイムは、Go、Java、Python、PHP の 4 つです。
使用できるランタイムはこれらだけであるだけでなく、言語の機能も制限されます。Web アプリケーションのスケーリングを支援するために、従来利用可能なサブシステムの多くは利用できません。リンクしたページの主な例では、ソケットを開くことやファイルシステムへの書き込みは許可されていません。実時間で 1 分以上かかるスレッド化または計算の実行は、もう 1 つの一般的な制限です。
サンドボックス
アプリケーションは、基盤となるオペレーティング システムへの制限付きアクセスを提供する安全な環境で実行されます。これらの制限により、App Engine はアプリケーションのウェブ リクエストを複数のサーバーに分散し、サーバーを起動および停止してトラフィックの需要を満たすことができます。サンドボックスは、ハードウェア、オペレーティング システム、および Web サーバーの物理的な場所に依存しない、独自の安全で信頼できる環境にアプリケーションを分離します。
安全なサンドボックス環境の制限の例には、次のものがあります。
- アプリケーションは、提供された URL フェッチおよび電子メール サービスを介してのみ、インターネット上の他のコンピューターにアクセスできます。他のコンピューターは、標準ポートで HTTP (または HTTPS) 要求を行うことによってのみ、アプリケーションに接続できます。
- アプリケーションは、どのランタイム環境でもファイル システムに書き込むことができません。アプリケーションはファイルを読み取ることができますが、アプリケーション コードでアップロードされたファイルのみです。アプリは、リクエスト間で保持されるすべてのデータに対して、App Engine データストア、memcache、またはその他のサービスを使用する必要があります。Python 2.7 環境では、バイトコードの読み取り、書き込み、および変更が可能です。
- アプリケーション コードは、Web 要求、キューに入れられたタスク、またはスケジュールされたタスクに応答してのみ実行され、いずれの場合も 60 秒以内に応答データを返す必要があります。リクエスト ハンドラは、レスポンスが送信された後にサブプロセスを生成したり、コードを実行したりすることはできません。
Google App Engine の焦点は、提供するスケーラブルなサービスに基づいて構築されたシングル スレッド アプリケーションを作成することです。データの保存、インターネット上の他のリソースへのアクセス、メールの送受信、キャッシュに Google のメカニズムを使用する必要があるため、これは従来の C/C++ アプリ開発からの大きなパラダイム シフトです。この理由は、アプリケーションのボトルネックを排除して、アプリケーションの多数のインスタンスを要求の要求に基づいて起動および破棄できるようにするためです。
従来の C/C++ アプリを GAE (および他の多くの SaaS) に移植するには、多くのリファクタリングが必要になる可能性が高く、SaaS プラットフォームで実行できる利点を活用するには、書き直しが必要になります。