[Google Cloud] Application Integrationを試す

## 概要
先日のGoogle Cloud Next '23 でApplication IntegrationがGAとなりました。どのような使い勝手か確かめるためにというわけで使ってみようと思います。

https://cloud.google.com/blog/ja/topics/google-cloud-next/next-2023-wrap-up#:~:text=96.%20Application%20Integration%EF%BC%88%E3%82%B3%E3%83%BC%E3%83%89%E4%B8%8D%E8%A6%81%E3%81%A7%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%82%89%E3%82%8C%E3%82%8B%20integration%20Platform%20as%20a%20Service%3A%20iPaaS%EF%BC%89%E3%81%AE%E4%B8%80%E8%88%AC%E6%8F%90%E4%BE%9B%E3%82%92%E9%96%8B%E5%A7%8B%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82

## Application Integrationとは
iPaaS(Integration Platform as a Service)に分類されるサービスでオンプレミスやクラウド、SaaS等の複数のサービスの連携やデータ統合を実現するサービスです。

https://cloud.google.com/application-integration/docs/overview?hl=ja

## セットアップ
東京リージョンを選択し、QuickSetupで行った。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/8e9be525-f1ad-dd1a-4560-45adde81995f.png)

※2023/09現在コンソール内の一部はまだ日本語化されておらず英語となっていた

## 使ってみる

[こちら](https://cloud.google.com/application-integration/docs/try-sample-integration-ecommerce?hl=ja)を参考にすすめる

デフォルトでExampleIntegration-EcomOrderProcessingというサンプルが作成されている
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/685e92a2-ee94-63d2-03ad-f61566853d26.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/74c638cf-7180-7b70-4ed1-5457ad3ac715.png)

下図のように承認者のメールアドレスを受信できるものに変更しておく
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/11d93ae8-261b-627c-b42c-0add71ee6232.png)


Publishする(テスト実行の前に必要)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/b8ac6b46-4a41-566b-0f4e-24a14b53c5fe.png)

テスト→OrderProcessAPITriggerを選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/ff02aaf2-e624-85a5-367b-043716289131.png)

ドキュメントの内容を利用し、quantityを240に更新する
```json
    {
      "order_no": "12345",
      "buyer_id": "raambo",
      "line_items": [
        {
          "line": 1,
          "sku": "tr100",
          "vendor": "Internal",
          "quantity": 1,
          "price_per_unit": 10
        },
        {
          "line": 2,
          "sku": "tbz",
          "vendor": "External",
          "quantity": 240,
          "price_per_unit": 1
        }
      ]
    }
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/eb633a86-613b-a39b-7dd2-d65a9ccbca7b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/1d848691-e7ba-070e-e663-c7bebdac9640.png)

このフローは`total_order_value`(250)が`threshold_order_value`(2)よりも大きいので承認が必要となる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/d694310f-981e-55f4-8c67-38412c1f1105.png)

そのため、この段階でログを確認するとSuspendになっている
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/c44f84ca-dfe7-304e-3199-4badfab4f986.png)

以下のようなメールが来ているのでリンクをクリックして承認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/7d94f4c8-8897-588d-bf80-4e60b597985f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/2f608748-f5b4-0e0b-6cf4-79da1e23591e.png)

承認後ログを確認するとSucceededになっている
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/a331ac59-7be9-3091-99fb-3fcc2894a0f3.png)

## インテグレーションについて
トリガーはpub/subやスケジュールのほかにjira等外部SaaSにも対応しています(現状外部SaaSはPreview)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/ddf8cda3-8189-02af-c9ba-f25f21e56e26.png)

タスクは各種Google Cloudサービスのほかにループ等の制御やSpreadSheetなどのWorkspaceも対応しています
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/4a06c252-39f2-e670-baa5-cf6a04c1d17f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/a8595244-b4f1-c1dc-df96-5ad2d9d6e85e.png)

Salesforceとの連携事例は以下が参考になります

https://cloud.google.com/application-integration/docs/automate-salesforce-case-routing?hl=ja

## 認証について
SaaS等との連携で認証が必要な場合はAuthentication profileを作成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/563105e3-5a74-139a-ddab-127253aff425.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/98cae3c9-a63b-73c9-9a29-7ed2f6ad1499.png)

## エラーハンドリング
エラー時の処理はタスクの設定のError handlingから行います
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/9fcfaa50-ffef-6d6f-8a45-7cf5c3532cd2.png)

同期処理・非同期処理それぞれのエラー発生時の戦略を選びます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/20e56d8c-5f46-4f31-ce0e-42a1ad0eba33.png)
リトライ系を選択するとインターバルや最大リトライ回数を設定できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/dbd19a22-004b-a9aa-ba03-c0cd4d9e83ac.png)

エラー時に処理をさせたい場合はエラーキャッチャーを作成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/a83f2310-0ac1-42ce-9275-e0ac4a5bfc08.png)
エラーキャッチャーを作成すると画面上にトリガーのようにアイコンが出てくるのでそこに繋げる形でエラー時の処理を作成します(図はメールを送信するケース)。複数の処理で同じエラーキャッチャを選択することもできます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/56769fef-a842-f8ba-f9e8-0b81703d1c91.png)

## 管理方法
コンソール上でもバージョン管理されておりpublishする度に新バージョンになります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/896467df-5c02-2ce7-82ef-ede12fbb5d07.png)

jsonで構成をダウンロードできるのでコードとして管理することもできそうです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2876448/5319bfc8-9d0b-d269-03df-462a9fb90461.png)


## おわりに
比較的簡単に使えそうでワークフローや自動化処理を行わせたいときにはちょうどいいツールのような気がしました。