世界 40 か国以上に 18 万人超のスタッフを擁する Capgemini は、コンサルティング、技術、アウトソーシング サービスの世界的大手企業です。同社の 2015 年の世界売上高は 119 億ユーロに達しました。Capgemini はお客様とともに、お客様のニーズに合ったビジネス、技術、デジタル ソリューションを開発して提供し、お客様のイノベーションと競争力向上に貢献しています。

また、Capgemini は多文化を尊重する組織として、独自の仕事の進め方である Collaborative Business ExperienceTM を開発し、グローバルなサービス モデルである Rightshore® を利用しています。



GCP を担当する数百人の .NET 開発者と認定エンジニアを抱える CI&T は、Microsoft スタックを利用していて、GCP の可用性やセキュリティ、利用料金の恩恵を受けたいと考えている企業にとって、頼りになるグローバル パートナーです。

CI&T はおそらく、私たちの最も古くからの Windows パートナーでしょう。Next '16 の基調講演で披露したデモのときも力を貸してくれました。



Magenic は、デジタル イノベーションの障害を十分理解しており、適切な技術を適用してお客様のビジネスのイノベーションを支援します。

ビジネスの成長を加速させるには、お客様の業界の課題を理解しているだけでなく、それらの克服のために適切な技術を活用できるパートナーが必要です。戦略計画の策定から技術的な実行に至るまで、Magenic は Microsoft .NET などのプラットフォームを利用して、あらゆるチャンネル向けの新しいアプリケーションを作成するとともに、既存アプリケーションをモダナイズし、GCP で最適に動作させます。

既存 ASP.NET アプリの GCP への移行に関する Magenic のガイダンスに興味がある方は、“Using Google Cloud to Host .NET Applications”(Google Cloud による .NET アプリケーションのホスト)と、“How to Lift-and-Shift a Line of Business Application onto Google Cloud Platform”(リフト&シフトで業務アプリケーションを GCP に移行する方法)を参照してください。



.NET に関する Falafel の専門知識やノウハウは広く知られており、同社は 2003 年から業界の有力企業に協力しています。

GCP の実装と管理に関するサポートを必要としているお客様に対し、Falafel はお客様のスタッフ向けの研修や、オンサイトでのサポート(メンタリング)、あるいは Migration Planning & Execution(移行、計画、実行)や Compute Engine Configurations(Compute Engine の構成)、エンドツーエンド ソリューションといったソリューション全体の構築を行います。同社のエンジニアは、ソリューションを開発するにあたって、クラウドの柔軟性、スケーラビリティ、経済性をフルに活用します。

GCP 上 のWindows / .NET ワークロードに関する Falafel の専門知識やノウハウを調べたい方は、同社の最近の一連のブログ記事や、書籍『Google Cloud for .NET Developers』(.NET 開発者のための Google Cloud)をご覧ください。



Neudesic は、ビジネス イノベーションを支援する技術パートナーとして信頼を集めており、デジタル モダナイゼーションを通じてお客様に重要なビジネス成果をもたらします。同社のコンサルタントは、ビジネスと技術それぞれの専門知識やノウハウを組み合わせ、幅広いクラウドおよびデータ主導ソリューションを提供します。その中には、カスタム アプリケーション開発(.NET 以降)、包括的マネージド サービス、ビジネス ソフトウェア製品が含まれます。



SADA Systems は、GCP インフラストラクチャ上のお客様の Windows 実装に対する継続的監視およびサポートを、包括的かつ総合的なアプローチで行うマネージド サービスを提供します。IT 業界の中でも先進的企業の 1 社である SADA は、従来はオンプレミス環境でのみ可能だった方法で、お客様の Windows 実装をサポートします。

SADA は、要望に応じてお客様と協力し、Google のサポート体制における独自のパートナー リソースを通じて問題のエスカレーションも行います。また、お客様のクラウド環境における GCP インフラストラクチャ コンポーネントのサポートも提供します。同社は Microsoft National Solutions プロバイダーであり、お客様の Windows プラットフォームのプレミアム サポートも行っています。

Windows / .NET ワークロードに最適な環境としての GCP

GCP を Windows および .NET ワークロードに最適な環境へと進化させるためには、優れた技術サポートを提供するだけでは不十分です。Google は大きなエコシステムの一部にならなければなりません。

