1.api-gateway
aws의 api-gateway를 한마디로 정의하자면 외부 서비스(앱, 웹 등)에서 aws 내부 서비스를 연결해 주는 다리 이다. 아래 사진을 보면 좀더 명확히 이해가 가능하다.
api-gateway에 사용하고자하는 http, rest, websocket API를 구축하고 그 안의 설정에서 메서드와 리소스 방식을 원하는 형식에 맞춰 이용할 수 있다. 그 다음 설정은 json으로 받을지 text형식으로 받을지에 대한 부분과 다른 aws 서비스로의 연결을 위한 정책설정 등은 개념정리이므로 생략하고 aws tutorial 유투브 채널을 이용하면 쉽게 사용가능하다.
이걸 어떻게 활용할 수 있는지는 데이터 엔지니어링에 초점을 맞춰 말하자면 앱, 웹 애플리케이션에서 발생하는 실시간적인 데이터를 처리하기위해 aws kinesis와 연결하고 최종 데이터를 kinesis firehose를 통해 여러 형태의 db에 적재할 수 있다.
그렇다면 kinesis를 아직 설명하지 전이지만 kinesis firehose는 무엇이냐? 바로 설명하겠다.
2.aws kinesis
역시 한마디로 정의하자면 kinesis는 실시간으로 데이터 스트림을 수집, 처리, 분석해주는 서비스이다.
kinesis는 3가지로 이루어져있다. 데이터를 load해오는 Kinesis Data Streams(queue역할), queue에서 데이터를 꺼내서 전송해주는 Kinesis Data Firehose, 데이터 전처리 및 분석을 하게 해주는 Kinesis Data Analytics가 존재한다.
그런데 데이터를 어디서 extract해올 수 있냐? 경로는 너무나도 다양하다 rest 방식으로 받아지는 데이터들, s3, redshift 등 대부분의 어플리케이션에서 load가능하며 aws api인 boto3를 활용하면 쉽게 활용 가능하다.
data streams 생성시 비용최적화를 위한 데이터 스트림 용량을 설정할 수 있는데 각 서비스에서 운영되는 데이터량을 잘고려해서 설정해주면 된다. 프로비저닝의 샤드 개수를 조절하여 비용 최적화도 가능하다.
다음 Data Firehose는 설명 그대로 queue에서 데이터를 꺼내 넘겨주는 역할이므로 디테일한 설명은 패스한다.
당연하게도 대부분의 데이터는 전처리가 필요하다. Data Analytics가 그역할을 담당해준다.
위 사진처럼 애플리케이션을 구성하면 그안에서 Zeplin환경에서 Flink를 사용한 코딩이 가능하고 데이터처리가 용이하다. 컴퓨팅파워는 역시 cost적인측면을 고려해서 설정을 하면된다.
마지막으로 아쉬우니 한가지를 더 정리하자면 실제 운영을 한다면 api-gateway나 kinesis에서 발생하는 log들은 CloudWatch를 사용할 수 있는데 이를 활용해 모니터링이 가능하다.
boto3 : https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/kinesis.html