Google Cloud Platform Japan Blog
最新情報や使い方、チュートリアル、国内外の事例やイベントについてお伝えします。
航空券検索の大規模システムを Google Cloud Platform で構築した Amadeus
2016年1月6日水曜日
* この投稿は米国時間 1 月 5 日、Google Cloud Platform Team によって投稿されたもの(投稿はこちら)の抄訳です。
今回は、スペインに本拠を置く
Amadeus
のエアライン IT 担当 Senior Manager、Olivier Favorel 氏からお話を伺います。
図 1 : Amadeus Airline Cloud Availability のアーキテクチャ
195 か国で事業を展開する Amadeus は、世界の旅行業界に IT ソリューションを提供する大手企業です。トランザクション当たりわずか 100 マイクロ秒の CPU 消費の増加が、1 年間で数千ドルのホスティング コスト増につながるような大規模ソリューションを手がけています。
このたび同社は、コストとパフォーマンスの管理を目的に
Google Cloud Platform
を導入しました。
航空券の平均検索数に対する予約の成約率(look-to-book レシオ)は、以前は 10 対 1 に達していました。それが今では
1000 対 1
まで落ち込むことも珍しくありません。
しかも、航空券の需要は決して一定ではありません。需要変動に対応するには、ピーク時の大量のトラフィックを予測し、必要なキャパシティ調整を行う必要があります。
これは航空会社にとって厄介な課題です。増加の一途をたどるオンライン購入トランザクションを処理するため、オンライン旅行サイトはキャッシュ ベースのソリューションを開発しました。
しかし、キャッシュ ベースのシステムには限界があります。航空会社の高度な売上管理ポリシーを正確に反映しないからです。
私たち Amadeus は、旅行の未来を形作る技術を開発しています。私たちのお客様とパートナーのビジネス ニーズを理解するため、航空会社に影響を与えるトレンドに非常に注目しています。そうしたトレンドの1 つが、さまざまなデジタル チャネルを通じて航空会社の商品をチェックして購入する消費者の急激な増加です。
大手航空会社は、旅行者から得られる価値を最大化して売り上げに結びつけることを目指しており、高度な売上管理ソリューションに投資しています。
売上高を最大化するには、すべての航空券検索をリアルタイムに処理し、特定の料金クラスの適切な空席を最適な価格で提供する必要があります。さらに、航空会社があらゆる販売機会を捉えるには、さまざまな購入プラットフォームにわたって一貫した形で空席を提供することが重要です。
ところが、キャッシュ ベースのシステムはリアルタイムの売上最大化と相反し、適切な商品を適切な顧客に適切なタイミングと価格で提供する航空会社のマーチャンダイジングとパーソナライズの妨げになります。
すべての流通チャネルにわたって適切で一貫した形で航空券の提供を続けるのは大変ですが、どうすればマスマーケット向けの動的コンテンツ配信で高いパフォーマンスを確保できるのでしょうか?
私たち Amadeus は、
Google Cloud Platform
を利用してユニークなクラウド ベースのソリューションを開発しました。この
Amadeus Airline Cloud Availability
は、航空会社の予約システムから空席検索と購入トランザクションの処理を肩代わりします。また、それらの予約システムでは最終的な予約と決済が行われます。
このソリューションにより、どのようなパブリック クラウドにもプライベート クラウドにもデプロイできます。オンライン旅行代理店やメタ検索エンジン、グローバル流通システムで使用される購入プラットフォームに近い場所で、より効率の高いソリューションをフルに活用して航空券の提供が行われるようになります。結果的に、航空会社が検索および購入トラフィックの大幅な増加に効率的に対応するのに役立ちます。
私たちは 2015 年 2 月から 7 月まで、Lufthansa と共に GCP で Amadeus Airline Cloud Availability(プロジェクト コードネームは “R-Box” )のパイロット運用を実施しました。その目的は下記の 2 つでした。
Google Compute Engine
を使用した空席検索処理のスケーラビリティとパフォーマンスの実証。
Amadeus は現在、ドイツのミュンヘンにあるプライベート データセンターで、140 社以上の航空会社のために空席検索を 1 秒当たり 400 万件以上処理しています。このトラフィックは毎年 50% のペースで増えています。
空席検索および処理トラフィックのインフラストラクチャ コストの抑制
空席検索は、Couchbase クラスタでデータにアクセスする C++ バックエンド ファームで処理されます。分散 NoSQL ストアである Couchbase は、航空券のフライトと料金に関する詳細データをホストしています。
こうした大規模アプリケーションでは、CPU 消費が重要な指標になります。
トランザクション当たりわずか 100 マイクロ秒の CPU 消費の増加が、1 年間で数千ドルのホスティング コストの上昇につながるからです。
私たちのソリューションの
Compute Engine
へのデプロイは、最初からシームレスに行うことができました。直感的なコンソールに加え、プリインストールされていた一連のさまざまな Linux イメージ(CentOS 7.1 を使用)のおかげです。
空席検索を処理するバックエンド インスタンスの最初に作成されたものは、初めてネットワークに接続されてからほんの 2 時間後に、トラフィックを受け入れる準備が整っていました。
1,500 コアのチャレンジ
Amadeus と Google のエンジニアリング チームは、3 つのリージョン(米国中部、西欧、東アジア)に分散して割り当てられる 1,500 コアのキャパシティを最大限有効に活用するために協力しました。これらの各リージョンには、Couchbase のレプリケーション プロトコルである Cross-datacenter Replication(XDCR)を使用して航空券データが配布されています。
私たちのミッションは、1 ドル当たりの空席検索処理数を増やすことでした。そのためにいくつかの措置を講じました。
トランザクション当たりの
CPU パス長
の短縮。C++ の低レベルのいくつかの最適化を行い、Google のメモリ アロケータである TCMalloc を利用して短縮を実現しました。
アプリケーションのコアを稼働させ続けることを目的とした Couchbase データ ストアの
IO スループット
の向上。私たちは Compute Engine の内部ネットワークの安定性と非常に低いレイテンシに強い印象を受けました(Couchbase クラスタ ノードへのラウンド トリップがサブミリ秒で安定しています)。
Couchbase クラスタをホストする VM 上での NOOP スケジューラの有効化(SSD のスループットを高めるために最適な IO スケジューリング パターンを実現します)。
サーバーを常に 85~90% の CPU 使用率で動作させるための
VM サイズ
(CPU /メモリの組み合わせ)の調整(アプリケーション サーバーには
n1-highcpu-16
を、Couchbase クラスタ ノードには
n1-highmem-4
を選択するなど)。
第 1 フェーズの変化
R-Box のパイロット運用の目標は当初計画よりもはるかに早く達成されました。GCP の柔軟性と Google のサポート チームのおかげです。
1,500 コアを使用した空席検索処理の全体的なスループットは、Amadeus と Google の協業開始からわずか 3 か月で倍増しました。
さらなる前進
私たちは現在、パイロット運用の第 2 フェーズに入っています。このフェーズでは以下のように、航空券需要の変動に応じたハードウェア キャパシティの動的な調整、VM のサイズの微調整、
Compute Engine
のプリエンプティブル VM(私たちがよく “低コストの VM ” と呼んでいるものです)の活用を目指しています。
動的なキャパシティ調整
Kubernetes
(Google のコンテナ オーケストレーションおよびクラスタ管理ソリューション)を利用して実装が進められています。
Kubernetes
は、空席検索および処理トラフィックの変動に応じてアプリケーションの VM を動的に起動またはシャットダウンできるようにするために、R-Box フレームワークに導入されつつあります。
Kubernetes
は、私たちの PaaS パートナーである Red Hat が、PaaS 製品およびサービスである OpenShift の一部として出荷しています(私たちは社内アプリケーション プラットフォームの Amadeus Cloud Services を、こうした戦略的製品上に構築しています。IaaS プロバイダーに対する独立性を確保するためです)。
さらに、インスタンスの料金が分単位の従量制であることも、ホスティング コストの最適化に役立ちます。
プリエンプティブル VM
2015 年 5 月にリリースされた
プリエンプティブル VM
は、通常の VM よりもはるかに低コストで(70% 安く)利用できます。
ただし、
Compute Engine
が他のタスクのためにプリエンプティブル VM の使用するリソースにアクセスする必要がある場合、プリエンプティブル VM は、
Compute Engine
によってシャットダウンされる(プリエンプトされる)可能性があります。
私たちは、R-Box のコンピュテーション VM の数を 10% 余分に設定し、これらをすべてプリエンプティブル インスタンスのみで賄うことを計画しています。これは、「こうした VM の一部が日常的にシャットダウンされてしまっても、全体的な処理能力は空席検索を処理するのに必要なレベルに保たれる」という想定に基づいています。
こうして新機能を活用することにより、大幅なコスト節減が見込まれます。
カスタム マシン タイプ
2015 年 11 月にリリースされたカスタム マシン タイプを、これまで使用してきた通常のインスタンス タイプ(n1-highcpu-16 と n1-highmem-4)の代替としてセットアップしています。
カスタム VM のサイズは、自社にとって必要最小限のコアとメモリ(GB 単位)で設定できます。カスタム マシン タイプの目的は、CPU とメモリの無駄をなくすことにあります。
Google Cloud Platform のインパクト
Google Cloud Platform
を利用した私たちのプロジェクトは非常にエキサイティングで印象深いものでした。その理由は以下のとおりです。
パフォーマンス
ネットワークのレイテンシ、スループット、安定性は驚くべきものです。また、多くのリージョンで行われている VM の次世代 Intel アーキテクチャ(Haswell)への移行により、空席検索の処理パフォーマンスに CPU の大幅な性能向上の効果が現れるでしょう。
安定性
6 か月にわたるパイロット期間に VM が停止してしまうことはほとんどありませんでした。メンテナンスの通知プロセスも円滑に機能しています。VM のライブ マイグレーションは本当に透過的です。
モニタリング
Stackdriver フレームワークでは、システムに関する指標(CPU、メモリ、IO)とユーザー定義の KPI(1 秒当たりの空席検索処理数に類似)の両方のリポート機能が優れています。効率的なアラート システムやモバイル アプリの「Cloud Console」との組み合わせにより、本番グレードのモニタリング ソリューションがたちまち出来上がりました。
イノベーションのペース
6 か月のパイロット期間中に、私たちのプロジェクトに役立つ大きな発表が 3 つありました。プリエンプティブル VM のリリース、カスタム マシン タイプの導入、そして最も重要な、2015 年 5 月に行われた 15% の値下げです。
要約
Google Cloud Platform
による R-Box のパイロット プロジェクトは、パフォーマンスの最適化に関する私たちのアプローチを変えました。私たちは CPU にどれだけコストをかけるかという観点を超えて、インフラストラクチャ全体で最適化を追求するようになったのです(最終的に重要なのは効率性です)。
Google Cloud Platform
は、社内ベンチマーキングのための非常に効率的なサンドボックス環境です。
Google Cloud Platform
が今後、Amadeus の多くのアプリケーションにとって理にかなったホスティング ソリューションとなるのは間違いないでしょう。
0 件のコメント :
コメントを投稿
12 か月間のトライアル
300 ドル相当が無料になるトライアルで、あらゆる GCP プロダクトをお試しいただけます。
Labels
.NET
.NET Core
.NET Core ランタイム
.NET Foundation
#gc_inside
#gc-inside
#GoogleCloudSummit
#GoogleNext18
#GoogleNext19
#inevitableja
Access Management
Access Transparency
Advanced Solutions Lab
AI
AI Hub
AlphaGo
Ansible
Anthos
Anvato
Apache Beam
Apache Maven
Apache Spark
API
Apigee
APIs Explore
App Engine
App Engine Flex
App Engine flexible
AppArmor
AppEngine
AppScale
AprilFool
AR
Artifactory
ASL
ASP.NET
ASP.NET Core
Attunity
AutoML Vision
AWS
Big Data
Big Data NoSQL
BigQuery
BigQuery Data Transfer Service
BigQuery GIS
Billing Alerts
Bime by Zendesk
Bitbucket
Borg
BOSH Google CPI
Bower
bq_sushi
BreezoMeter
BYOSL
Capacitor
Chromium OS
Client Libraries
Cloud API
Cloud Armor
Cloud Audit Logging
Cloud AutoML
Cloud Bigtable
Cloud Billing Catalog API
Cloud Billing reports
Cloud CDN
Cloud Client Libraries
Cloud Console
Cloud Consoleアプリ
Cloud Container Builder
Cloud Dataflow
Cloud Dataflow SDK
Cloud Datalab
Cloud Dataprep
Cloud Dataproc
Cloud Datastore
Cloud Debugger
Cloud Deployment Manager
Cloud Endpoints
Cloud Firestore
Cloud Foundry
Cloud Foundry Foundation
Cloud Functions
Cloud Healthcare API
Cloud HSM
Cloud IAM
Cloud IAP
Cloud Identity
Cloud IoT Core
Cloud Jobs API
Cloud KMS
Cloud Launcher
Cloud Load Balancing
Cloud Machine Learning
Cloud Memorystore
Cloud Memorystore for Redis
Cloud monitoring
Cloud NAT
Cloud Natural Language API
Cloud Networking
Cloud OnAir
Cloud OnBoard
cloud Pub/Sub
Cloud Resource Manager
Cloud Resource Manager API
Cloud SCC
Cloud SDK
Cloud SDK for Windows
Cloud Security Command Center
Cloud Services Platform
Cloud Source Repositories
Cloud Spanner
Cloud Speech API
Cloud Speech-to-Text
Cloud SQL
Cloud Storage
Cloud Storage FUSE
Cloud Tools for PowerShell
Cloud Tools PowerShell
Cloud TPU
Cloud Translation
Cloud Translation API
Cloud Virtual Network
Cloud Vision
Cloud VPC
CloudBerry Backup
CloudBerry Lab
CloudConnect
CloudEndure
Cloudflare
Cloudian
CloudML
Cluster Federation
Codefresh
Codelabs
Cohesity
Coldline
Colossus
Compute Engine
Compute user Accounts
Container Engine
Container Registry
Container-Optimized OS
Container-VM Image
Couchbase
Coursera
CRE
CSEK
Customer Reliability Engineering
Data Studio
Databases
Dbvisit
DDoS
Debugger
Dedicated Interconnect
deep learning
Deployment Manager
Developer Console
Developers
DevOps
Dialogflow
Disney
DLP API
Docker
Dockerfile
Drain
Dreamel
Eclipse
Eclipse Orion
Education Grants
Elasticsearch
Elastifile
Energy Sciences Network
Error Reporting
ESNet
Evernote
FASTER
Fastly
Firebase
Firebase Analytics
Firebase Authentication
Flexible Environment
Forseti Security
G Suite
Gartner
gcloud
GCP
GCP Census
GCP 移行ガイド
GCP 認定資格チャレンジ
GCPUG
GCP導入事例
gcsfuse
GEO
GitHub
GitLab
GKE
Go
Go 言語
Google App Engine
Google Apps
Google Certified Professional - Data Engineer
Google Cloud
Google Cloud Certification Program
Google Cloud Client Libraries
Google Cloud Console
Google Cloud Dataflow
Google Cloud Datalab
Google Cloud Datastore
Google Cloud Endpoints
Google Cloud Explorer
Google Cloud Identity and Access Management
Google Cloud INSIDE
Google Cloud INSIDE Digital
Google Cloud INSIDE FinTech
Google Cloud Interconnect
Google Cloud Launcher
Google Cloud Logging
Google Cloud Next '18 in Tokyo
Google Cloud Next '19 in Tokyo
Google Cloud Platform
Google Cloud Resource Manager
Google Cloud Security Scanner
Google Cloud Shell
Google Cloud SQL
Google Cloud Storage
Google Cloud Storage Nearline
Google Cloud Summit '18
Google Cloud Summit ’18
Google Cloud Tools for IntelliJ
Google Code
Google Compute Engine
Google Container Engine
Google Data Analytics
Google Data Studio
Google Date Studio
Google Deployment Manager
Google Drive
Google Earth Engine
Google Genomics
Google Kubernetes Engine
Google maps
google maps api
Google Maps APIs
Google Maps Platform
Google SafeSearch
Google Service Control
Google Sheets
Google Slides
Google Translate
Google Trust Services
Google VPC
Google マップ
Google 公認プロフェッショナル
GoogleNext18
GPU
Gradle
Grafeas
GroupBy
gRPC
HA / DR
Haskell
HEPCloud
HIPAA
Horizon
HTCondor
IaaS
IAM
IBM
IBM POWER9
icon
IERS
Improbable
INEVITABLE ja night
inevitableja
InShorts
Intel
IntelliJ
Internal Load Balancing
Internet2
IoT
Issue Tracker
Java
Jenkins
JFrog
JFrog Artifactory SaaS
Jupiter
Jupyter
Kaggle
Kayenta
Khan Academy
Knative
Komprise
kubefed
Kubeflow Pipelines
Kubernetes
KVM
Landsat
load shedding
Local SSD
Logging
Looker
Machine Learning
Magenta
Managed Instance Group
Managed Instance Group Updater
Maps API
Maps-sensei
Mapsコーナー
Maven
Maxon Cinema 4D
MightyTV
Mission Control
MongoDB
MQTT
Multiplay
MySQL
Nearline
Network Time Protocol
Networking
neural networks
Next
Node
NoSQL
NTP
NuGet パッケージ
OCP
OLDISM
Open Compute Project
OpenCAPI
OpenCAPI Consortium
OpenShift Dedicated
Orbitera
Organization
Orion
Osaka
Paas
Panda
Particle
Partner Interconnect
Percona
Pete's Dragon
Pivotal
Pivotal Cloud Foundry
PLCN
Podcast
Pokemon GO
Pokémon GO
Poseidon
Postgre
PowerPoint
PowerShell
Professional Cloud Network Engineer
Protocol Buffers
Puppet
Pythian
Python
Qwiklabs
Rails
Raspberry Pi
Red Hat
Redis
Regional Managed Instance Groups
Ruby
Rust
SAP
SAP Cloud Platform
SC16
ScaleArc
Secure LDAP
Security & Identity
Sentinel-2
Service Broker
Serving Websites
Shared VPC
SideFX Houdini
SIGOPS Hall of Fame Award
Sinatra
Site Reliability Engineering
Skaffold
SLA
Slack
SLI
SLO
Slurm
Snap
Spaceknow
SpatialOS
Spinnaker
Spring
SQL Server
SRE
SSL policies
Stack Overflow
Stackdriver
Stackdriver Agent
Stackdriver APM
Stackdriver Debugger
Stackdriver Diagnostics
Stackdriver Error Reporting
Stackdriver Logging
Stackdriver Monitoring
Stackdriver Trace
Stanford
Startups
StatefulSets
Storage & Databases
StorReduce
Streak
Sureline
Sysbench
Tableau
Talend
Tensor Flow
Tensor Processing Unit
TensorFlow
Terraform
The Carousel
TPU
Trace
Transfer Appliance
Transfer Service
Translate API
Uber
Velostrata
Veritas
Video Intelligence API
Vision API
Visual Studio
Visualization
Vitess
VM
VM Image
VPC Flow Logs
VR
VSS
Waze
Weave Cloud
Web Risk AP
Webyog
Wide and Deep
Windows Server
Windows ワークロード
Wix
Worlds Adrift
Xplenty
Yellowfin
YouTube
Zaius
Zaius P9 Server
Zipkin
ZYNC Render
アーキテクチャ図
イベント
エラーバジェット
エンティティ
オンライン教育
クラウド アーキテクト
クラウド移行
グローバル ネットワーク
ゲーム
コードラボ
コミュニティ
コンテスト
コンピューティング
サーバーレス
サービス アカウント
サポート
ジッター
ショート動画シリーズ
スタートガイド
ストレージ
セキュリティ
セミナー
ソリューション ガイド
ソリューション: メディア
データ エンジニア
データセンター
デベロッパー
パートナーシップ
ビッグデータ
ファジング
プリエンプティブル GPU
プリエンプティブル VM
フルマネージド
ヘルスケア
ホワイトペーパー
マイクロサービス
まっぷす先生
マルチクラウド
リージョン
ロード シェディング
運用管理
可用性
海底ケーブル
機械学習
金融
継続的デリバリ
月刊ニュース
資格、認定
新機能、アップデート
深層学習
深層強化学習
人気記事ランキング
内部負荷分散
認定試験
認定資格
料金
Archive
2019
8月
7月
6月
5月
4月
3月
2月
1月
2018
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2017
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2016
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2015
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2014
12月
11月
10月
9月
8月
6月
5月
4月
3月
2月
Feed
月刊ニュースレターに
登録
新着ポストをメールで受け取る
Follow @GoogleCloud_jp
0 件のコメント :
コメントを投稿