AWS Step Functions란 무엇입니까?
AWS
Step Functions는 작업을 수행하기 위해 여러 AWS 서비스를 보다 쉽게 오케스트레이션할 수 있도록 Amazon Web Services에서 제공하는 서비스입니다. Step Functions를 사용하면 시각적 워크플로우 편집기를 사용하여 한 단계의 출력이 다른 단계의 입력이 되는 프로세스의 단계를 생성할 수 있습니다.
Step Functions는 자동 재시도 처리, 각 워크플로 단계에 대한 트리거 및 추적, 단계가 올바른 순서로 실행되도록 보장하는 편리한 기능을 제공합니다. 이 목록이 처음에는 별거 아닌 것처럼 보일 수 있지만 수십 개의 단계와 수백 개의 병렬 실행이 포함된 워크플로에서 이러한 모든 일이 올바르게 발생하는지 확인하는 것은 결코 쉬운 일이 아닙니다. Step Functions는 이전에 애플리케이션에서 수행해야 했던 많은 작업을 수행합니다.
AWS Step Functions는 어떻게 작동합니까?
내부적 으로 상태 머신 이며 기본 추상화를 상태라고 합니다. Step Functions 구성은 가능한 모든 단계의 맵과 그 사이의 전환을 구성합니다.
상태와 해당 전환은 Amazon States 언어를 사용하여 정의됩니다. 이 언어는 JSON 기반이며 Amazon 소유입니다.
AWS Step Functions가 서버리스 에코시스템에 필수적인 이유는 무엇입니까?
서버리스 애플리케이션을 구축할 때 서버리스 모델에서 이러한 목표를 달성하기 위한 한 가지 모범 사례는 애플리케이션의 비즈니스 로직을 분리된 서비스 집합으로 분리하는 것입니다. 대규모 서버리스 애플리케이션은 수십 또는 수백 개의 서버리스 서비스로 구성될 수 있습니다.
문제는 이렇게 많은 서비스가 모두 공유 상태의 다양한 부분에 액세스해야 할 때 발생합니다. 이러한 서비스를 효과적으로 운영하려면 팀이 한 곳에서 모든 애플리케이션 서비스를 통해 데이터 흐름을 오케스트레이션할 수 있어야 하며 이것이 바로 AWS Step Functions가 처리하는 것입니다. Step Functions는 서버리스 시스템이 대규모로 효과적으로 작동하도록 유지하는 데 필요한 모든 상태 및 데이터 관리로 인해 서버리스 에코시스템의 중요한 부분이 되었습니다.
AWS Step Functions는 다른 AWS 서비스와 어떻게 통합됩니까?
Step Functions에서 사용되는 Amazon Step Functions에서 직접 사용할 수 있는 서비스는 다음과 같습니다.
작업 실행 - 동기식 또는 비동기식 실행 모델 사용(대기 vs. 콜백):
- Lambda 함수 호출
- AWS Batch 작업 실행
- Amazon Elastic Container Service(ECS)에서 작업 실행
데이터베이스:
- Amazon DynamoDB에서 항목 삽입 또는 가져오기
메시지 및 알림:
- Amazon SNS에 주제 게시
- Amazon SQS에서 메시지 보내기
다른 Step Functions 워크플로 호출
AWS Lambda 함수 내부에 자체 커넥터를 구현하여 AWS 또는 비 AWS 서비스와 Step Function을 통합할 수도 있습니다.
AWS Step Functions는 Serverless Framework에서 어떻게 작동합니까?
두 가지 방법으로 서버리스 프레임워크와 함께 Step Functions를 사용할 수 먼저 Serverless Step Functions 플러그인을 사용하여 serverless.yml 파일에 Step Functions용 Amazon State Language를 포함하고 Serverless Framework를 사용하여 배포할 수 있습니다.
둘째, 서버리스 프레임워크를 사용하여 Step Functions가 오케스트레이션할 AWS Lambda 기반 서비스를 생성할 수 있습니다.
AWS Step Functions 사용의 이점
AWS
Step Functions는 오류 처리 및 재시도 논리를 수행하고 오케스트레이션 논리에서 애플리케이션의 비즈니스 논리를 분리할 수 있도록 허용하면서 AWS에서 복잡한 작업 시퀀스를 신속하게 생성할 수 있도록 함으로써 서버리스 개발자의 삶을 더 쉽게 만듭니다. 아래에서 Step Functions가 어떻게 도움을 줄 수 있는지 자세히 살펴보겠습니다.
복잡한 작업 시퀀스를 빠르게 생성 10개의 개별 서버리스 애플리케이션 시퀀스를 오케스트레이션하고 재시도를 관리하고 모든 오류를 디버깅하는 것은 매우 어려울 수 있습니다. 더 많은 기능을 추가함에 따라 관리의 복잡성이 기하급수적으로 증가합니다.
그래픽 인터페이스와 내장된 운영 컨트롤을 통해 Step Functions는 작업 순서를 관리하고 팀의 큰 운영 부담을 제거합니다.
다양한 상태 비저장 기능 실행 간의 상태 관리 많은 서버리스 워크플로의 경우 모든 서버리스 서비스 간의 통신을 위한 대기열과 데이터베이스를 설정하는 것은 시간이 많이 걸리고 오류가 발생하기 쉬울 수 있습니다. 실제 대기열 시스템.
Step Functions를 사용하면 초기에 상태 관리를 쉽게 설정할 수 있으며, 애플리케이션이 확장되고 더 많은 서비스를 믹스에 추가함에 따라 계속해서 잘 작동합니다.
비즈니스 로직에서 애플리케이션 워크플로 로직 분리 여기에 서버리스 개발의 또 다른 모범 사례가 있습니다. 비즈니스 로직만 처리해야 하는 애플리케이션에 워크플로 로직을 추가하면 애플리케이션의 복잡성이 증가하고 문제가 쉽게 발생할 수 있습니다. 또한 비즈니스 로직과 별도로 상태를 관리하면 개발자가 서버리스 시스템에서 작업할 때 명확성을 유지할 수 있습니다.
병렬 실행으로 보다 효율적인 워크플로 다양한 기능의 상태를 직접 관리할 때 시스템에서 고성능을 얻는 것이 어려울 수 있습니다. 일부 오케스트레이션 조각은 한 번에 하나의 작업만 처리할 수 있으므로 전체 애플리케이션 속도가 느려질 수 있습니다.
Step Functions를 사용하면 워크플로를 동시에 여러 번 병렬로 실행할 수 있으므로 애플리케이션의 로드에 따라 성능이 확장됩니다.
AWS Step Functions 사용의 단점
앞서 언급한 모든 AWS Step Functions는 서버리스 커뮤니티의 많은 문제를 해결하지만 모든 오케스트레이션 계층을 Step Functions로 전환하는 것이 반드시 올바른 조치는 아닙니다. 다음은 프로덕션에서 Step Functions를 사용하기 전에 알아야 할 몇 가지 사항입니다.
Amazon States 언어를 사용한 구성 Amazon States 언어는 상당히 복잡합니다. 구문은 JSON을 기반으로 하므로 사람의 가독성 대신 기계 가독성에 최적화되어 있습니다. 언어를 배우는 것은 어려울 수 있으며 Amazon 소유이기 때문에 습득한 기술은 AWS Step Functions 컨텍스트 외에는 어디에도 적용할 수 없습니다.
작업 순서에서 비즈니스 로직을 분리하면 코드를 이해하기가 더 어려워질 수 있습니다. 오케스트레이션 계층에서 서비스를 분리하면 작업을 더 확장 가능하고 쉽게 운영할 수 있지만 시스템에서 작업하는 개발자는 작업할 수 있는 완전히 별도의 서비스를 배워야 합니다. AWS 스텝 함수. 이것은 팀, 특히 환경에 익숙하지 않은 팀에게 어려운 일이 될 수 있습니다.
공급업체 고정 Amazon States 언어는 독점적이며 AWS에서만 사용할 수 있습니다. 따라서 다른 클라우드 공급자로 마이그레이션하기로 결정한 경우 오케스트레이션 계층을 다시 구현하거나 다른 공급업체의 대안으로 교체해야 합니다.
AWS Step Functions의 장점은 무엇입니까?
다음은
AWS Step Functions가 팀의 생산성을 높이는 데 도움이 되는 몇 가지 사용 사례입니다.
데이터 ETL 예를 들어 프로덕션 시스템과 데이터 웨어하우스 간에 데이터를 이동하는 추출-변환-로드(ETL) 스크립트는 AWS Step Functions로 자동화할 수 있습니다. Step Functions 자체는 대부분의 데이터베이스에 연결할 수 있는 쉬운 방법을 제공하지 않지만 AWS Lambda는 보유한 모든 데이터베이스에 연결할 수 있습니다. 그런 다음 여러 Lambda 함수를 오케스트레이션하여 ETL 파이프라인을 생성할 수 있습니다.
데이터 처리 다른 종류의 데이터 처리도 특히 소스와 대상이 모두 AWS 내부에 있는 경우 AWS Step Functions와 잘 맞습니다. Step Functions를 사용하면 AWS Lambda 함수, Simple Queue Service 및 Simple Notification Service를 사용하여 만든 단계를 포함하여 여러 데이터 처리 단계를 쉽게 상호 연결할 수 있습니다.
서버리스 워크플로 오케스트레이션 AWS Step Functions의 근본적인 가치는 여러 서버리스 기능을 상호 연결해야 하는 애플리케이션의 손쉬운 오케스트레이션에 있습니다. 최종 결과를 생성하기 위해 분리된 여러 서버리스 애플리케이션의 조합이 필요한 비즈니스 프로세스가 있는 경우 Step Functions가 손쉬운 오케스트레이션을 위한 올바른 선택일 수 있습니다.
AWS Step Functions 제한
AWS Step Functions에는 AWS 계정 및 워크플로당 여러 제한이 있습니다. 대부분의 제한은 AWS 지원 센터에서 한도 증가 요청을 제출하여 늘릴 수 있습니다. 그러나 이러한 제한 중 일부는 하드 제한이며 늘릴 수 없습니다.
AWS Step Functions 제한
AWS Step Functions에는 AWS 계정 및 워크플로당 여러 제한이 있습니다. 대부분의 제한은 AWS 지원 센터에서 한도 증가 요청을 제출하여 늘릴 수 있습니다. 그러나 이러한 제한 중 일부는 하드 제한이며 늘릴 수 없습니다.
- 워크플로의 25,000개 항목 실행 기록 . 즉, 워크플로는 단일 실행에서 25,000개 이상의 상태 전환을 가질 수 없습니다. 대부분의 사용 사례에서 이는 문제가 되지 않습니다. 상태 전환 수가 매우 많을 수 있는 매우 오래 실행되는 실행이 있는 경우 전환 제한 25,000개 미만으로 유지하기 위해 워크플로를 여러 워크플로로 분할하는 것을 고려해야 합니다.
- 최대 요청 크기는 1MB입니다. AWS Step Functions에 대한 요청은 1MB보다 큰 페이로드를 가질 수 없습니다. 더 큰 파일을 Step Functions 워크플로에 대한 입력으로 사용하려는 경우 Amazon S3를 사용하여 파일을 저장하고 S3 URI를 추가 작업에 대한 입력으로 사용하는 것이 좋습니다.
- 워크플로로 인한 AWS API 요청 급증 . AWS는 급증하는 AWS API 요청을 제한할 수 있습니다. 지속적인 요청 속도는 문제를 일으키지 않지만 워크플로의 일부가 AWS API를 비효율적으로 사용하는 경우 워크플로의 갑작스러운 요청 폭주로 인해 API 제한이 트리거될 수 있습니다. 가능한 경우 동일한 AWS 서비스에 대한 요청을 단일 API 호출로 그룹화하거나 작업 사이에 제한 시간을 도입하여 이 문제를 해결할 수 있습니다.
- 자원당 50개의 태그 . AWS Step Functions 리소스에 50개가 넘는 태그를 적용할 수 없습니다. 이것이 문제가 된다면 한도를 넘지 않도록 태깅 체계를 변경하는 것을 고려하십시오.
계정당 상태 시스템 수 및 동시 실행 수와 같은 기타 제한은 AWS 지원 센터를 통해 요청하여 늘릴 수 있습니다.
AWS Step Functions 요금
AWS 프리 티어에는 매월 4,000개의 AWS Step Functions 상태 전환이 포함됩니다. 프리 티어의 이 부분은 만료되지 않으므로 AWS 계정이 새 계정이 아니더라도 이를 활용할 수 있습니다.
무료 티어 이후의 Step Functions 가격은 상태 전환 1,000회당 $0.025입니다.
이것이 월별 AWS 청구서에 대해 정확히 무엇을 의미하는지 시각화하기 어려울 수 있으므로 아래에 몇 가지 예시 요금 시나리오를 포함합니다.
샘플 가격 책정 시나리오 사이트의 이미지를 4가지 다른 크기로 변환하는 워크플로가 있고 워크플로가 각 이미지에 대해 평균 10개의 상태 전환으로 구성되어 있으며 약 10%의 워크플로 실행에 1회의 재시도가 포함된다고 가정해 보겠습니다. 또한 한 달에 100,000개의 이미지를 업로드한다고 가정해 보겠습니다.
이 시나리오에서 AWS Step Functions 비용은 다음과 같습니다.
(전환 10회 x 실행 100,000회 + 재시도 1회 x (100,000회 x 10% 실행)) x 상태 전환 1,000회당 $0.025 = $25.25
AWS Step Functions 요금은 모든 데이터 전송 요금 및 워크플로 내에서 사용하는 모든 AWS 서비스 비용에 추가로 부과된다는 점에 유의하십시오. 예를 들어 이러한 100,000개의 워크플로 실행으로 인해 AWS Lambda 요금이 $600/월이고 데이터 전송 요금이 월 $100인 경우 총 비용은 다음과 같습니다.
$600 AWS Lambda 요금 + $100 데이터 전송 요금 + $25.25 Step Functions 요금 = 전체 시스템에 대해 매월 $725.25.
'AWS' 카테고리의 다른 글
AWS - API Gateway (0) | 2023.03.02 |
---|---|
AWS - CloudFormation 이란? (0) | 2023.02.17 |