그동안 참 많이도 들었던 쿠버네티스, 이제서야 공부를 시작하게 되었다. 쿠버네티스는 단어나 개념 정리할 것들이 많은 편이다. 가장 큰 개념부터 하나하나씩 알아가보도록 한다. 쿠버네티스란? 쿠버네티스는 컨테이너 오케스트레이션 도구로 여러대의 서버에 컨테이너화된 Application을 배포 / 관리 / 확장할 수 있는 기능을 제공한다. 쿠버네티스는 구글이 개발한 borg라는 도구에서 발전된 형태로, 2015년 출시 이후 CNCF 재단에 오픈소스로써 제공했다고 한다. 쿠버네티스와 도커? 컨테이너를 관리하는 도구라는 점에서 쿠버네티스와 도커는 유사하다고 볼 수 있다. 다만 서로 주요 목적과 역할이 다를 뿐이라는 점을 확인해야한다. 도커는 단일 호스트 환경에서 컨테이너를 빠르고 간편하게 실행하는데에 주된 목적이 ..
전체보기
이전글에서 Lambda를 트리거할 수 있도록 SNS와 SQS로 연결해주었다. 이제 Rekognition API를 통해 추출된 비디오에서 특정 인물이 탐색된 구간 timestamp를 바탕으로 해당 구간끼리만 연결해주는 작업만 남았다. Elastic Transcoder S3 버킷에 저장된 미디어 파일을 변환(Transcoder)해주는 서비스이다. 클라우드 미디어 편집 서비스 정도로 이해하면 편하다. Transcoder는 글을 작성하는 현재 서울 리전을 지원하지 않는 관계로 us-east-1에서 작업을 진행했다. Elastic Transcoder에서는 크게 4가지 개념요소가 존재한다. 작업 : Transcoding을 수행하는 것으로, 비동기 처리에서의 job정도로 볼 수 있다. 파이프라인 : Transcodi..
이전 글에서 Rekognition API들을 호출하는 Lambda들을 작성했었다. 이번에는 이 Lambda들을 연결해주는 SNS와 SQS 부분을 작성해보도록 한다. 이 두 서비스는 메시지 브로커로써 유사한 개념을 가진 서비스로 다소 햇갈릴만한 요소가 있으니 서비스별로 개념을 파악해가며 알아보도록 한다. SNS Simple Notification Service라는 이름을 가진 SNS는 Topic 기반의 메시지 브로커 서비스이다. Subscribe가 존재하는 알림 서비스이다. 하나의 주제(Topic)에 구독한 구독자(Subscribers)들에 일괄적으로 메시지를 Push하는 구조를 가진다. 이번 프로젝트에서 Rekognition API 호출을 여러번했고, 비동기적 처리를 위해 여러 Lambda 함수로 분리했..
가상화에는 하이퍼바이저 가상화와 컨테이너 가상화, 2가지 유형이 존재한다. 이번 글에서는 컨테이너 가상화에 대해 알아보도록 한다. 컨테이너 하드웨어에 설치된 커널 하나에 격리된 컨테이너 프로세스를 돌리는 구조로 OS 수준의 가상화를 제공한다. 무겁고 느린 hypervisor 가상화 방식의 단점을 해결하기위해 등장했다. 컨테이너는 애플리케이션과 그에 종속되는 것들을 패키지화하고 실행환경을 격리하는데에 목적을 둔다. 각 컨테이너들을 호스트 OS의 리소스를 공유하며, 필요한 라이브러리와 실행 파일만을 포함하고 있어 하이퍼바이저 가상화의 가상머신(VM)보다 가볍게 구동될 수 있다. 컨테이너 가상화의 특징으로는 아래와 같다. 특징 설명 성능과 자원 효율성 가상머신(VM)에 비해 낮은 오버헤드와 빠른 부팅 시간 이..
앞선 글에서 FastAPI 단에서 클라이언트로부터 파일을 업로드 받는 로직까지 작성했다. 이번에는 이 프로젝트의 핵심 단계인 Rekognition Workload를 구성해보도록한다. 구성하는 Rekognition Workload의 아키텍쳐는 아래 그림과 같다. Workload는 여러개의 Lambda로 쪼개서 마이크로서비스 아키텍쳐에 가깝도록 설계해보았다. IndexFace 클라이언트가 업로드한 파일이 S3 버킷에 업로드되면 S3 이벤트 알림(notification)이 발생하는 것을 트리거로 삼아서 Lambda를 구성했다. Amazon S3 Event Notifications - Amazon Simple Storage Service If your notification writes to the same b..
이 프로젝트의 시작에 앞서 클라이언트 단에서 파일을 업로드하는 부분부터 구현했다. 흐름은 우선 클라이언트가 파일(이미지와 비디오)을 업로드하면 해당 파일들을 S3 버킷으로 저장시키고자 했다. 파일을 API로 전달받기 FastAPI에서는 클라이언트가 업로드한 파일작업을 위해 File 클래스를 지원한다. 업로드된 파일을 File로 전달받기 위해서 우선 python-multipart 모듈을 설치해주어야한다. (업로드된 파일들은 form-data 형태로 전송된다고한다.) pip install python-multipart 일반적으로 FastAPI에서 파일업로드는 bytes 자료형을 사용하는 것과 UploadFile 객체를 이용하는 것, 2가지 방법이 있다. bytes를 사용하는 경우 파일의 전체 내용이 메모리에..
개요 : 특정인물의 이미지를 바탕으로 비디오에서 특정인물이 담긴 구간만을 편집해 하나의 비디오로 추출하는 서비스 이 아이디어는 최근 영상 편집 분야에서 주목을 받았던 'AI 기반 자동 편집' 기능에서 영감을 받았다. 프리미어 프로의 플러그인 스타일로 지원을 하는 것으로 기억하는데, 이를 AWS에서 지원하는 AI기술로도 비슷하게 구현해볼 수 있지 않을까라는 생각에 진행하게 되었다. Rekognition AWS에서 제공하는 딥 러닝 기반의 이미지/동영상 분석 서비스로, 객체감지, 이미지 분석, 이미지 내의 텍스트 추출과 같은 분석을 할 수 있다. 이미지/동영상 분석을 활용할 수 있는 여러가지 솔루션을 제공해주는 모습을 볼 수 있다. 이번 프로젝트에서 주로 사용할 부분은 Rekognition을 이용해 비디오(..
이전 글에서 DeepRacer 모델을 직접 생성해 보았다. 이번에는 이 모델을 평가해보고 Race에 제출해본다. 모델 평가 생성한 모델을 Race에 제출하기 전, 트랙에서 돌려보는 최종 평가를 진행한다. Evaluation에서는 episode 횟수를 지정하고, 그 결과값(완주 시간, 완수율, off-track 횟수, 패널티 시간 등)들을 직접 확인할 수 있다. 생성한 모델 > Evalutaion > Start New Evaluation 모델 이름과 Race Type을 지정한다. 평가를 하기 위한 trial 수와 트랙을 지정한다. 가장 하단은 해당 Evaluation 기록을 공식 open Race에 제출할 것인지 여부를 묻는 항목이다. 이렇게 Evaluation을 제출하면 각 trial에 대한 정보와 시뮬..