아티클
튜토리얼
대화형 가이드
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 Lambda InvokeLabeller에 AWS DynamoDB 이벤트 트리거가 있습니다. InvokeLabeller는 open-devops-images-
사용자가 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 인프라 리포지토리 배포
- s3_infra
- dynamodb_infra
AWS Lambda 배포
- SubmitImage
- GetImageLabel
- InvokeLabeller
시스템 테스트 배포
CloudWatchAlarms 배포
이 문서 공유
다음 토픽
여러분께 도움을 드릴 자료를 추천합니다.
이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.