

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

# Managed Service for Apache Flink: 작동 방식
<a name="how-it-works"></a>

Managed Service for Apache Flink는 Apache Flink 애플리케이션을 사용하여 스트리밍 데이터를 처리할 수 있는 완전 관리형 Amazon 서비스입니다. 먼저 Apache Flink 애플리케이션을 프로그래밍한 다음 Managed Service for Apache Flink 애플리케이션을 생성합니다.

## Apache Flink 애플리케이션 프로그래밍
<a name="how-it-works-programming"></a>

Apache Flink 애플리케이션은 Apache Flink 프레임워크를 사용하여 만든 Java 또는 Scala 애플리케이션입니다. 로컬에서 Apache Flink 애플리케이션을 작성하고 빌드합니다.

[애플리케이션은 주로 [DataStream API](https://nightlies.apache.org/flink/flink-docs-release-1.15/dev/datastream_api.html) 또는 Table API](https://nightlies.apache.org/flink/flink-docs-release-1.15/dev/table/)를 사용합니다. 다른 Apache Flink API도 사용할 수 있지만 스트리밍 애플리케이션을 빌드하는 데는 많이 사용되지 않습니다.

두 API의 특징은 다음과 같습니다.

### DataStream API
<a name="how-it-works-prog-datastream"></a>

Apache Flink DataStream API 프로그래밍 모델은 두 가지 구성 요소를 기반으로 합니다.
+ **데이터 스트림:** 연속적인 데이터 레코드 흐름을 구조적으로 표현한 것입니다.
+ **변환 연산자:** 하나 이상의 데이터 스트림을 입력으로 받아 하나 이상의 데이터 스트림을 출력으로 생성합니다.

DataStream API로 만든 애플리케이션은 다음을 수행합니다.
+ 데이터 소스(예: Kinesis 스트림 또는 Amazon MSK 항목)에서 데이터를 읽습니다.
+ 필터링, 집계 또는 보강과 같은 변환을 데이터에 적용합니다.
+ 변환된 데이터를 Data Sink에 씁니다.

DataStream API를 사용하는 애플리케이션은 Java 또는 Scala로 작성할 수 있으며 Kinesis 데이터 스트림, Amazon MSK 항목 또는 사용자 지정 소스에서 읽을 수 있습니다.

애플리케이션은 *커넥터*를 사용하여 데이터를 처리합니다. Apache Flink는 다음 유형의 커넥터를 사용합니다.
+ **소스**: 외부 데이터를 읽는 데 사용되는 커넥터입니다.
+ **싱크**: 외부 위치에 쓰는 데 사용되는 커넥터입니다.
+ **오퍼레이터**: 애플리케이션 내에서 데이터를 처리하는 데 사용되는 커넥터입니다.

일반적인 애플리케이션은 소스가 있는 하나 이상의 데이터 스트림, 하나 이상의 연산자가 있는 데이터 스트림, 하나 이상의 데이터 싱크로 구성됩니다.

DataStream API 사용에 대한 자세한 내용은 [DataStream API 구성 요소 검토](how-datastream.md) 섹션을 참조하세요.

### 표 API
<a name="how-it-works-prog-table"></a>

Apache Flink Table API 프로그래밍 모델은 다음 구성 요소를 기반으로 합니다.
+ **테이블 환경:** 하나 이상의 테이블을 만들고 호스팅하는 데 사용하는 기본 데이터에 대한 인터페이스입니다.
+ **테이블:** SQL 테이블 또는 뷰에 대한 액세스를 제공하는 객체입니다.
+ **테이블 소스:** Amazon MSK 항목과 같은 외부 소스에서 데이터를 읽는 데 사용됩니다.
+ **테이블 함수:** 데이터를 변환하는 데 사용되는 SQL 쿼리 또는 API 직접 호출입니다.
+ **테이블 싱크:** Amazon S3 버킷과 같은 외부 위치에 데이터를 쓰는 데 사용됩니다.

Table API로 생성한 애플리케이션은 다음을 수행합니다.
+ `Table Source`에 연결하여 `TableEnvironment`을(를) 생성합니다.
+ SQL 쿼리 또는 Table API 함수를 사용하여 `TableEnvironment`에 테이블을 생성합니다.
+ 테이블 API 또는 SQL을 사용하여 테이블에서 쿼리를 실행
+ 테이블 함수 또는 SQL 쿼리를 사용하여 쿼리 결과에 변환을 적용합니다.
+ 쿼리 또는 함수 결과를 `Table Sink`에 씁니다.

Table API를 사용하는 애플리케이션은 Java 또는 Scala로 작성할 수 있으며, API 직접 호출 또는 SQL 쿼리를 사용하여 데이터를 쿼리할 수 있습니다.

Table API 사용에 대한 자세한 내용은 [테이블 API 구성 요소 검토](how-table.md) 섹션을 참조하세요.

## Managed Service for Apache Flink 애플리케이션 생성
<a name="how-it-works-app"></a>

Managed Service for Apache Flink는 Apache Flink 애플리케이션을 호스팅하기 위한 환경을 생성하고 다음 설정을 제공하는 AWS 서비스입니다.
+ **[런타임 속성 사용](how-properties.md):** 애플리케이션에 제공할 수 있는 파라미터. 애플리케이션 코드를 다시 컴파일하지 않고도 이러한 파라미터를 변경할 수 있습니다.
+ **[내결함성 구현](how-fault.md)**: 애플리케이션이 인터럽트 및 재시작으로부터 복구되는 방법
+ **[Amazon Managed Service for Apache Flink의 로깅 및 모니터링](monitoring-overview.md)**: 애플리케이션에서 CloudWatch Logs에 이벤트를 로깅하는 방법 
+ **[애플리케이션 규모 조정 구현](how-scaling.md)**: 애플리케이션이 컴퓨팅 리소스를 프로비저닝하는 방법.

콘솔이나 AWS CLI를 사용하여 Managed Service for Apache Flink 애플리케이션을 생성합니다. Managed Service for Apache Flink 애플리케이션 생성을 시작하려면 [자습서: Managed Service for Apache Flink에서 DataStream API 사용 시작하기](getting-started.md) 을 참조하세요.