CytechがQuarkusを使ってギリシャの観光業を救う

Red Hat で Solution Architect として Quarkus を担当している伊藤ちひろ(@chiroito)です。

この記事は、Quarkus.io のブログ記事、Cytech uses Quarkus to save Greek Tourism の翻訳記事です。


https://quarkus.io/assets/images/posts/quarkus-user-stories/cytech/cytechLogoLarge.png

観光業とコロナ

観光業がコロナのパンデミックの影響を最も受けた産業の一つであることは今に始まったことではありません。ホテル、レストラン、航空会社、クルーズは、この夏、本当に厳しい時間を過ごしたビジネスの一部です。多くの国、特に経済が観光に依存している国は、国民に大きな健康リスクを負わせずに観光客に国境を開放する解決策を模索していました。ここには魔法のような解決策はありません。ですが、両方の要件を満たすために最善を尽くす余地は常にあります。

ギリシャ政府は経済を助けるために国境を開放することをどこかの時点で決めていました。しかし、予防策や対策を講じずにそれを行うのはあまりにも無謀です。だからこそ、高度な技術に基づいたシステムを構築することにしたのです。これはコロナのテストに適した旅行者を選びます。これは次のような考え方です。もし、全員を検査する余裕がないのであれば、コロナ検査で陽性の可能性が高い人を検査すべきでしょう。このようにして、ギリシャの国家はその資源を賢く使うことができます。同時に、テストのためのお金を節約できます。

問題は「どうやって」ということです。そして、その現場に入ったのがこの部分です。すでに科学者のチームが AI と機械学習のアルゴリズムを提案しています。その野望は、テストを受けるべき人を効率的に選ぶことで、上記のようなニーズを的確にカバーすることにありました。しかし、これらのアルゴリズムにはデータが必要です。その時点では、入国した乗客の詳細なデータは、どのようなデジタルで組織化された形でも入手できませんでした。

基本的な考え方

ギリシャ政府は、私たちの会社である Cytech 社に、乗客から情報を収集し、フィルターをかけて関係者全員に渡すソフトウェアの開発を依頼しました。その中に EVA という機械学習システムがありました。しかし、この情報を必要としている当事者のリストはもっと長いものでした。それは、市民保護局、保健省、国境捜査官、航空会社などを含みます。それと同時に、乗客一人一人に申請が審査中であることを知らせるメールを送ることになる。EVA が結果を出したら、最終的な書類を乗客にメールで送り返してくれます。それがなければ、彼らの入国は許されません。長い話を短くすると、私たちの仕事は、すべての乗客のデータを収集するための要求の厳しいWebフォームを構築することでした。それでも、最も重要なのは、スピード、堅牢性、回復力を重視した他のすべての情報システムとの正しいデータ交換が可能なデータブローカーを作成することでした。

技術的な課題と解決策

旅客探知器フォームプロジェクトのバックエンドのための Broker プラットフォームの要件は、主に UI が使用するための REST API エンドポイントを公開することに集中していました。また、EVA、EODY(国立公衆衛生機関)、GGPP(市民保護事務局)、ギリシャのコロナ患者レジストリなど、必要なデータ交換のために政府関連の第三者との相互接続も行っています。また、極端な納期内に納品することや、大規模なニーズにも対応することができました。成熟した実績のあるツールであること、開発者の生産性、(水平方向の)スケーラビリティ、可能な限り最小のリソースで最大の効率性とパフォーマンスを提供してくれることも求められました。

過去に小規模なプロジェクトで Quarkus と良い経験がありました。ですが、使い勝手の良さと生産性向上のための機能にはすでに感銘を受けていました。Quarkus は業界標準(Microprofile と Jakarta EE API)をベースにしているため、開発者にとっては、非常にタイトな納期内に非常に迅速にスピードを上げることができました。また、Quarkus のウェブサイトのガイドセクションは、自動的な魔法のように期待通りに動作しないいくつかの部分について、すぐにフィードバックを得ることができました。

ライブリロード、および非常に高速なスタートアップは、Javaでのエンタープライズ品質の非常に大規模なアプリケーションを開発する上で非常に新鮮なスタートを切ったように感じました。バックエンドアプリケーション上での変更はすぐに次のリクエストに反映されました。アプリケーションの UI には同じ機能を提供する Vue.js を選択したため、それは同じような機能を提供します。アプリケーション全体の変更はすべて、それが起こったときにライブでリロードされました。

