AWS Kinesis
이 글은 AWS Kinesis 이 무엇인지에 대한 개념적인 글입니다.
다음의 자료를 기반으로 작성되었습니다.
- Introducing Amazon Kinesis (SlideShare)
- Introduction to Amazon Kinesis (Youtude)
Big Data
인터넷의 발전으로 인해서 하루에도 계산하기 힘든 데이터가 쏟아집니다. 과거와는 달라진 이러한 환경을 우리는 간단히 Big Data 시대라고 하지요. 어찌보면 과거에도 Big Data 는 있었지만 요즘과 구별되는 것은 누구든지 Data 를 생산할 수 있다는데에 있습니다. 그러다보니 과거와는 다르게 쏟아지는 데이터를 분석해서 유의미한 데이터를 뽑아내는 기술이 필요하게 되었는데 이게 바로 Big Data 의 진정한 의미 중에 하나 입니다.
누구나 생산해내는 데이터들을 유의미한 의미의 정보로 가공해내는 것이 바로 Big Data 기술이라고 할 수 있습니다.
Batch VS Streaming
과거 이야기를 좀 더 해보면, 과거에도 데이터를 분석해내는 방법이 있었습니다. 첫번째로는 데이터를 모우는 겁니다. 그리고 그것을 특정한 저장소에 저장을 합니다. 대부분 데이터베이스시스템에 저장을 했습니다. 그리고 그것을 이용해서 쿼리문을 이용해서 데이터를 뽑아 냈습니다.
그런데, 데이터를 모으고 데이터베이스에 저장하고 하는 부분은 특정 시간에 서버에 작업을 걸어놓아하는 경우가 많았습니다. 간단하게는 리눅스 시스템에서 크론(Cron) 을 이용해서 특정 배치 프로그램을 돌려서 데이터를 모우고 데이터베이스에 집어넣는 방법을 이용했지요.
하지만 Big Data 시대에 이 방법이 과연 유용한가 하는 문제가 있습니다. 몇분, 몇시간, 몇일간격으로만 배치작업을 돌리는건 쏟아지는 데이터 속도보다 빠르지 못하다보니 데이터분석을 할 수 없는 경우가 많습니다. 설사 분석을 해낸다고 해도 이미 시간이 많은 흐른뒤라서 시의성을 가지지 못하는 정보가 될 겁니다.
그래서 등장한 것이 스트리밍(Streaming) 입니다. 스트리밍, 물 흐르듯 그때그때 데이터를 분석해내면 유용한 정보를 얻기위해서 기달릴 필요가 없을 겁니다. 그때 그때 분석한 데이터를 데이터베이스에 저장하거나 파일로 저장하는것도 가능합니다.
그래서 현대의 Big Data 분석 소프트웨어들은 전부다 Streaming 을 지원하도록 발전되어 왔습니다.
많은 소프트웨어들이 이렇게 데이터 수집, 분석처리, 저장, 분석 및 리포트 영력으로 나뉘어 발전되어지고 있습니다.
위 그림에서 문제가 하나 있습니다. 데이터 수집 부분과 데이터 처리부분 입니다. 이 부분이 문제가 되는 이유는 데이터 수집하는 소프트웨어와 처리하는 소프트웨어간의 데이터 교환을 맞춰줘야 하고 둘이 동기화 되어 처리되어야 합니다. 어느 한쪽이 병목이 생기면 문제가 생길 수도 있습니다.
AWS Kinesis
AWS Kinesis 는 데이터 수집구간과 데이터 처리구간 중간에 위치합니다. 이렇게 중간에 위치하는 소프트웨어를 만든 이유는 다양한 데이터들을 수집하고 이것을 다양한 포맷으로 만들어 줍니다.
Kinesis 를 이해하는데 헷깔리는게 있는데, Kinesis 가 ‘스트리밍 데이터 처리’ 를 해준다는 것입니다. 여기서 스트리밍 데이터 처리라는 말은 스트리밍으로 데이터를 분석해준다는 이야기가 아닙니다.
다양한 형태로 들어오는 데이터를 가공해서 다양한 분석 소프트웨어가 사용가능하도록 다양한 출력물을 만들어내주거나 데이터 저장소에 저장하도록 해줍니다.
기존의 Streaming 처리구조 입니다. 수많은 다양한 데이터들이 들어오고 이것을 처리하는 가공하고 분석하는 도구들이 붙어 있습니다.
AWS Kinesis 는 다양한 데이터들을 빠르게 가공해줍니다. 그리고 이러한 데이터들은 다양한 포맷으로 출력줌으로써 다양한 소프트웨어서 사용해주게 해줍니다.
다어그램으로 표현하면 다음과 같습니다.
AWS Kinesis 는 다양한 입력 데이터와 출력을 해줍니다.
Amazon 에서는 Kinesis 를 다음과 같이 설명하고 있습니다.
Amazon Kinesis는 완전관리형 스트리밍 데이터 서비스입니다. 수십만 개의 소스에서 클릭 스트림, 애플리케이션 로그, 소셜 미디어와 같은 다양한 유형의 데이터를 Amazon Kinesis 스트림에 지속적으로 추가할 수 있습니다. 그러면 몇 초 안에 Amazon Kinesis 애플리케이션에서는 스트림의 해당 데이터를 읽고 처리할 수 있습니다.
“Amazon Kinesis 스트림에 지속적으로 추가할 수 있습니다” 이 말의 의미를 잘 생각해본다면 이것이 무엇인지 감을 잡을 수 있을 겁니다.