「Apache Flinkを使用したMaxComputeへのCDCの実装：事例研究」

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/implementing-cdc-to-maxcompute-with-apache-flink-a-case-study_601958?spm=a2c65.11461433.0.0.4ee35355AbBZFM)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

# Flink Forward Asia 2024 in Jakarta: Mekariの最近の改善について

by Fajar Tontowi, MekariのIngestion and Analytics部門のLead Data Engineer。プレゼンテーションの録画は[こちら](https://www.alibabacloud.com/en/events/flink_forward_asia_2024)で参照できます。

この記事は、2024年ジャカルタの[Flink Forward Asia](https://www.alibabacloud.com/en/events/flink_forward_asia_2024?spm=ffa.ffa-home.0.0.6bb8f9d5Zzmgup&_p_lc=1)で、MekariのIngestion and Analytics部門のLead Data EngineerであるFajar Tontowiが行った基調講演を基にしています。

皆さん、おはようございます。私の名前はFajarで、Mekariからのものです。今日は、サーバーレスApache FlinkとAlibaba Cloudを使用して、データソースとして[MaxCompute](https://www.alibabacloud.com/product/maxcompute)と共に、Mekariで実装した最近の改善について興奮しながら共有したいと思います。

## Mekariについて

![1](https://yqintl.alicdn.com/e5a9bc9eef4f70384fcf8af0fe5b385db581e2af.jpeg)

まず、Mekariについて簡単に概説します。インドネシア最大の企業の一つであるMekariは、さまざまな領域での他の企業の成長をサポートするための幅広いサービスを提供しています。私たちは以下の6つの主要な製品とサービスを提供しています：Talenta, Jurnal, Klikpajak, Flex, Qontak, E-sign。これらの製品は、特定の分野での事業の成長と運営の向上を支援するように設計されています。

![2](https://yqintl.alicdn.com/a0adfefe5a327224a3f506a75c3d0b132cc9e261.png)

現在、Mekariには60万人の登録ユーザーがあり、3万5千以上の企業がMekariに接続しており、インドネシアの20都市で事業を展開しています。Mekariでは、毎日大量のデータを処理しており、1日に4テラバイト（TB）以上を処理しています。これはリアルタイム処理とバッチ処理の両方を含み、私たちのさまざまな製品のシームレスなパフォーマンスを確保しています。また、先ほど述べたようにいくつかの製品があり、バックエンドのデータをデータ環境に接続するためにChange Data Capture (CDC)を使用しており、現在、パイプラインで800以上のテーブルがCDCを使用して処理されています。さらに、1秒あたり4万件以上のイベントが生成されています。これらはCDCイベントまたはMekariのマイクロサービスのいずれかになります。

![3](https://yqintl.alicdn.com/2552c6c119006db1537b3e042dbc8f032ce1a75f.png)

## Mekariデータプラットフォームの従来のアーキテクチャ

![4](https://yqintl.alicdn.com/3192326056ed4e58e906ab31702099b348e35c3b.png)

これがMekariの従来のアーキテクチャです。以前はAmazon Web Service (AWS)を使用していました。リレーショナルデータベース、サードパーティ、ファイル、非リレーショナルデータベース、外部データなどのデータソースがあります。リレーショナルデータベースについては、すべての製品のデータベースを接続するためにCDCを使用します。先ほど述べたように、CDCデータをデータレイクに送信します。データレイクでは、ゾーンを3つに分けます：Raw Zone、Validated Zone、Analytic Zone。Raw Zoneは、ソースから来たデータがそのままAmazon S3に配置されるゾーンです。つまり、データソースがCSVの場合、CSVファイルとしてRaw Zoneに配置されます。PDF、JSON、parquetも同様です。CDCデータについては、Debeziumからのメタデータを含むparquetファイルとしてRaw Zoneに送信します。その後、Validated Zoneがあります。Validated Zoneでは、Raw Zoneからのデータのクリーニング、標準化、重複排除を行い、標準化された形式でparquetファイルにまとめます。Validated Zoneのparquetファイルが準備されると、BIまたは分析チームはAthenaを使ってValidated Zoneをクエリし、データマートやデータウェアハウスを作成することができます。データ処理エンジンとしては、EMR、Athena、Pythonを使用しています。つまり、Raw ZoneからValidated Zoneへデータを処理、変換、標準化、クリーニングするために使用します。EMRとSparkを使用します。これにより、Raw ZoneからValidated Zoneへのデータ処理を行うSparkジョブが実行されます。Mekariのすべての製品をサポートする1つの大きなEMRクラスターがあります。データオーケストレーションにはAirflowを使用し、ワークフローとジョブを管理し、Raw ZoneからValidated Zone、データマートまたはデータウェアハウスへデータを送信します。そして、S3をストレージエンジンとして使用し、すべてのデータをS3に格納します。また、一部のBIツールも使用しており、AthenaをTableauとMetabaseに接続し、外部データ用のAPIもあります。顧客がデータを抽出したい場合、作成したAPIを使用できます。また、データサイエンスチームによる予測モデリングのための機械学習も使用し、データレイクのデータからモデルを作成します。

## 従来のアーキテクチャの課題

![5](https://yqintl.alicdn.com/cdeb2d1150be597aab2cfbccbc57f29ae0ac8306.png)

次に、従来のアーキテクチャの課題についてです。まず、コスト効率の悪さがあります。顧客が増えれば増えるほど、データ量も増加します。データは日々増加し続けますが、EMRでより多くのリソースが必要になるとアーキテクチャは高価になります。先ほど述べたように、すべての製品の処理、標準化、重複排除などに1つのEMRクラスターを使用しているため、日々リソースを垂直に増やす必要があります。より多くのリソースが必要になると、EMRのコストは非常に高くなるため、日々増加するデータに対して効率的ではありません。第二の課題は、各製品に必要なリソースの計算が難しいことです。Mekariでは、Talenta、Jurnalなどいくつかの製品がありますが、1つのEMRクラスターを使用しているため、各製品のデータ処理に必要なリソースやコストを計算するのが難しくなります。第三の課題は、データの問題に関するアラートと監視です。データウェアハウスやデータマート層でデータ不整合が発生することがよくあります。データマート層で問題が発生すると、その原因がRaw Zoneにあるかどうかを見つけるのが難しくなります。なぜなら、Raw Zoneのデータはソースの形式のままなので、CSV、PDF、jsonなど、さまざまな形式があるからです。そのため、Raw Zoneでの問題を見つけるのが難しくなります。また、データがRaw Zoneからデータマートおよびデータウェアハウスまで標準化されていないため、不整合の監視が困難になります。データ品質の維持、例えば完全性や他の重要な指標は重要ですが、Raw Zoneからウェアハウスまで一貫した品質を確保することは困難でした。第三の課題は、リアルタイム分析です。現在、リアルタイム分析の開発に課題を抱えています。リアルタイムデータはRaw Zoneにしか存在せず、Raw ZoneのデータはCSVやJSONなどさまざまな形式で保存されているため、直接分析のためにクエリすることはできません。これにより、従来のアーキテクチャ内でリアルタイム分析を作成することが難しくなっています。また、データがRaw Zoneからデータウェアハウスまで標準化されていないため、これも課題となっています。

## Mekariデータプラットフォームの新しいアーキテクチャ

![6](https://yqintl.alicdn.com/a9c6089db0221e639ea223bf5f8617fa3c357c97.png)

これがMekariで使用している新しいアーキテクチャです。クラウドサービスにはAlibaba Cloudを使用し、データストア
# 新しいアーキテクチャの詳細

Raw ZoneからAnalytic Zoneまで、データはテーブル形式で保存されます。Apache Flink CDCを使用して、MySQLやPostgreSQLなどのリレーショナルデータベースからRaw Zoneにデータを接続します。FlinkのSQL Deploymentを使用してデータをデプロイするため、MySQLやPostgreSQLなどのデータベースからのデータ接続が容易になります。私たちはSQLデプロイメントを管理し、リレーショナルデータベースからRaw Zoneのテーブルにデータを同期するためのいくつかのSQLスクリプトを作成するだけで済みます。Raw Zoneのテーブルにあるデータは既にテーブル形式で構造化されているため、AnalyticsとBIチームによるクエリ実行にすぐに利用可能です。

新しいアーキテクチャでは、以前と同じようにRaw Zone、Validated Zone、およびAnalytic Zoneがあります。ただし、3つのゾーンのすべてのデータがテーブル形式になっているという違いがあります。データ処理エンジンとしてMaxComputeを使用し、データ変換には完全にクエリに依存しています。Raw ZoneからValidated Zoneへの処理中に、クエリを使用してデータをクリーニング、標準化、重複排除します。このクエリ駆動型のアプローチにより、必要な場合にクエリを更新するだけでデータ変換ロジックを簡単に修正することができます。これにより、これらのゾーン間でのデータ処理方法を変更したい場合は、クエリを調整するだけで済むようになります。

## 新しいアーキテクチャの利点
! [7](https://yqintl.alicdn.com/49c563acf4cd2a4a0885bbfe8e9f72083e9bddc2.png)

新しいアーキテクチャの利点は以下の通りです：

### コスト効率
Alibaba Cloud上のApache Flinkは、異なる製品間でリソースを効率的に割り当てる柔軟性を提供します。例えば、Jurnalが追加のリソースが必要な場合は、簡単にそれらを割り当てることができます。同様に、Talentaがより多くのリソースを必要とする場合も、それに応じて調整することができます。Apache Flinkのこのダイナミックなリソース割り当ては、データのスケーリングを容易にするだけでなく、各製品のコスト計算を簡素化します。製品ごとのニーズに合わせてリソースを調整することで、経費をより正確に評価および管理することができます。

### パフォーマンスとスケーラビリティ
最近のインフラストラクチャ最適化の取り組みにおいて、CDC（Change Data Capture）とApache Flinkを統合することで、いくつかの冗長なステップを削除し、ワークフローを主にSQLデプロイメントに焦点を当てて簡素化しました。具体的には、PostgreSQL、MySQL、その他のリレーショナルデータベースからのデータをキャプチャし、SQLスクリプトを作成・デプロイし、その後MaxComputeにデータを送り込んでさらに処理します。FlinkのSQLデプロイメントでオートパイロットモードを利用することは、大きな改善点です。この機能により、データの急増やバックエンド活動の増加に応じてリソースを動的にスケーリングすることができます。つまり、データ処理需要が急増したときに、Flinkは自動的にSQLデプロイメントに割り当てられるリソースを調整します。この能力は、大規模なデータ量をシームレスに処理することを可能にするとともに、エンジニアリングチームのサーバーとインフラストラクチャの管理を簡素化し、より効率的かつ反応性の高いシステムを提供します。

### リアルタイム分析
現代のビジネス環境では、多くのクライアントが顧客離脱の理解や運営の最適化など、重要な意思決定のためにリアルタイム分析に大きく依存しています。新しいアーキテクチャにより、これらの洞察をシームレスに提供することが可能になりました。Flinkを使用してリアルタイムのデータ変換を行い、Flink SQLを直接リレーショナルデータベースで実行して、貴重な洞察をAnalytics Zone（データマートやデータウェアハウスを含む）に直接送ります。この能力は意思決定を加速するとともに、アクション可能なリアルタイム分析を通じてステークホルダーが会社の成長を支援することを最終的にサポートします。

## 新しいアーキテクチャの影響
! [8](https://yqintl.alicdn.com/5bba4a4fd2064037102373e6f8e476e1a40ecaf2.png)

### 技術的な利点
技術的な観点からは、利点は非常に大きいです。Flinkの自動スケーリングにより、ワークロード管理が簡素化され、継続的なジョブ監視やトラブルシューティングの必要性が最小限に抑えられます。また、サーバーレスアーキテクチャにより、インフラストラクチャ管理の負担が軽減され、チームはプラットフォーム開発に集中できます。この簡素化されたアプローチにより、高品質な分析を迅速かつ効率的に提供することができます。サーバーレスアーキテクチャは、複雑な監視アラートなしでSQLスクリプトとSQLデプロイメントを迅速に実装できるようにします。代わりに、FlinkとMaxComputeサービスで利用可能な監視機能を活用することで、サーバーレス設定の維持が容易になります。この簡素化されたプロセスにより、チームはプラットフォーム開発に集中し、お客様がより速いデータアクセスと処理を享受できるようになります。第三に、Alibaba Cloudサービスを使用してリレーショナルデータベースからAnalytic Zoneまでのシームレスなデータ移行を実現する統合型エンドツーエンドソリューションを実装します。この統合には、中央集権的な監視とアラートシステムが含まれており、Raw、Validated、またはCDCインフラストラクチャから発生するデータの問題や異常を迅速に検出することができます。このアプローチにより、堅牢なデータ管理と信頼性が確保されます。

### ビジネス上の利点
ビジネスの観点からは、新しいアーキテクチャは大きな利点を提供します。インフラストラクチャコストを約30%〜40%削減しました。また、全製品間でリソース使用が最適化され、各製品に個別にリソースを割り当てるのではなく、効率的に共有されるようになりました。また、Flink上のCU（計算ユニット）を適切に管理することで、ストアのコストを最大40%削減することができます。また、データのSLR対応率も40%程度向上しました。新しいアーキテクチャにより、データの準備状況が大幅に改善されました。以前は8時までにデータが利用可能でしたが、現在は6時までに準備ができ、お客様にとってより早いデータアクセスが可能になりました。次の部分はリアルタイムデータ能力についてです。リアルタイム分析を提供できるようになったため、迅速な洞察を提供することができます。また、BIと協力してリアルタイムダッシュボードを作成しています。リアルタイムデータにより、会社の成長を支援し、正しいデータに基づいてリアルタイムで迅速な意思決定を行うことができます。そして第三に、サーバーレスインフラストラクチャの柔軟性があります。Alibaba Cloud上で展開するサーバーレスインフラストラクチャの柔軟性により、私たちが顧客とユーザー向けのプラットフォームの作成に集中することができます。これにより、将来的な長期的な可能性を見つけることが容易になり、Mekariでの他の進化するテクノロジーをサポートします。

以上が、Mekariにおける従来のアーキテクチャから新しいアーキテクチャへの移行によって改善した内容です。この情報があなたに新たな知識を提供できることを願っています。何か質問や議論があれば、私のメールやソーシャルメディアのリンクから連絡してください。喜んで私たちが行ったアーキテクチャ改善に関する全てを共有します。皆様、ありがとうございました。

## まとめ
要約すると、Mekariでは、従来のアーキテクチャから新しい、より効率的なAlibaba Cloud上のアーキテクチャへと移行することで、大幅な改善を達成しました