09/29 AWS 공부(ECR, Kinesis firehose, S3 buckets)

2021. 9. 29. 17:22공부일기

ECR Repository(메인 사이트)

우선 링크의 있는 사이트를 보면 ECR(Elastic Container Registry)은 어디에서난 컨테이너 이미지와 아티팩트를 손십게 저장, 관리, 공유 및 배포할 수 있는 완전관리형 컨테이너 레지스트리이다. 

 

ECR을 사용하면 자체 컨테이너 Repo를 운영할 필요가 없이 편하게 저장, 공유 등을 활용할 수 있는 솔루션인 것 같다.

 

Dockerhub에 push 및 pull을 해주며 관리하는 것이 아닌 ECR에 push및 pull을 하며 관리하는 것이다. 

 

굳이 Dockerhub가 아닌 ECR에 push와 pull을 진행하며 해주는 것일까? 아래 표를 한번 살펴보자

 

우선 aws의 경우 public한 Repo가 안되고 MFA가 되고 가용성이 99.9%, 이미지가 불변한다. 서울 Region에서도 사용할 수 있어서 Docker Hub 보다는 안정적이게 사용할 수 있는 것 같다. 

 

작동 방식

 

  • 코드를 작성 후 도커 이미지로 만들어준다. 
  • 도커이미지를 ECR에 push한다. 
  • 이미지를 압축 및 암호화, 접근 제어를 해준다. 
  • 버전을 태깅해주고 이미지 라이프 사이클을 관리해준다.
  • 위의 단계를 모두 통과하면 컨테이너를 실행시키고 Amazon EKS에 푸쉬해준다.

 

Amazon Kinesis(홈페이지)

AWS Kinesis란 실시간 스트리밍 데이터를 손쉽게 수집, 처리 및 분석할 수 있도록 도와주는 서비스인 것 같다.

 

홈페이지에서 설명하는 세가지 이점은 실시간, 완전관리형, 확장성이다.

 

  • 실시간
    실시간으로 스트리밍 데이터를 수집, 버퍼링 및 처리할 수 있다. 

  • 완전관리형
    인프라는 aws에서 완전히 관리해주니 개발자가 크게 신경써줄 부분이 줄어든다. 
  • 확장성
    모든 규모의 스트리밍 데이터를 처리하고 매우 짧은 지연시간으로 수 많은 데이터를 처리할 수 있다.

 

현재 사용해야하는 기술은 Kinesis 중에서도 Firehose이다. Kinesis 중에서 Firehose가 무슨 역할을 하는지 알아보자~~

 

AWS Kinesis Data Firehose

스트리밍 데이터를 Data Lake, Data Store 및 분석 서비스에 안정적으로 로드하는 방법입니다. 스트리밍 데이터를 캡처하고 변환하고 S3, Redshift, NewRelic, 일반 HTTP 엔드포인트와 같은 서비스 공급자로 전송할 수 있습니다. 현재 우리 회사의 경우 s3에 전달해주고 있다.

 

Firehose는 데이터 처리량에 맞춰 자동으로 크기가 조정되며 지속적인 관리가 필요없는 완전 관리형 서비스이다. 또한 데이터 스트림을 로드하기 전에 배치 처리, 압축, 변환 및 암호화해서 사용량을 최소화하고 보안을 강화할 수 있다.

 

간략하게 요약하면 아래와 같다.

 

  • 실시간 데이터를 캡처하고 변환하고 다른 서비스(S3, Redshift, NewRelic)로 넘겨준다.
  • 데이터 처리량에 맞춰 자동으로 크기가 조종되며 지속적인 관리가 필요없다.(완전 관리형)
  • 로드 전 압축, 변환 암호화해서 보안도 강화할 수 있다.

 

SQS vs Kinesis 차이 비교

https://aws.amazon.com/ko/kinesis/data-streams/faqs/

 

Amazon Kinesis Data Streams FAQ - 데이터 스트리밍 서비스 - Amazon Web Services

 

aws.amazon.com

위의 사이트에 방문해보면 둘중에 어떤 것을 어떤 상황에 사용하면 좋을지 얘기해주고 있다. 

 

우선 둘의 차이점은 

 

SQS

컴퓨터 간에 송수신하는 메시지를 저장하기 위한 안정적이고 확장성이 뛰어난 호스팅 대기열을 제공한다. 애플리케이션 구성 요소 간 데이터를 손쉽게 이동가능하고 메시지가 손쉽게 독립적으로 처리되는 애플리케이션을 구축할 수 있습니다.

 

SQS를 사용하면 좋을 경우 

 

- 개별 메시지 지연, 메시지 대기열에 작업들이 대기하고 있으며 각 각업에 지연시간을 지정할 수 있는 경우 

- 읽기 작업시 동시성/처리량 동적으로 증가 작업 대기열이 있으며 백로그가 지워질 때까지 더 많은 리더를 추가하려는 경우. kinesis의 경우에는 수행하기 전에 충분한 수의 샤드를 프로비저닝해야한다. 

Kinesis

빅데이터 스트리밍을 실시간으로 처리할 수 있다. 레코드를 순서대로 정리하고 여러 개의 kinesis 애플리케이션과 같이 같은 순서대로 레코드를 읽거나 리플레이 할 수 있는 기능을 제공한다. 

 

Kinesis를 사용하면 좋을 경우

 

- 몇 시간 후 동일한 순서대로 레코드를 사용할 수 있도록 하는 기능. ex) 결제 시스템이 진행된 후 몇시간 뒤에 감사 프로그램이 실행될 때

- 여러 개의 어플리케이션이 동일한 스트림을 동시에 사용할 수 있도록 하는 경우

- 레코드를 순서대로 정렬하는 경우 

S3 buckets(홈페이지)

확장성, 데이터 가용성, 보안과 성능을 제공하는 객체 스토리지 서비스입니다. 즉 어떠한 서비스이든(모바일 애플리케이션, 백업 및 복원, IOT 서비스,....)의 데이터를 저장할 수 있는 서비스이다. 

 

AWS 자랑으로는 99.999999999%의 내구성을 제공한다고 한다. 

 

해당 서비스에서 자랑하는 특징은

 

  • 확장성
    특별한 구매과정 없이 요구사항에 맞춰 스토리지 리소스를 확장 및 축소할 수 있습니다.

  • 가용성 및 내구성
    99.99999999%의 보안성을 자랑한다. 

  • 안정적인 보안
    퍼블릭 액세스 차단을 통해 버킷 또는 계정 수준에서 모든 객체에 대한 퍼블릭 액세스를 차단할 수 있는 유일한 객체 서비스이다.

등이 대표적으로 있다.

 

사용 사례로는 

 

- 백업 및 복원 

 

- 재해 복구

 

- 데이터 레이크 및 빅데이트 분석

 

등이 있다.

 

현재는 직접 사용해보지 않아서 인터넷에 있는 이러한 장단점만 알 수 있는데 앞으로 직접 사용해보면서 다양한 사용기를 작성해봐야겠다.