Close

ImageLabeller 소개


ImageLabeller는 머신러닝을 사용하여 이미지에 레이블을 적용하는 간단한 데모 애플리케이션입니다. AWS Lambda, AWS DynamoDB, AWS S3, AWS SageMaker, AWS API Gateway, AWS CloudWatch, AWS CloudFormation를 사용하며 Go, Python으로 작성되었습니다. 이 가이드는 Atlassian Open DevOps 도구를 사용하여 컴포넌트의 하위 집합을 배포하고 모니터링하는 방법을 다룹니다.

ImageLabeller 아키텍처

다이어그램

작동 방식

사용자가 AWS Lambda SubmitImage를 호출하여 유효한 이미지 URL을 매개 변수로 전달합니다. SubmitImage는 이미지를 다운로드하여 AWS S3 버킷 open-devops-images-에 업로드하고 AWS DynamoDB 테이블 ImageLabels에 새 튜플을 삽입하고 사용자에게 이미지 ID 토큰을 반환합니다. 이미지 ID 토큰은 open-devops-images-의 이미지와 ImageLabels의 튜플을 연결하는 데 사용됩니다.

AWS Lambda InvokeLabeller에 AWS DynamoDB 이벤트 트리거가 있습니다. InvokeLabeller는 open-devops-images-에서 해당 이미지를 다운로드하고 사전 트레이닝된 AWS SageMaker Inception V3 모델을 호출하여 이미지 레이블을 생성하고 새 튜플이 ImageLabels에 삽입되면 ImageLabels의 튜플을 업데이트합니다.

사용자가 AWS Lambda GetImageLabel을 호출하여 이미지 ID 토큰을 매개 변수로 전달합니다. GetImageLabel는 ImageLabels에서 이미지 ID 토큰과 관련된 레이블을 찾아 사용자에게 반환합니다. AWS SageMaker 모델이 이미지 처리를 마치지 않은 경우 사용자는 NOT_CLASSIFIED 레이블을 받게 됩니다.

ImageLabeller는 us-west-1에 테스트 환경, us-east-2에 스테이징 환경, us-west-2, us-east-1, ca-central-1에 세 개의 프로덕션 환경이 있습니다.

컴포넌트

ImageLabeller에 속한 AWS S3 버킷과 AWS DynamoDB 테이블은 AWS CloudFormation 템플릿을 사용하여 배포됩니다. 이 가이드는 AWS S3 버킷을 배포하는 방법에 대한 CI/CD 구성 정보를 제공합니다. AWS DynamoDB 테이블을 배포하는 프로세스는 거의 동일하며 스스로 완료해볼 수 있도록 남겨 두었습니다.

ImageLabeller에는 SubmitImage, InvokeLabeller, GetImageLabel이라는 세 개의 AWS Lambda가 있습니다. 이 가이드는 SubmitImage를 배포하는 방법에 대한 CI/CD 구성 정보를 제공합니다. GetImageLabel을 배포하는 프로세스는 거의 동일하며 이 역시 스스로 완료해볼 수 있도록 남겨 두었습니다.

InvokeLabeller는 python 기반 AWS Lambda이며 게시하려면 약간의 업데이트가 필요합니다. 특히 InvokeLabeller는 AWS 콘솔을 통해 이루어지는 AWS SageMaker 구성에 종속됩니다.

시스템 테스트는 ImageLabeller 프로젝트 테스트 ImageLabeller에 전체적으로 포함되어 있습니다. ImageLabeller의 컴포넌트가 존재하지 않거나 예상대로 작동하지 않으면 테스트가 실패합니다. SubmitImage, GetImageLabel, InvokeLabeller 배포는 모두 해당 CI/CD 파이프라인의 일부로 시스템 테스트를 실행합니다.

SubmitImage, GetImageLabel, InvokeLabeller를 처음 배포할 때는 시스템 테스트 실행 단계를 주석 처리해야 합니다. 배포가 한 번 실행되면 시스템 테스트 실행 단계의 주석 처리를 제거하고 다시 배포하면 됩니다.

컴포넌트 배포 순서

AWS 콘솔을 통해 AWS SageMaker 사전 트레이닝된 모델을 수동으로 배포

AWS 인프라 리포지토리 배포

  1. s3_infra
  2. dynamodb_infra

AWS Lambda 배포

  1. SubmitImage
  2. GetImageLabel
  3. InvokeLabeller

시스템 테스트 배포

CloudWatchAlarms 배포

AWS SageMaker 사전 트레이닝된 모델 설정

AWS SageMaker 사전 트레이닝된 모델을 설정하는 방법을 자세히 설명합니다.

CI/CD와 Jira 통합

계획, 리포지토리, CI/CD, 모니터링 도구를 Atlassian Open DevOps와 연결합니다.

Warren Marusiak
Warren Marusiak

Warren is a Canadian developer from Vancouver, BC with over 10 years of experience. He came to Atlassian from AWS in January of 2021.


이 문서 공유

여러분께 도움을 드릴 자료를 추천합니다.

이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.

DevOps 일러스트레이션

DevOps 커뮤니티

DevOps 일러스트레이션

DevOps 학습 경로

맵 일러스트레이션

무료로 사용해보기

DevOps 뉴스레터 신청

Thank you for signing up