

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Managed Service for Apache Flink의 Java 예제
<a name="examples-new-java"></a>

다음 예제는 Java로 작성된 애플리케이션을 생성하는 방법을 보여줍니다.



**참고**  
대부분의 예제는 개발 머신과 사용 중인 IDE에서 로컬로 실행할 수도 있고 Amazon Managed Service for Apache Flink에서도 그대로 실행할 수도 있도록 설계되어 있습니다. 이 예제들은 애플리케이션 파라미터를 전달하는 데 사용할 수 있는 메커니즘과 두 환경에서 변경 없이 애플리케이션을 실행할 수 있도록 종속 항목을 올바르게 설정하는 방법을 보여줍니다.

## 사용자 지정 TypeInfo로 직렬화 성능 개선
<a name="improving-serialization-performance-java"></a>

이 예제는 레코드 또는 상태 객체에 사용자 지정 TypeInfo를 정의해 직렬화가 덜 효율적인 Kryo 직렬화로 폴백되는 것을 방지하는 방법을 보여줍니다. 이는 예를 들어 객체에 `List` 또는 `Map`이 포함된 경우에 필요합니다 자세한 내용은 Apache Flink 설명서의 [데이터 형식 및 직렬화](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/datastream/fault-tolerance/serialization/types_serialization/#data-types--serialization)를 참조하세요. 또한 이 예제는 객체 직렬화가 덜 효율적인 Kryo 직렬화로 폴백되는지 테스트하는 방법도 함께 제공합니다.

코드 예제: [CustomTypeInfo](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/Serialization/CustomTypeInfo)

## DataStream API 시작하기
<a name="getting-started-datastream-java"></a>

이 예제는 `DataStream` API를 사용해 Kinesis 데이터 스트림에서 읽고 다른 Kinesis 데이터 스트림에 쓰는 간단한 애플리케이션을 보여줍니다. 이 예제는 올바른 종속 항목으로 파일을 설정하고, uber-JAR을 빌드한 다음 구성 파라미터를 구문 분석하여 애플리케이션을 로컬로 IDE에서 그리고 Amazon Managed Service for Apache Flink에서 모두 실행할 수 있도록 하는 방법을 보여줍니다.

코드 예제: [GettingStarted](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/GettingStarted)

## Table API 및 SQL 시작하기
<a name="getting-started-table-java"></a>

이 예제는 `Table` API 및 SQL을 사용하는 간단한 애플리케이션을 보여줍니다. 동일한 Java 애플리케이션에서 `DataStream` API를 `Table` API 또는 SQL과 통합하는 방법을 보여줍니다. 이 예제는 외부 데이터 생성기 없이도 Flink 애플리케이션 내부에서 무작위 테스트 데이터를 생성할 수 있도록 `DataGen` 커넥터를 사용하는 방법도 함께 보여줍니다.

전체 예제: [GettingStartedTable](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/GettingStartedTable)

## S3Sink(DataStream API)사용
<a name="s3-sink-java"></a>

이 예제는 `DataStream` API의 `FileSink`를 사용하여 JSON 파일을 S3 버킷에 쓰는 방법을 보여줍니다.

코드 예제: [S3Sink](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/S3Sink)

## Kinesis 소스, 표준 또는 EFO 소비자, 싱크 사용(DataStream API)
<a name="kinesis-EFO-sink-java"></a>

이 예제는 표준 소비자 또는 EFO를 사용해 Kinesis 데이터 스트림에서 소비하는 소스를 구성하고 Kinesis 데이터 스트림으로 싱크를 설정하는 방법을 보여줍니다.

코드 예제: [KinesisConnectors](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KinesisConnectors)

## Amazon Data Firehose 싱크(DataStream API) 사용
<a name="firehose-sink-java"></a>

이 예제는 Amazon Data Firehose(이전 명칭: Kinesis Data Firehose)로 데이터를 전송하는 방법을 보여줍니다.

코드 예제: [KinesisFirehoseSink](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KinesisFirehoseSink)

## Prometheus 싱크 커넥터 사용
<a name="prometheus-sink-java"></a>

이 예제는 [Prometheus 싱크 커넥터](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/connectors/datastream/prometheus/)를 사용하여 시계열 데이터를 Prometheus에 쓰는 방법을 보여줍니다.

코드 예제: [PrometheusSink](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/PrometheusSink)

## 윈도우 집계(DataStream API)사용
<a name="windowing-aggregations-java"></a>

이 예제는 `DataStream` API에서 네 가지 유형의 윈도우 집계를 보여줍니다.

1. 처리 시간에 따른 슬라이딩 윈도우

1. 이벤트 시간에 따른 슬라이딩 윈도우

1. 처리 시간에 따른 텀블링 윈도우

1. 이벤트 시간에 따른 텀블링 윈도우

코드 예제: [Windowing](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/Windowing) 

## 사용자 정의 지표 사용
<a name="custom-metrics-java"></a>

이 예제는 Flink 애플리케이션에 사용자 지정 지표를 추가하고 이를 CloudWatch 지표로 전송하는 방법을 보여줍니다.

코드 예제: [CustomMetrics](https://github.com/dzikosc/amazon-managed-service-for-apache-flink-examples/tree/main/java/CustomMetrics)

## Kafka 구성 공급자를 사용하여 런타임 시 mTLS용 사용자 지정 키 스토어 및 트러스트 스토어 가져오기
<a name="kafka-keystore-mTLS"></a>

이 예제는 Kafka 커넥터의 mTLS 인증을 위해 필요한 인증서가 포함된 사용자 지정 키 스토어와 트러스트 스토어를 설정하기 위해 Kafka 구성 공급자를 사용하는 방법을 보여줍니다. 이 기술을 사용하면 Amazon S3에서 필요한 사용자 지정 인증서를 로드하고 애플리케이션이 시작될 AWS Secrets Manager 때에서 보안 암호를 로드할 수 있습니다.

코드 예제: [Kafka-mTLS-Keystore-ConfigProviders](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KafkaConfigProviders/Kafka-mTLS-Keystore-ConfigProviders)

## Kafka 구성 공급자를 사용하여 런타임 시 SASL/SCRAM 인증을 위한 보안 암호 가져오기
<a name="kafka-secrets"></a>

이 예제에서는 Kafka 구성 공급자를 사용하여 Amazon S3에서 자격 증명을 가져오 AWS Secrets Manager 고 트러스트 스토어를 다운로드하여 Kafka 커넥터에서 SASL/SCRAM 인증을 설정하는 방법을 보여줍니다. 이 기술을 사용하면 Amazon S3에서 필요한 사용자 지정 인증서를 로드하고 애플리케이션이 시작될 AWS Secrets Manager 때에서 보안 암호를 로드할 수 있습니다.

코드 예제: [Kafka-SASL\$1SSL-ConfigProviders](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KafkaConfigProviders/Kafka-SASL_SSL-ConfigProviders)

## Kafka 구성 공급자를 사용하여 런타임 시 Table API/SQL로 mTLS용 사용자 지정 키 스토어 및 트러스트 스토어 가져오기
<a name="kafka-custom-keystore"></a>

이 예제는 Kafka 커넥터의 mTLS 인증을 위해 필요한 인증서가 포함된 사용자 지정 키 스토어와 트러스트 스토어를 설정하기 위해 Table API/SQL에서 Kafka 구성 공급자를 사용하는 방법을 보여줍니다. 이 기술을 사용하면 Amazon S3에서 필요한 사용자 지정 인증서를 로드하고 애플리케이션이 시작될 AWS Secrets Manager 때에서 보안 암호를 로드할 수 있습니다.

코드 예제: [Kafka-mTLS-Keystore-Sql-ConfigProviders](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/KafkaConfigProviders/Kafka-mTLS-Keystore-Sql-ConfigProviders)

## Side Outputs를 사용한 스트림 분할
<a name="side-output"></a>

이 예제는 Apache Flink에서 [Side Outputs](https://nightlies.apache.org/flink/flink-docs-master/docs/dev/datastream/side_output/)를 활용해 지정된 속성을 기준으로 스트림을 분할하는 방법을 보여줍니다. 이 패턴은 스트리밍 애플리케이션에서 Dead Letter Queue(DLQ) 개념을 구현할 때 특히 유용합니다.

코드 예제: [SideOutputs](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/SideOutputs)

## 비동기 I/O를 사용한 외부 엔드포인트 직접 호출
<a name="async-i-o"></a>

이 예제는 [Apache Flink 비동기 I/O](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/datastream/operators/asyncio/)를 사용해 외부 엔드포인트를 비차단 방식으로 직접적으로 호출하고 복구 가능한 오류에 대해 재시도를 수행하는 방법을 보여줍니다.

코드 예제: [AsyncIO](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/AsyncIO)