Quarkus:ゲームチェンジャー

このような致命的な影響を与えるアプリケーションには、堅牢性が求められます。どんな種類の停止にも対応する余地はありませんでした。これは、人々が私たちの国に入ることを拒否されたり、国境で強制送還されたりすることを意味します。テストは、Quarkus の開発ライフサイクルの中では最優先です。そのおかげで、最小限の時間でアプリケーションの堅牢性と信頼性を高めることができました。本番環境でのアプリケーションのテストは、テストクラスに @QuarkusTest をアノテーションし、 @QuarkusTestResource と TestContainers を使ってデータベースを処理するのと同じくらい簡単でした。非常に高いコードカバレッジを実現しました。そして、(最も重要なのは)簡単なパスだけでなく、アプリケーションのすべての部分に深く浸透させられました。これは、アプリケーションが最初にデプロイされ、公開された瞬間から、アプリケーションの 100% の稼働時間と可用性に大きな役割を果たしました。

Microprofile Config API に基づいた Quarkus アプリケーションの設定の汎用性を評価しました。これは統一された設定規約を使用し、動的な設定ソースを簡単にプラグインする機能を提供します。それは私たちのプロジェクトで私たちを大いに助けてくれました。これには、ダイナミックで変化の激しい部分が多く含まれていました。例えば、特定の国の入国場所の制限や、特定の国から来る乗客が RT-PCR 検査の陰性を持ち歩くことを要求するなどです。私たちのプラットフォームの主な機能の一つは、政府関係者への正確でオンタイムなデータ送信でした。動的な構成機能を使用することで、サードパーティの処理エラーによって障害が蓄積し始めた統合部品を迅速に分離し、一時停止し、オンデマンドで再開できました。

特に観光シーズンの間にギリシャに入国するすべての人が訪問しなければならないウェブサイトは、非常に高いトラフィックを容易に推測することができます。一日に何千ものフォームが提出され、いつの時点でも数千人のユニークなユーザーが同時に存在していました。私たちは、最小限のリソースでトラフィックのほとんどを処理するアプリケーションを必要としていました。また、深夜の時間帯など、必要に応じてスケールアウトすることも可能です。EVAからの結果が入ってきたときに、プラットフォームは、各乗客のための最終的なフォームを極端な緊急性で処理する必要がありました。それは、QRコードとそれに付随するPDFファイルを生成し、すべてのフォーム情報と一緒にメールで送信します。Quarkus のリソース使用量を最小限に抑えることで、大抵の場合、2つの c5.large (2 vcpus、4GBメモリ)のAWS EC2インスタンスにスケールできます。それらの、CPU 使用量は通常 10% 以下でした。QRコード生成時間中、プラットフォームは 4 つの c5.large EC2 インスタンスにスケールアウトしました。CPU 使用率は約 80% です。これらは 1 分間に 10000 以上のQRコード/PDF/メールを処理していました。

7月から9月まで、世界のほぼすべての国からの旅行者から約 400 万の旅客探知器フォームのために働きました。フォームには、夏のハイシーズンにそれぞれのメール通知、PDF、QR コードが添付されていました。リスクの低い国の観光客へアクセスを提供し、効率的なリスク管理とコロナ試験のリソースの最適な配分を行いました。また、リスクの高い国に可能な限り早くロックインし、目的地への早期警告を提供します。同時に、10 種類の情報システムと通信し、ダウンタイムやパフォーマンスの低下なく、乗客の貴重な情報を提供しています。健康の専門家の難しい仕事をサポートしました。それゆえ、彼らは国のために正しい判断を下せます。そして、ウイルスの拡散を地域社会に封じ込めるために必要な情報を得たとき、私たちはその場にいたのです。これまでも今も、刺激的で、それとと同時に、ストレスの多い旅でもあります。それは社会にとって非常に重要な問題を解決するためにテクノロジーが果たすユニークな役割を示しています。

Cytech について

Cytech は、通信分野に特化した20年の経験を持つソフトウェアハウスです。モバイルメッセージング、マーケティング、決済の分野で独自の製品やサービスを開発しています。Cytech は、10カ国以上(ヨーロッパ、アジア、南米、北米、アフリカ、オーストラリア)の企業にとって、信頼できるテクノロジーパートナーとなっています。私たちの高品質と専門的な成果が認められているため、国家や大規模な組織からの要求の厳しい、挑戦的なソフトウェアプロジェクトを請け負うことがよくあります。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。