私たちは、今回の Windows Partner Program により、お客様が GCP を最大限に活用できるように支援する人々を結集しています。待つ理由はもうありません。今こそお客様の Windows および .NET アプリをクラウドに移行してはいかがでしょうか。

* この投稿は米国時間 3 月 9 日、Product Manager である Chris Sells によって投稿されたもの(投稿はこちら)の抄訳です。

- Posted by Chris Sells, Product Manager


新しくなった稼働時間チェックのページには、チェックが行われている場所と、それぞれの状況が表示されます。



.NET アプリのカスタム イベントのログを記録

リソースを監視するだけでなく、アプリケーション特有の重要なイベントのログも記録できます。“Google.Cloud.Logging.V2” はログ用 .NET クライアント ライブラリのベータ版で、Stackdriver と Log4Net のインテグレーションによってカスタム イベントのログが簡単に生成できます。

ステップ 1 : ログ クライアントの NuGet パッケージを Visual Studio のプロジェクトに追加します。

Visual Studio のソリューションを右クリックし、“Manage Nuget packages for solution” を選択します。Visual Studio の NuGet ユーザー インターフェースにて “Include prerelease” にチェックを入れ、Google.Cloud.Logging.V2 という名前のパッケージを検索し、インストールします。次に、“Google.Cloud.Logging.Log4Net” パッケージも同様にインストールします。

ステップ 2 : 以下のコードが含まれているウェブ アプリケーションの Web.Config ファイルに Log4Net XML の設定セクションを追加します。

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
   <appender name="CloudLogger" type="Google.Cloud.Logging.Log4Net.GoogleStackdriverAppender,Google.Cloud.Logging.Log4Net">
     <layout type="log4net.Layout.PatternLayout">
       <conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message" />
      </layout>
      <projectId value="YOUR-PROJECT-ID" />
      <logId value="mySampleLog" />
    </appender>
    <root>
     <level value="ALL" />
     <appender-ref ref="CloudLogger" />
    </root>
  </log4net>

ステップ 3 : Logging を利用できるようにするため、次のコードをアプリケーションの Global.asax.cs ファイルに追加し、Log4Net を設定します。

log4net.Config.XmlConfigurator.Configure();

Global.asax.cs の .The Application_Start() メソッドは次のようになるはずです。

  protected void Application_Start()
{
    GlobalConfiguration.Configure(WebApiConfig.Register);

    // Configure log4net to use Stackdriver logging from the XML configuration file.
    log4net.Config.XmlConfigurator.Configure();
}

ステップ 4 : クライアント ライブラリに含めるために、次のステートメントをアプリケーション コードに追加します。

using log4net;

ステップ 5 : アプリケーションに次のコードを追加し、Stackdriver のログ ビューアに表示されることになるログを指定します。

// Retrieve a logger for this context.
ILog log = LogManager.GetLogger(typeof(WebApiConfig));

// Log some information to Google Stackdriver Logging.
log.Info("Hello World.");

このコードをビルドして実行すると、以下のようなログ エントリが表示されます。



.NET アプリケーション用ログ クライアント NuGet パッケージのインストール方法と使用方法については、こちらのドキュメントを参照してください。

.NET アプリの診断

VM が問題なく動いていたとしても、予期しない使用パターンなどにより、アプリケーションにランタイムの例外が発生することがあります。そこで、耳寄りの情報をお届けしましょう。私たち Google は先ごろ、Compute Engine VM 用の Stackdriver Diagnostics ASP.NET NuGet パッケージをリリースしました。これにより、アプリケーションのすべての例外エラーが自動的に Stackdriver Error Reporting で記録されるようになります。

ステップ 1 : Error Reporting API を有効にします。

ステップ 2 : Visual Studio のソリューションを右クリックし、“Manage Nuget packages for solution” を選択します。“Include prerelease” にチェックを入れ、“Google.Cloud.Diagnostics.AspNet” という名前のパッケージを検索し、インストールします。

ステップ 3 : アプリケーション コードに以下のライブラリを追加します。

using Google.Cloud.Diagnostics.AspNet;

ステップ 4 : .NET ウェブ アプリケーションの Register メソッドに次のコードを追加します。

public static void Register(HttpConfiguration config)
{
    // Add a catch all for the uncaught exceptions.
    string projectId = "YOUR-PROJECT-ID";
    string serviceName = "NAME-OF-YOUR-SERVICE";
    string version = "VERSION-OF-YOUR-SERVICE";
    // Add a catch all for the uncaught exceptions.
    config.Services.Add(typeof(IExceptionLogger), 
        ErrorReportingExceptionLogger.Create(projectId, serviceName, version));
}

