ビジネスアプリケーションを素早く柔軟に投入するための IT 基盤
【Web アプリケーション自動生成ツール Web Performer とクラウド Google Kubernetes Engine を使用した、システム開発・運用・保守の徹底効率化】
後編

2020-06-15

Contents

前編について

前編ではアプリケーション自動生成ツール Web Performer とクラウド、及び、コンテナ技術の有用性について説明しました。後編ではそれらをより効率的に活用する為に Google Kubernetes Engine(GKE)の有用性を説明した後、その GKE と Web Performer を組み合わせた構成例を紹介します。

前編は こちら

ゴール

当コラムの前編・後編を通じて、みなさまに到達して頂きたいゴールは以下となります。

  • Web アプリケーション自動生成ツール Web Performer の有用性を知る
  • Google Kubernetes Engine(GKE)の有用性を知る
  • Web Performer と GKE を組み合わせるとビジネスに素早くシステムを導入できる事を知る
  • Web Performer と GKE を組み合わせると開発から運用、保守が飛躍的に効率化される事を知る

Google Kubernetes Engine の有用性

Google Kubernetes Engine(GKE)

Kubernetes は Googleが 2014 年にオープンソース化したコンテナ管理ツールです。前述したとおりコンテナはそれだけで非常に有用な仕組みですが、その扱う数が大量になると管理ツールが欲しくなります。また、大量でなくてもその配置や設定、管理がツールを介して自動化されると効率的です。Google のそういったコンテナ運用のノウハウが詰まったツールが Kubernetes です。Kubernetes はオープンソースなので Google に限らずオンプレミス環境や他のクラウドでも活用されていますが、Google 自身がクラウド上でサービス提供している Kubernetes が、Google Kubernetes Engine(GKE) です。

GKE には様々な便利な機能がありますが、一言で表現すると「コンテナをストレスなく扱えるツール」です。

例えば先程までは、一つのサーバ上に複数のコンテナを配置する例えをしていましたが、サーバが複数台あった場合は、そのコンテナが必要とするコンピュータリソースの量などを考えながら、どのサーバにどのコンテナを配置するか迷う事になると思います。ですが、Kubernetes はその複数台のサーバを一つのサーバと見立ててコンテナの配置を自動的に行ってくれます。管理者はどのサーバに何のコンテナが稼働しているかを意識する必要がありません。

コンテナを配置しすぎたらコンピュータリソースが足りなくなるかもしれません。その場合は、更にサーバを追加したり、サーバのスペックを上げたりすることで全体のリソース量を増やすことが出来ます。その際にも管理者はコンテナの配置について意識する必要はありません。GKE にコンピュータリソースを追加してあげればそれ以降のコンテナの管理は自動で行ってくれます。

アプリケーションの可用性を高めるためコンテナを冗長化して動かすといったスケーリングは、GKE ではワンクリックでコンテナ数を増やすことが出来ます。異常終了してしまったコンテナは自動で再起動してくれます。

アプリケーションを止めることなく最新モジュールをリリースすることも可能です。現在稼働しているコンテナと並行して裏で最新モジュールのコンテナの起動を開始し、その起動が完了したら自動で旧コンテナと切り替わります。何か障害の際等に、日中帯にシステムの緊急停止の必要が無くなります。そして、このオペレーションもワンクリックで行えます。

GKE では OS のパッチ作業からも解放されます。GKE では幾つかの種類の OS が選択できますが、Google が独自コンテナ用に用意した Container-Optimized OS を選択するとセキュリティ脆弱性のパッチが適切なタイミングで自動更新されます。また、OS より下位のレイヤーは Google が管理している為保守が不要です。

他にもアプリケーションをインターネットに公開する為の仕組みや、死活監視、ログ管理、ロードバランシング、等々といったシステムを運用する上で必要となる機能が一通り揃っています。ですので、この GKE に自社向けの設定を行ったもの(GKE 基盤)を構築しておけば、後はコンテナ化されたアプリケーションを用意するだけで直ぐにシステム公開が可能になります。

Google Cloud Platform(GCP)に関する詳細は こちら

このサイトもGKE で構築

GKE の事例を一つ紹介すると、今あなたがご覧になっているこのサイトも GKE 上に構築され公開されています。

当社内にも GKE 基盤を構築しており、WordPress 本体とデータベースのコンテナをそれぞれ立ち上げて稼働させました。WordPress の立ち上げは 30 分とかからず行えました。その後、デザイン等の設定に2日程度かかりましたが、社内でこんなサイトを公開したいという事をモノも無く説明するよりも実際にある程度見える形にした方が話が早いものです。下手な資料を作る手間は省け、直ぐにサイト公開の承認が得られました。

また、この記事を書いている時点ではまだ GKE 基盤上で動いていますが、ランニングコスト等を考えてその内どこかに移動させるかもしれません(あなたがこれを読んでいる時点では既に移動済みかもしれません)。GKE ではこういったアプリケーションの構築と移動がストレスなく行えます。ここら辺の構築方法や引っ越し等に関しても、後日またこのサイトの別記事でご紹介したいと考えています。

Web Performer で自動生成したアプリケーションを GKE 上で動かすシステム構成

当社では以上のような有用性に着目し Web Performer から生成されたアプリケーションを GKE 上で稼働させる技術検証に取り組みました。

