[Intro] Apache Flink 소개

y001·2025년 11월 29일

Apache Flink Hands-On

목록 보기
1/17
post-thumbnail

1. 시작하면서

데이터는 이제 한곳에 저장되어 머무르지 않는다. 센서, 사용자 클릭, 앱 로그, 금융 거래처럼 다양한 소스에서 끊임없이 생성되며 계속 흘러간다.
Apache Flink는 이러한 데이터가 도착하는 즉시 처리할 수 있도록 설계된 실시간 분산 처리 엔진이다. 현대적인 실시간 애플리케이션을 구축하기 위한 기반을 제공하며, Alibaba, Netflix, Uber, Lyft, Pinterest 같은 글로벌 기술 기업들이 사용하고 있다. 데이터 흐름이 폭발적으로 증가한 오늘날의 환경에서는 전통적인 배치 처리 시스템만으로는 속도를 따라가기 어렵다. 이 지점에서 실시간 처리를 중심에 둔 Apache Flink의 가치가 드러난다.

시기내용
2009 ~ 2014TU Berlin, HU Berlin, HPI Potsdam이 Stratosphere라는 연구 프로젝트를 진행하였다. 이 프로젝트는 큰 데이터를 빠르게 처리하는 새로운 엔진을 만드는 것이 목표였고, 처음부터 배치가 아니라 스트림 중심 구조를 선택한 점이 중요한 특징이었다.
2014Stratosphere를 기반으로 한 Flink가 Apache 재단의 인큐베이션을 통과하고 정식 프로젝트로 승격되었다. 이를 통해 Flink는 공식적인 오픈소스 스트리밍 엔진으로 자리 잡기 시작하였다.
2015 ~ 2019실시간 데이터의 중요성이 커지면서 Flink가 주목받았다. 이 기간 Flink는 이벤트 시간 처리, 상태 기반 스트림 처리, 정확히 한 번 처리 같은 기능 덕분에 “진짜 스트리밍 엔진”으로 인정받았다.
2014 ~ 2019Flink 개발자들이 세운 dataArtisans가 2019년 Alibaba에 인수되었고, 이후 Ververica라는 이름으로 이어졌다. 이 인수를 통해 Flink는 대규모 실사용 환경에서 더 널리 검증되었다.
2019 이후Flink SQL, Table API, CEP 등 고수준 기능이 빠르게 발전하고, Kafka·Kinesis·JDBC 같은 다양한 커넥터가 추가되었다. 이 시기부터 Flink는 단순 엔진을 넘어 기업용 실시간 데이터 플랫폼으로 확장되었다.

Apache Flink는 처음부터 스트리밍 처리를 중심에 둔 분산 데이터 처리 엔진이다. 단순히 저장된 데이터를 한 번에 처리하는 배치 방식뿐 아니라, 끊임없이 들어오는 실시간 데이터 스트림을 바로 처리할 수 있게 설계되었다는 점이 가장 큰 특징이다.
이 프로젝트는 Apache 재단이 관리하는 오픈소스이기 때문에 누구나 사용하고 확장할 수 있다. 내부적으로는 내결함성, 상태 관리, 이벤트 타임 처리 같은 기능이 탄탄하게 자리 잡고 있어, 데이터가 늦게 들어오거나 순서가 뒤바뀐 경우에도 정확한 결과를 낼 수 있다.
이런 구조 덕분에 Flink는 분산 클러스터 전체를 활용해 초당 수백만 건 수준의 이벤트를 안정적으로 처리할 수 있다. 한마디로, 대규모 실시간 데이터 처리가 필요한 환경에서 바로 사용할 수 있는 엔진이다.

Apache Flink를 사용하는 가장 큰 이유는, 실시간에 가까운 스트리밍 처리를 해낸다는 점이다. Spark Streaming처럼 마이크로배치를 쌓아서 처리하는 방식이 아니라, 데이터가 들어오는 즉시 바로 처리하는 구조라 지연이 매우 낮다.
또 하나 큰 장점은 장애가 발생해도 상태를 정확히 한 번만 반영한다는 보장이다. 스트림 시스템에서는 상태를 잘못 처리하거나 중복 반영되는 일이 치명적일 수 있는데, Flink는 이 부분을 매우 안정적으로 처리한다.
시간 개념도 잘 다룬다. 데이터를 이벤트가 실제로 발생한 시간 기준으로 처리하고, 워터마크를 이용해 늦게 도착한 데이터나 순서가 뒤바뀐 데이터도 정확하게 정렬해서 계산할 수 있다.
API도 다양해서 원하는 수준의 추상화를 선택할 수 있다.

  • 간단하게 쓰고 싶으면 Flink SQL이나 Table API,
  • 더 세밀하게 제어하고 싶으면 DataStream API,
  • 가장 낮은 레벨까지 제어하려면 Process Function을 사용하면 된다.
    또 Kafka, S3, Iceberg, JDBC, Elasticsearch 같은 시스템들과 쉽게 연결할 수 있어서 실무에서 바로 통합하기 좋고, Java, Scala, Python(PyFlink)까지 지원해 언어 선택 폭도 넓다.
    요약하면, Flink는 낮은 지연, 강력한 일관성, 유연한 API, 그리고 다양한 외부 시스템과의 통합 능력 때문에 실시간 데이터 플랫폼에서 자주 선택되는 엔진이다.

5. 참고자료

0개의 댓글