以下は、Error Reporting に表示される例外の一例です。



例外をクリックすると詳細が確認できます。



.NET アプリケーション用 Stackdriver Diagnostics ASP.NET NuGet パッケージのインストール方法と使用方法については、こちらのドキュメントを参照してください。

使ってみよう

Google Cloud 上の .NET アプリケーションでロギングやモニタリング、診断機能を使用することがいかに簡単か、おわかりいただけたと思います。

ぜひ Google Cloud に .NET アプリケーションをデプロイしてみてください。そして、ログ エージェントやモニタリング エージェントを VM 上にインストールし、アプリケーションに Stackdriver Diagnostics とログ クライアント パッケージを追加するのです。

これで、アプリケーションに起こっていることが確実に記録されます。夜中に何かが発生した場合でも通知されますので、これまでよりもゆっくり眠ることができるでしょう。

* この投稿は米国時間 12 月 21 日、Developer Relations である Jonathan Simon によって投稿されたもの(投稿はこちら)の抄訳です。

- Posted by Jonathan Simon, Developer Relations

アプリを “DemoFlexApp” という名前で Visual Studio のデフォルトの “Projects” ディレクトリに保存します。次のダイアログで “Web Application” を選択し、“OK” をクリックします。

これでアプリが生成されます。F5 キーを押してローカルで試してみましょう。アプリがビルドされ、実行されてブラウザ ウィンドウに表示されます。表示されたらブラウザを閉じ、デバッグ セッションを停止して、アプリを停止します。

ステップ 2 : Docker コンテナとしてパッケージ

次のステップでは、作成したアプリを App Engine flexible で実行する準備をしましょう。最初に、コンテナとその内容を定義します。Docker をインストールする必要はありませんので、ご心配なく。App Engine flexible はデプロイ プロセスの一環として、Docker イメージをリモートでビルドしてくれます。

ここではコマンドラインから作業します。“Windows” キーを押しながら “R” キーを押し、ダイアログで “cmd.exe” とタイプして、新しいコマンドライン ウィンドウを開きます。

そして、ステップ 1 で作成したプロジェクトを含むディレクトリに移動してください。プロジェクトのパスを取得するには、Visual Studio のソリューション エクスプローラーでプロジェクトを右クリックし、“Open Folder in File Explorer(エクスプローラーでフォルダーを開く)” オプションを選びます。

エクスプローラー ウィンドウからプロジェクトのパスをコピーし、コマンドライン ウィンドウに貼り付けます。

まず、アプリの Docker イメージの内容を 1 つのディレクトリに作成します。ディレクトリの中には、アプリのすべてのパッケージ、ページ、クライアント サイド スクリプトが含まれます。.NET CLI がこのディレクトリを作成し、アプリを “発行” します。そのためのコマンドは次のとおりです。
dotnet publish -c Release
アプリは Release 構成でデフォルトの publish ディレクトリに発行されます。アプリの発行プロセスでは .NET CLI がすべての依存関係を解決し、他のすべてのファイルも含めてこの “発行先” ディレクトリにまとめます。ちなみに、このディレクトリのことを Microsoft は .NET Core Portable App と呼んでいます。

発行先ディレクトリは、アプリを構成するすべてのファイルを含み、.NET Core がサポートするあらゆるプラットフォームでアプリを実行するのに利用できます。以下のコマンドにより、このディレクトリからアプリを実行できます。
cd bin\Release\netcoreapp1.0\publish
dotnet DemoFlexApp.dll

このコマンドを実行するときは、すべてのリソースが見つかるように、必ず発行先ディレクトリをカレント ディレクトリにしておきます。

コンテナとその内容を定義したら、次の作業は App Engine flexible にデプロイするアプリを構成することです。そのためには以下の 2 つのファイルが必要になります。
  • Dockerfile : アプリ ファイルを Docker コンテナにパッケージする方法を記述します。
  • app.yaml : Google Cloud SDK ツールにアプリのデプロイ方法を知らせます。
アプリのデプロイは、上で作成した発行先ディレクトリから行うことになります。

発行先ディレクトリに “Dockerfile” という空のファイルを作成し、以下の行をコピーして貼り付け、保存します。