Web Performer から生成されたアプリケーションをコンテナ化し GKE 上で稼働させました。また、コンテナを冗長化しロードバランサによって処理が振り分けられた際にもセッション管理が正常に動作するように構成しています。一例ではありますが、当社が構築した Web Performer on GKE のシステム構成をご紹介します。

Web Performer on GKE

ポイント① ビルド時にコンテナイメージまで自動生成
Web Performer のビルド用設定ファイルを編集しアプリケーション自動生成時にコンテナまで一気に生成します。運用作業の効率化が望めます。

ポイント② アプリケーションを冗長化して配置可能
GKE 上でワンクリックでアプリケーションを冗長化できます。システムの安定稼働が望めます。

ポイント③ アプリケーションの稼働中にアプリを配置可能
GKE では実行中のアプリケーションは、新しくデプロイされたコンテナが起動するのを待ってから停止します。ユーザは裏でアプリケーションが更新されたのに気付くことなく操作が出来ます。

ポイント④ コンテナを跨るセッション管理を実現
セッション情報は各コンテナに保持せず、GCP の Cloud Memorystore for Redis に格納しました。これによりアプリケーションを冗長化する事で、片方のアプリケーションが障害やデプロイ時に停止してもユーザはもう片方のアプリケーションで作業を継続することが出来ます。

ポイント⑤ 保守不要の GCP の DB を使用
アプリケーションで使用するデータベースは GCP の Cloud SQL を使用しました。これは Google によるフルマネージドのサービスで保守の必要がありません。

この図の GKE 上には、冗長化だけではなく別のアプリケーションのコンテナを配置することが可能です。一度この環境を整えることで Web Performer アプリケーションのビジネス投入のスピードが向上します。

また、 当社ではこの他にも Web Performer の開発環境をコンテナ化したり、開発で使用するサーバをコンテナ化したりして、プロジェクト毎に各技術者が開発端末や開発サーバをセットアップする手間を省く等の効率化を行っています。

この様に一度 、これらの開発から運用までの環境を整えることでそれ以降の各種作業が効率化します。

当社では、お客様に開発プロジェクトに参画していただき、当社技術者と共同でシステム開発を行う共創開発をご提案しています。Web Performer や GCP をより活用していただく為に当社ノウハウをご提供する為のサービスです。
ご興味がございましたらお気軽にお問い合わせください。

まとめ

最後にこれまで述べてきた Web Performer、コンテナ、そして GKE の有用性を開発、運用、保守のフェーズに分けて整理しておきたいと思います。

開発

  • アプリケーションの自動生成により生産性向上(Web Performer)
  • 環境差異に悩むこと無く生産性向上(コンテナ)
運用

  • アプリケーションの自動生成によりアプリケーション障害発生頻度の低減(Web Performer)
  • 冗長化によりインフラ関連障害発生頻度の低減(GKE)
  • コンピュータリソースの有効活用、コスト削減(GKE)
  • アプリケーションのリリース作業の効率化(GKE)
  • コンピュータリソース増強の効率化(GKE)
  • アプリケーションのスケーリングの効率化(GKE)
  • パッチ作業の撲滅(GKE)
  • インフラ保守の撲滅(GKE)
  • 死活監視や自動復旧による障害対応の効率化(GKE)
保守

  • アプリケーションの自動生成により生産性向上(Web Performer)
  • アプリケーションの属人性を排除し生産性向上(Web Performer)
  • 最新技術の取り込みの簡便化(コンテナ)
  • 環境差異に悩むことが無くなり障害対応速度の向上(コンテナ)
  • 他アプリケーションへの影響に悩むことが無くなり機能変更の生産性向上(コンテナ)
  • サーバ移行の効率化(コンテナ)

メリットが有り過ぎて、うさん臭く感じるかもしれません。しかし、Google がほぼ全てのサービスをコンテナで稼働させていることを思い出してください。そして、それら Google 検索や Gmail、YouTube 等でどれだけ不具合を感じたことがあるか思い浮かべてください。それらは継続的に進化しながら安定稼働していることが分かるかと思います。

当社ではコンテナを、最新技術を素早く継続的に、且つ、安定的に提供する為の現代のベストプラクティスなのだと感じています。そしてそれをより効率的に実現する為に提供されているのが、Google Kubernetes Engine です。私達は今それを、クラウドを介して利用できるようになりました。

そしてそのプラットフォーム上に Web Performer でアプリケーションを作成し稼働させます。これにより素早くアプリケーションを作成できるのは勿論ですが、GKE を利用することでサーバの調達やネットワークの設定等の大掛かりな手間を省きアプリケーションをビジネスに投入することが出来ます。スモールスタートした後に必要に応じてコンピュータリソースの増強も可能ですし、場合によってはオンプレミス環境へアプリケーションを移動させることも可能です。

この様に、Web Performer + GKE で素早く柔軟に、且つ、安定的にビジネスへアプリケーションを投入できます。Web Performer on GKE はビジネスニーズを素早く実現する IT 基盤の、クラウド時代のベストプラクティスだと考えています。是非導入のご検討を頂ければ幸いです。


Web Performerは、キヤノンITソリューションズ株式会社の登録商標です。
Google、Google Cloud、Google Cloud Platform、および、GCP は Google LLC の商標です。