[AWS] Kinesis를 이용한 실시간 데이터 파이프라인

박준호·2023년 3월 27일
2

기능경기대회

목록 보기
2/3
post-thumbnail

Kinesis를 활용하여 실시간 데이터 처리를 해주는 파이프라인을 구성해보자

데이터를 처리하려면 필요한게 있을 것이다
내가 가장 크게 떠오르는 것은 3가지 이다

  1. 수집할 데이터
  2. 데이터를 저장할 장소
  3. 데이터 전송 방법

3가지 서비스가 AWS 상에 있다고 생각해도 된다

1. 수집할 데이터

데이터 수집은 AWS 상의 API Gateway 서비스를 통해 가능하다
API Gateway를 사용하는 이유로는 아마 데이터를 저장할 장소에 타 서비스 보다 조금더 편하게 보내기 위해서도 있을것이다
API Gateway로 만든 API형식에 맞춰 데이터를 보내면 수집할 데이터가 전송되는 것이다

참 간단한것 같다 그렇지 않은가? API 생성하고 형식만 만들어주면 알아서 URL까지 발급해줘서 요청만 하면 되는것이다

2. 데이터를 저장할 장소

사실 데이터를 저장할 장소도 AWS상의 S3라는 서비스로 간단하게 해결가능하다
아마존 에서 S3 에 대해 이렇게 말했다
"Amazon S3는 업계 최고의 확장성, 데이터 가용성 및 보안과 성능을 제공하는 객체 스토리지 서비스 입니다."

S3는 용량에 제한이 없고 어떤 파일이든 저장이 가능한 대단한 서비스 이다
이러한 S3에 실시간 데이터를 수집한다면 더할나위 없이 좋은 저장소 일것이다

3. 데이터 전송 방법

사실 데이터 수집과 저장소도 중요하지만 가장 중요한것은 데이터를 어떻게 전송할것인가 아닐까?

AWS는 참 대단하다, 실시간 데이터 처리를 지원하는 Kinesis라는 서비스가 있다

💡 Kinesis란?
Kinesis는 AWS에서 제공하는 실시간으로 데이터 스트림을 수집, 처리, 분석해주는 서비스이다.

설명에는 나와있지 않지만 수집된 데이터를 전송해주는 서비스 또한 포함되어있다
얼마나 멋진가 AWS 서비스들만 이용해서 실시간 데이터 처리의 가장 중요하게 생각하는 3요소를 구성한 것이다

조금더 자세히 설명하자면 Kinesis Data Streams 라는 서비스를 사용해 실시간 데이터를 받아서 저장하고 있다
Kinesis Data Firehose는 데이터를 한쪽에서 다른쪽으로 전송해주는 서비스 이다

위 두가지 서비스를 연결한다면? 실시간 데이터를 받아서 전송까지 자연스럽게 연결되는 것이다
또한 데이터를 받는 서비스, 데이터 저장 서비스 모두 AWS 내에 있기에 간단하게 연결 가능할것이다
끝이다 AWS를 활용해 데이터 파이프라인을 구성하기 위해선 AWS의 4가지 서비스만 있으면 되는것이다

그럼 간단하게 방법을 알아보자

먼저 데이터를 받을 입구와 같은 역할 API Gateway를 생성해보자

AWS 서비스에 대한 Gateway 이기 때문에 AWS 서비스와 호환되는 REST API를 만들어야한다
주황색 구축 버튼을 누르고 이름을 적고 생성 해준다!

리소스 생성을 해주고 리소스 이름을 넣어주자 (리소스는 URL주소 뒤에 생성된다)
생성한 리소스에 메서드를 POST 방식으로 생성을 해주고 AWS 서비스를 선택하고, 리전은 Kinesis가 생성될 리전을 선택한다, AWS 서비스는 Kinesis로 데이터를 보낼것이기 때문에 Kinesis를 선택해주고 작업은 PutRecord이다. 실행 역할에는 API Gateway에서 Kinesis로 접근하는 역할을 만든후 ARN을 넣어주자!

다했으면 작업 > API 배포를 해주자 (이름은 알아서!)

![](
이런식으로 URL 호출 이라며 URL이 하나 생긴다
나중에 이 URL로 데이터를 보내서 테스트 하면 된다

이젠 Kinesis를 구성해보자

프로비저닝은 정한만큼만 데이터를 받아오는거고 온디맨드는 오는 요청을 다 받는거라고 생각하면된다
우린 실습이니까 프로비저닝으로 최소만큼만 하자

이대로 생성하면 된다 이러면 실시간 데이터를 받아서 임시저장까지 해준다니 너무너무 간단하지 않은가?

Firehose를 생성하기 전에 먼저 저장소인 S3 Bucket을 생성해주자
이름만 할당하고 아무 설정도 건들지 않고 생성해주면 된다

다음은 Firehose를 생성해주면 된다

소스 : 즉 데이터를 받아올 장소이다. 우린 Data Stream에 임시 저장해두었으니 선택해주자
대상 : 데이터를 전송하여 저장할 장소이다 우린 S3에 저장하기로 했으니 S3 선택!

위에서 만들어준 버킷을 대상으로 설정해주고 버킷 접두사는 폴더 경로라고 생각하면 된다
참고로 버킷 접두사 안적어줘도 yyyy/mm/dd/hh 형식으로 UTC 시간으로 추가 자동 추가되니 알아두자
이대로 생성!

이게 파이프라인 구성 끝이다. 이상할 정도로 간단하지 않은가? 이게 AWS의 힘이다

테스트를 위해서는 EC2를 하나 생성해서 조금 전에 생성한 API 주소에 POST 메서드로 json파일을 보내면 된다
S3로 가서 확인해보면 잘 저장되있는것을 확인할수 있다

마무리

Kinesis 생각보다 어려울것 같았지만 막상 실습해봤더니 충분히 할만한 서비스인것 같고
오늘도 새로운 서비스를 배워간다는 점에 뿌듯합니다
취업하는 그날까지 화이팅!

profile
클라우드 컴퓨팅 공부중입니다.

0개의 댓글