FROM microsoft/dotnet:1.0.1-core
COPY . /app
WORKDIR /app
EXPOSE 8080
ENV ASPNETCORE_URLS=http://*:8080
ENTRYPOINT ["dotnet", "DemoFlexApp.dll"]
Dockerfile は、Docker イメージの内容を記述したものです。まず既存イメージを指定し、続いてファイルの追加など、既存イメージに対する変更を記述していきます。

私たちのリポジトリの Dockerfile では、最初に Microsoft の公式イメージを指定します。このイメージは、.NET Core アプリを実行するようにあらかじめ構成されています。さらに、このディレクトリからアプリを実行するのに必要なアプリ ファイルやツールを追加しています。

この Dockerfile に含まれる 1 つの重要な構成が、アプリが受信トラフィックをリッスンするポートを、App Engine flexible の要件に従って 8080 に設定していることです。これは、環境変数 ASPNETCORE_URLS で設定されています。ASP.NET Core アプリはこの環境変数を使って、リッスンするポートを決めています。

一方、app.yaml は、アプリを App Engine(今回は App Engine flexible)にデプロイする方法を記述したものです。以下は、アプリを App Engine flexible で実行するうえで必要最小限の app.yaml ファイルです。カスタム ランタイムと flexible environment を指定しています。

発行先ディレクトリに “app.yaml” という新しいファイルを作成し、以下の内容をコピーして貼り付け、保存します。
runtime: custom
vm: true

ステップ 3 : App Engine flexible にデプロイ

Dockerfile と app.yaml を発行先ディレクトリに保存したら、アプリを App Engine flexible にデプロイする準備は完了です。

アプリのデプロイには Google Cloud SDK を使います。こちらの手順に従って Google Cloud SDK をマシンに完全にセットアップしてください。課金を有効にした Google Cloud Platform プロジェクトも必要になります。

アプリを構成し、アプリをデプロイするプロジェクトを選択したら、いよいよ App Engine flexible へのデプロイです。デプロイするには以下のコマンドを実行します。
gcloud app deploy app.yaml
このコマンドは、完了するまでしばらく時間がかかります。最初は特にそうです。すべてのセットアップを実行しなければならないからです。コマンドが完了したら、新たにデプロイされたアプリをブラウザで表示してみましょう。
gcloud app browse
表示されましたね! 以上で完了です。ASP.NET Core アプリを Docker コンテナにパッケージし、App Engine flexible にデプロイしてみました。多くの ASP.NET アプリが App Engine で実行されることを、私たちは楽しみにしています。


* この投稿は米国時間 10 月 5 日、Software Developer である Ivan Naranjo によって投稿されたもの(投稿はこちら)の抄訳です。

- Posted by Ivan Naranjo, Software Developer

gcloud の設定が済んでいて認証だけを行いたい場合には、代わりに下記のコマンドを実行します。

$ gcloud auth login

インストール

それでは、新しいライブラリをインポートして使ってみましょう。Visual Studio の中でプロジェクトを作成して(このライブラリではまだ .NET Core プロジェクトをサポートしていないので、.NET Core プロジェクトにはしないでください)、プロジェクトの “References” を右クリックし、“Manage NuGet Packages” を選択します。




NuGet ウィンドウの中の “Browse” を選択して、“Include prerelease” にチェックを入れます。google-cloud-dotnet ページには、サポートされているサービスとその NuGet パッケージ名のすべてのリストがあります。

ここでは、Cloud Storage 用のライブラリをインストールしてみましょう。Cloud Storage 用のライブラリを見つけるためには、Google.Storage を検索する必要があります。


検索結果のリストには、Cloud Storage 用の新しいクライアント ライブラリ(Google.Storage)と、このライブラリが依存している低水準ライブラリ(Google.Apis.Storage)が含まれており、Google.Storage を選んでインストールします。インストールが完了すると、Google.Storage は参照として、Google.Apis は依存関係として表示されるはずです。




これで OK です。Cloud Storage 用の新しいクライアント ライブラリを .NET アプリケーションから利用できるようになりました。

サンプルが欲しい方は、このライブラリの GitHub ページの Cloud Storage の節をチェックしてみてください。

試してみた方は、ぜひ感想をお聞かせください。何か問題がありましたら、こちらにご連絡ください。もしよろしかったら、.NET アプリケーションのサポート向上をお手伝いしていただけるとうれしいです。

Google Cloud のユーザー エクスペリエンス向上をお手伝いしてくださる方は、ここをクリックしてください!

- Posted by Mete Atamel, Developer Advocate