

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Managed Service for Apache Flink とは?
<a name="what-is"></a>

Amazon Managed Service for Apache Flink を使用すると、Java、Scala、Python、SQL のいずれかを使用してストリーミングデータを処理および分析できます。このサービスにより、ストリーミングソースや静的ソースに対してコードを作成・実行し、時系列分析を行い、リアルタイムダッシュボードやメトリクスにデータを供給できます。

[Apache Flink](https://flink.apache.org/) に基づくオープンソースライブラリを使用して、Managed Service for Apache Flink で任意の言語を使用してアプリケーションを構築できます。Apache Flink は、データストリームを処理するための一般的なフレームワークおよびエンジンです。

Apache Flink 用 Managed Serviceは、Apache Flink アプリケーションの基盤となるインフラストラクチャを提供します。コンピュートリソースのプロビジョニング、AZ フェイルオーバー耐性、並列計算、自動スケーリング、アプリケーションバックアップ (チェックポイントやスナップショットとして実装) などのコア機能を処理します。ハイレベルの Flink プログラミング特徴 (オペレータ、関数、ソース、シンクなど) は、Flink インフラストラクチャーを自分でホストするときと同じように使用できます。

## Managed Service for Apache Flink と Managed Service for Apache Flink Studio のどちらを使用するかを決定する
<a name="flink-or-studio"></a>

Amazon Managed Service for Apache Flink で Flink ジョブを実行するには、2 つのオプションがあります。[Managed Service for Apache Flink](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html) を利用すると、任意の IDE と Apache Flink の Datastream API や Table API を使用して Java、Scala、Python (および埋め込み SQL) で Flink アプリケーションを構築できます。[Managed Service for Apache Flink Studio](https://docs.aws.amazon.com/managed-flink/latest/java/how-notebook.html) を利用すると、リアルタイムでデータストリームをインタラクティブにクエリでき、標準 SQL、Python、Scala を使用してストリーム処理アプリケーションを容易に構築・実行できます。

ユースケースに最適な方法を選択できます。よくわからないときは、このセクションで大まかなガイダンスを確認してください。

![\[Decision tree for selecting Flink application, Deployed Studio application, or Studio Notebook based on use case and programming experience.\]](http://docs.aws.amazon.com/ja_jp/managed-flink/latest/java/images/msf-decision-tree.png)


Amazon Managed Service for Apache Flink と Amazon Managed Service for Apache Flink Studio のどちらを使用するかを決定する前に、ユースケースを検討する必要があります。

ストリーミング ETL や継続的アプリケーションなどのワークロードを引き受ける長時間稼働のアプリケーションを運用する場合は、[Managed Service for Apache Flink](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html) の使用を検討する必要があります。これは、任意の IDE で Flink API を直接使用して Flink アプリケーションを作成できるためです。IDE を使用してローカルで開発することで、Git でのコードバージョニング、CI/CD オートメーション、ユニットテストなどのソフトウェア開発ライフサイクル (SDLC) の一般的なプロセスやツールを活用することもできます。

アドホックデータ探索に関心があり、ストリーミングデータをインタラクティブにクエリする場合、またはプライベートリアルタイムダッシュボードを作成する場合、[Managed Service for Apache Flink Studio](https://docs.aws.amazon.com/managed-flink/latest/java/how-notebook.html) を使用すれば、わずか数クリックでこれらの目標を達成できます。SQL に精通しているユーザーは、長時間稼働しているアプリケーションを Studio から直接デプロイすることを検討できます。

**注記**  
Studio ノートブックを長時間稼働するアプリケーションに昇格させることができます。ただし、Git でのコードバージョニングや CI/CD オートメーションなどの SDLC ツール、あるいはユニットテストなどの手法と統合する場合は、任意の IDE を使用して Managed Service for Apache Flink を使用することをお勧めします。

## Managed Service for Apache Flink で使用する Apache Flink API を選択する
<a name="which-flink-apis"></a>

Managed Service for Apache Flink では、任意の IDE で Apache Flink API を使用して、Java、Python、Scala でアプリケーションを構築できます。Flink Datastream と Table API を使用してアプリケーションを構築する方法に関するガイダンスについては、[ドキュメント](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html)を参照してください。Flink アプリケーションを作成する言語と、アプリケーションと運用のニーズに合わせて使用する API を選択できます。よく分からないときは、このセクションで大まかなガイダンスを提供します。

### Flink API を選択する
<a name="which-flink-api"></a>

Apache Flink API には、さまざまな抽象化レベルがあり、アプリケーションの構築方法に影響を与える可能性があります。これらは表現力と柔軟性があり、一緒に使用することでアプリケーションを構築できます。1 つの Flink API のみを使用する必要はありません。Flink API の詳細については、[Apache Flink のドキュメント](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/concepts/overview/#flinks-apis)を参照してください。

Flink には、Flink SQL、Table API、DataStream API、Process Function の 4 つの API 抽象化レベルが用意されています。これらは DataStream API と組み合わせて使用されます。これらはすべて Amazon Managed Service for Apache Flink でサポートされています。可能であれば、より高いレベルの抽象化から始めることをお勧めしますが、一部の Flink 機能は、Java、Python、または Scala でアプリケーションを作成できる [Datastream API](https://docs.aws.amazon.com/managed-flink/latest/java/getting-started.html) でのみ使用できます。以下の場合は、Datastream API の使用を検討する必要があります。
+ 状態をきめ細かく制御する必要がある 
+ 外部データベースまたはエンドポイントを非同期的に呼び出す機能を活用したい (推論など) 
+ カスタムタイマーを使用したい (カスタムウィンドウや遅延イベント処理の実装など)
+ 状態をリセットせずにアプリケーションのフローを変更できるようにしたい

![\[Apache Flink APIs diagram showing abstraction levels and programming languages for different APIs.\]](http://docs.aws.amazon.com/ja_jp/managed-flink/latest/java/images/flink-apis.png)


**注記**  
`DataStream` API を使用した言語の選択:  
SQL は、選択したプログラミング言語に関係なく、任意の Flink アプリケーションに埋め込むことができます。
DataStream API を使用する場合、Python ではすべてのコネクタがサポートされているわけではありません。
低レイテンシー/高スループットが必要な場合は、API に関係なく Java/Scala を検討する必要があります。
Process Functions API で非同期 IO を使用する場合は、Java を使用する必要があります。
API を選択すると、状態をリセットすることなくアプリケーションロジックを進化させる機能にも影響する可能性があります。これは、演算子に UID を設定することのできる特定の機能に依存しており、Java と Python の両方の `DataStream` API でのみ使用できます。詳細については、「Apache Flink ドキュメント」の「[Set UUIDs For All Operators](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/ops/production_ready/#set-uuids-for-all-operators)」を参照してください。

## ストリーミングデータアプリケーションを始めるためのステップ
<a name="what-is-start"></a>

まず、ストリーミングデータを継続的に読み取って処理する Apache Flink アプリケーション用 Managed Service を作成します。次に、選択した IDE を使用してコードを書き、ライブストリーミングデータでテストします。Apache Flink 用 Managed Service で結果を送信する宛先を設定することもできます。

始める前に、以下のセクションを読んでおくことをお勧めします。
+ [Managed Service for Apache Flink: 仕組み](how-it-works.md)
+ [Amazon Managed Service for Apache Flink (DataStream API) の概要](getting-started.md)

または、Managed Service for Apache Flink Studio ノートブックを作成することで、リアルタイムにデータストリームをインタラクティブにクエリし、標準 SQL、Python、Scala を利用してストリーム処理アプリケーションを容易に構築・実行できます。を数回クリックするだけで AWS マネジメントコンソール、サーバーレスノートブックを起動してデータストリームをクエリし、数秒で結果を取得できます。始める前に、以下のセクションを読んでおくことをお勧めします。
+ [Managed Service for Apache Flink で Studio ノートブックを使用します](how-notebook.md)
+ [Studio ノートブックを作成する](how-zeppelin-creating.md)