AWS App Runner에서의 .NET 워크로드

모듈 2

모듈 2: AWS App Runner 기초

 학습 모듈

학습 목표

이 모듈에서는 다음을 수행합니다.

  • AWS App Runner의 기초인 이점과 사용 사례, 기능 및 요금 모델에 대해 알아봅니다.
  • 문서 및 기타 리소스를 어디서 찾을 수 있는지 이해합니다.
  • AWS Management Console에서 AWS App Runner를 숙지하고 서비스를 생성, 관리 및 삭제하는 방법에 대해 알아봅니다.

AWS App Runner는 개발자가 사전 인프라 경험 없이도 컨테이너화된 웹 애플리케이션 및 API를 대규모로 빠르고 쉽게 배포할 수 있는 완전관리형 서비스입니다. 소스 코드 또는 컨테이너 이미지로 시작해보세요. App Runner는 웹 애플리케이션을 자동으로 구축 및 배포하고, 암호화로 트래픽의 로드 밸런싱을 수행하고, 트래픽 요구 사항을 충족하도록 크기를 조정하며, 서비스가 프라이빗 Amazon VPC에서 실행되는 애플리케이션 및 다른 AWS 서비스와 쉽게 통신할 수 있도록 합니다. App Runner를 사용하면 서버나 확장에 대해 고민하는 대신, 애플리케이션에 더 많은 시간을 투자할 수 있습니다. 

 소요 시간

60분 

AWS App Runner 소개

AWS App Runner(이하 'App Runner')는 개발자가 사전 인프라 경험 없이도 컨테이너화된 웹 애플리케이션 및 API를 대규모로 빠르고 쉽게 배포할 수 있는 완전관리형 서비스입니다. 웹 애플리케이션 또는 웹 서비스(예: 웹 사이트, API 또는 마이크로서비스)가 있다면 App Runner를 사용할 수 있습니다.

App Runner는 컨테이너화된 웹 앱을 위한 리무진 서비스입니다. AWS에서 App Runner를 '완전관리형'이라고 설명하는 것은 농담이 아닙니다. 모든 세부 정보를 처리하려는 경우 App Runner 서비스를 사용하는 것이 좋습니다. AWS Lambda와 마찬가지로 코드를 제공하는 책임은 전적으로 사용자 본인에게 있습니다. AWS Lambda와 마찬가지로 서비스가 실행되는 기본 EC2 인스턴스와 인프라에 대한 가시성은 없거나 있을 필요가 없습니다.

컨테이너에 익숙하지 않더라도 걱정할 필요가 없습니다. 배포 프로세스에서 코드용 컨테이너를 자동으로 만들 수 있기 때문입니다. 이미 컨테이너를 사용하고 있다면 기존 컨테이너를 가져올 수 있습니다. App Runner는 TLS, 로드 밸런서, 상태 확인, 자동 크기 조정 등 다른 모든 작업을 대신 수행합니다. App Runner는 자세히 들여다보면 Amazon ECS에서 AWS Fargate를 사용하여 컨테이너를 실행하지만 이러한 서비스와 직접 상호 작용하지는 않습니다.

이점

App Runner는 사용이 간편하고, 자동으로 확장되고, 시간을 절약하며, 규정을 준수하는 환경을 제공합니다.

사용 편의성

AWS App Runner를 사용하면 클릭 몇 번으로 안전한 웹 스케일 애플리케이션을 구축하고 실행할 수 있습니다. 컨테이너, 인프라, 서버 구성, 네트워킹, 로드 밸런싱 또는 배포 파이프라인에 대한 경험이 없어도 됩니다.

트래픽 기반 확장

App Runner는 웹 트래픽에 대한 응답으로 리소스를 원활하게 스케일 업하고 다운합니다. 최소 개수의 컨테이너 인스턴스를 구성하여 콜드 스타트를 없애고 지연 시간을 줄일 수 있습니다.

시간 절약

App Runner를 사용하면 리소스와 인프라를 할당, 구성 또는 관리하는 데 시간을 할애할 필요가 없습니다. 리소스 및 인프라 구성 요소가 AWS에서 완벽하게 관리되며, 보안 및 운영 모범 사례의 장점이 지원됩니다. 애플리케이션에만 온전히 집중할 수 있습니다.

규정 준수 환경 확보

App Runner 애플리케이션은 Amazon VPC를 통해 데이터베이스, 캐시, 메시지 대기열 서비스와 같은 AWS 서비스에 연결할 수 있습니다. 퍼블릭 서브넷이 필요하지 않아 리소스를 보호하는 데 도움이 됩니다.

사용 사례

AWS App Runner의 사용 사례로는 프런트엔드 및 백엔드 웹 애플리케이션, 마이크로서비스, 웹 API, 빠른 배포가 있습니다.

프런트엔드 및 백엔드 웹 애플리케이션

App Runner에서 웹 사이트, 웹 서비스 및 API를 호스팅할 수 있습니다.

마이크로서비스 및 API

App Runner에서는 수천 개의 마이크로서비스를 동시에 실행할 수 있습니다. 이를 통해 느슨한 결합이 가능하며 각 마이크로서비스는 독립적으로 확장할 수 있습니다. 

빠른 배포

App Runner는 컨테이너를 대규모로 배포 및 실행하기 위한 AWS 모범 사례와 기술을 활용합니다. 따라서 새로운 애플리케이션과 기능의 출시 기간이 단축됩니다.

기능

AWS App Runner 서비스의 기능을 살펴보겠습니다.

VPC 커넥터

App Runner 서비스는 VPC 커넥터를 통해 Amazon Virtual Private Cloud(VPC)에서 실행되는 다른 AWS 서비스와 통신할 수 있습니다. 이를 통해 Amazon VPC에서 제어하는 다른 서비스에 대한 지원을 추가할 수 있습니다.

Auto Scaling

App Runner는 구성한 제약 조건에 따라 트래픽에 맞게 컨테이너 인스턴스를 자동으로 스케일 업 또는 다운합니다.

자동 배포

App Runner는 애플리케이션을 변경될 때 자동으로 빌드하고 배포할 수 있습니다. App Runner를 코드 리포지토리 또는 ECR과 같은 컨테이너 이미지 레지스트리에 연결할 수 있습니다. 

인증서 관리

App Runner에는 전송 계층 보안(TLS)이 자동으로 포함됩니다. 설정이 필요 없으며 인증서는 자동으로 갱신됩니다.

비용 관리

AWS Management Console, AWS CLI 또는 AWS SDK를 통해 애플리케이션을 쉽게 일시 중지하거나 재개하여 비용을 관리할 수 있습니다.

로드 밸런싱

App Runner는 트래픽을 자동으로 로드 밸런싱하여 신뢰성과 고가용성을 제공합니다.

로그 및 지표

App Runner는 자세한 구축, 배포 및 런타임 로그를 제공하여 컨테이너화된 애플리케이션을 모니터링하고 최적화할 수 있도록 지원합니다. Amazon CloudWatch에 내장된 통합을 통해 전체 컴퓨팅 지표 세트도 제공됩니다.

제한 사항

App Runner는 일부 리전에서만 사용할 수 있으며, 해당 리전은 AWS App Runner 엔드포인트 및 할당량 페이지에서 확인할 수 있습니다. 데이터베이스 또는 스토리지 서비스와 같은 다른 AWS 서비스와 함께 App Runner를 사용하려는 경우 효율성을 위해 모든 대상 서비스를 같은 위치에 배치할 수 있는 리전을 사용하는 것이 좋습니다. 또한 리전 선택에 대한 AWS 권장 사항(예: 현지 규정 준수, 사용자 기반 위치와의 근접성 등)을 고려해야 합니다.

모든 리전에서 사용할 수 없음

일부 AWS 리전에서는 AWS App Runner를 사용할 수 없습니다. AWS App Runner 엔드포인트 및 할당량 페이지에서 현재 지원되는 리전을 찾을 수 있습니다.

서비스당 컨테이너 1개

App Runner에서 서비스는 컨테이너 하나에만 연결됩니다. 트래픽에 따라 해당 컨테이너의 여러 인스턴스를 실행할 수 있지만 ECS 또는 EKS처럼 여러 컨테이너에서 서비스를 구성할 수 있는 방법은 없습니다.

리전 할당량

기본적으로 리전당 최대 10개의 Auto Scaling 구성, 10개의 타사 리소스 연결, 10개의 관찰성 구성, 10개의 서비스, 10개의 VPC 커넥터를 생성할 수 있습니다. 이러한 할당량은 모두 조정 가능합니다. AWS 서비스 견적 및 AWS Support 센터를 사용하여 서비스 할당량 증가를 요청할 수 있습니다.

요금 모델

App Runner는 컴퓨팅과 메모리 리소스에 대한 요금을 청구합니다. 또한 자동화된 배포와 소스 코드 기반의 구축 기능을 사용하기로 선택하면 이에 대한 요금이 청구될 수 있습니다. 참고: 여기에 설명된 요율과 요금 예시는 2022년 5월 기준 미국 요금을 기준으로 합니다. 요금 페이지를 확인하여 요율과 기타 요금 모델 세부 정보를 확인하세요. 요금은 리전에 따라 다를 수 있습니다.

App Runner에서 애플리케이션을 생성하는 경우 필요한 메모리와 가상 CPU의 크기를 구성합니다. 가상 CPU(vCPU) 는 CPU 코어 하나의 스레드에 해당하는 CPU 단위입니다. 또한 동시성을 지정하여 활성 컨테이너 인스턴스가 지원해야 하는 최대 동시 요청 수를 결정합니다. 애플리케이션이 유휴 상태가 되면 프로비저닝된 컨테이너 인스턴스 메모리에 대해서만 요금을 지불합니다. 그러면 애플리케이션을 웜 상태로 유지하고 다음 요청에 신속하게 응답할 수 있습니다. 요청이 수신되면 애플리케이션이 요청을 처리할 때 활성 컨테이너 인스턴스에서 사용한 vCPU와 메모리에 대해 요금을 지불합니다. 애플리케이션이 실행 중일 때만 요금이 청구되며, AWS Console을 통해 애플리케이션을 일시 중지하고 재개할 수 있습니다. 

프로비저닝된 컨테이너 인스턴스

애플리케이션을 배포하면 각 컨테이너 인스턴스에 프로비저닝된 메모리에 대한 요금이 청구됩니다. App Runner는 트래픽이 없는 곳에서도 메모리를 프로비저닝하여 다음 요청에 짧은 지연 시간으로 응답할 수 있습니다.

이 글을 쓰는 시점에서 미국과 유럽 리전에서 프로비저닝된 컨테이너 인스턴스의 요금은 시간별 GB당 0.007 USD입니다.

요금 예시: 2GB 메모리가 필요하지만 아직 트래픽이 없는 프로비저닝된 컨테이너 인스턴스를 배포했다고 가정합니다. 2GB로 프로비저닝된 컨테이너 인스턴스 하나의 요금은 하루 1 x 2GB x 0.007 USD = 0.34 USD입니다.

활성 컨테이너 인스턴스

애플리케이션이 요청을 처리하면 요금이 프로비저닝된 컨테이너 인스턴스에서 활성 컨테이너 인스턴스로 전환됩니다. 활성 컨테이너 인스턴스는 프로비저닝된 컨테이너 인스턴스의 적용 범위를 벗어난 컴퓨팅 리소스와 모든 메모리에 대해 요금을 청구합니다.

활성 컨테이너 인스턴스에는 시간당 vCPU별로 0.064 USD의 요금이 부과됩니다. 컨테이너 인스턴스 요금은 초 단위로 청구되며, 프로비저닝된 컨테이너 인스턴스에서 요청을 처리하기 시작하면 vCPU 리소스의 경우 최소 청구 시간은 1분입니다.

자동 배포

자동 배포를 선택하는 경우, 배포 브랜치의 소스 코드가 변경되면 컨테이너 이미지를 빌드하고 배포를 트리거합니다. 자동 배포 요금은 월별 애플리케이션당 1 USD입니다.

구축 요금

App Runner가 소스 코드에서 애플리케이션을 구축할 때 구축 요금을 지불합니다. 요금은 구축 시 분당 0.005 USD입니다.

요금 예시 1: 앱 테스트

매일 2시간 동안 애플리케이션을 테스트하는 중입니다. 활성 상태인 동안 앱에는 2시간 동안 초당 2건의 요청이 수신됩니다. 앱에는 컨테이너 인스턴스당 2GB의 메모리가 필요합니다. 매일 22시간 동안 서비스를 일시 중지합니다.

일별 프로비저닝된 컨테이너 인스턴스 요금은 2시간 x 1개의 프로비저닝된 컨테이너 인스턴스 x (2GB x 시간별 GB당 0.007 USD) 또는 0.03 USD입니다. 하루 중 나머지 22시간 동안은 앱을 일시 중지하므로 하루 2시간만 요금이 청구됩니다.

일일 활성 컨테이너 인스턴스 요금은 2시간 x 1개의 활성 컨테이너 인스턴스 x [(1개의 vCPU x 시간별 vCPU당 0.064 USD)] – 2시간 x 1개의 프로비저닝된 컨테이너 인스턴스 x (2GB x 0.007 USD) = 0.13 USD입니다. 총 요금은 일별 0.16 USD 또는 월별 4.80 USD입니다.

요금 예시 2: 경량 API

지연 시간에 민감한 가벼운 웹 API를 2GB 메모리의 프로비저닝된 컨테이너 인스턴스 1개에 배포했습니다. 매일 8시간 동안 80건의 산발적인 요청이 수신됩니다.

App Runner는 프로비저닝된 컨테이너 인스턴스(메모리)를 하루 24시간 유지 관리하며 시간별 GB당 2GB x 0.007 USD, 즉 일별 0.34 USD의 요금이 청구됩니다.

App Runners는 요청이 수신되면 하루 8시간 동안 1개의 활성 컨테이너 인스턴스로 확장됩니다. 활성 컨테이너 인스턴스에는 컴퓨팅과 메모리 요금에서 프로비저닝된 컨테이너 인스턴스 메모리 요금을 뺀 금액이 청구됩니다. 공식은 아래와 같으며 일별 0.51 USD입니다.

8시간 × 1개의 활성 컨테이너 인스턴스 × [(1개의 vCPU × 시간별 vCPU당 0.064 USD) + (2GB × 시간별 GB당 0.007 USD)] - 8시간 x 1개의 프로비저닝된 컨테이너 인스턴스 x (2GB × 시간별 GB당 0.007 USD) = 0.51 USD

총 일별 요금은 0.51 USD(활성 컨테이너 인스턴스) + 0.34 USD(프로비저닝된 컨테이너 인스턴스) = 0.85 USD, 즉 월별 25.50 USD입니다.

요금 예시 3: 대량 생산

프로덕션 중인 웹 애플리케이션이 있습니다. 각 컨테이너 인스턴스는 2GB의 메모리가 필요하며 초당 80건의 요청을 처리할 수 있습니다. 낮에는 현장이 바빠서 3시간 동안 초당 요청 수가 최고 800건에 달합니다. 피크가 아닌 시간(12시간) 동안은 초당 요청 수가 60건입니다. App Runner는 사용량이 피크 시간대에는 앱을 10개의 활성 컨테이너 인스턴스로 확장하고, 피크가 아닌 시간대에는 1개의 활성 컨테이너 인스턴스로 축소합니다. 프로비저닝된 컨테이너 인스턴스 메모리는 매일 24시간 요금이 청구됩니다.

프로비저닝된 컨테이너 인스턴스(메모리)에 대해서는 하루 24시간 동안 2GB x 시간별 GB당 0.007 USD 또는 일별 0.34 USD의 요금이 부과됩니다.

피크 시간대에는 3시간 동안 초당 800개의 요청을 처리하려면 10개의 활성 컨테이너 인스턴스가 필요합니다. 그러면 10개의 활성 컨테이너 인스턴스 × 3시간 x [(1개의 vCPU × 시간별 vCPU당 0.064 USD) + (2GB × 시간별 GB당 0.007 USD)] - 1개의 프로비저닝된 컨테이너 인스턴스 x 3시간 x (2GB × 시간별 GB당 0.007 USD) = 2.30 USD이 됩니다.

피크가 아닌 시간대(12시간)에는 1개의 활성 컨테이너 인스턴스가 초당 60건의 요청을 처리합니다. 그러면 12시간 × 1개의 활성 컨테이너 인스턴스 × [(1개의 vCPU × 시간별 vCPU당 0.064 USD) + (2GB × 시간별 GB당 0.007 USD)] - 12시간 x 1개의 프로비저닝된 컨테이너 인스턴스 x (2GB × 시간별 GB당 0.007 USD) = 0.77 USD이 됩니다.

이를 모두 합하면 2.30 USD(피크 시간대의 활성 컨테이너 인스턴스) +0.77 USD(피크가 아닌 시간대의 활성 컨테이너 인스턴스) + 0.45 USD(일별 프로비저닝된 컨테이너 인스턴스) = 일별 3.40 USD, 즉 월별 102 USD가 됩니다.

참조: AWS App Runner | 요금, EC2 가상 CPU

개발자 워크플로

이 섹션에서는 App Runner를 사용하여 개발하는 방법을 알아봅니다. 아래 표시된 흐름에 따라 애플리케이션을 위한 App Runner 서비스를 생성합니다.

1. 소스 추가

이 단계에서는 컨테이너 이미지 또는 소스 코드에 연결하고 배포 설정을 선택합니다. App Runner 서비스를 생성하면 이를 소스에 연결합니다. 소스는 컨테이너 이미지 또는 소스 코드 리포지토리일 수 있습니다(아래 그림 참조). GitHub 리포지토리와 같은 소스 코드 리포지토리의 경우 연결 세부 정보를 제공해야 합니다.

애플리케이션이 컨테이너화되지 않은 경우에도 App Runner는 컨테이너 이미지 자동 빌드를 지원합니다. 기존 소스 코드 리포지토리를 연결하고 선택적으로 런타임 구축 및 시작 명령을 App Runner에 제공하는 경우 App Runner는 웹 애플리케이션을 자동으로 컨테이너화하고 실행되는 웹 애플리케이션을 제공합니다. 자동 컨테이너화는 지원되는 런타임과 프레임워크를 포함하는 큐레이션된 App Runner 플랫폼에서 사용할 수 있습니다.

참조: AWS App Runner | FAQ

배포 설정에서 애플리케이션의 업데이트 배포를 수동 또는 자동으로 트리거하도록 선택할 수 있습니다. 자동 배포를 활성화하면 소스 코드 또는 컨테이너 이미지를 업데이트할 때마다 App Runner가 애플리케이션을 자동으로 빌드하고 배포합니다.

2. 빌드 및 서비스 설정 구성

이 단계에서는 컨테이너의 vCPU 및 메모리를 구성하고 Auto Scaling 및 상태 확인 옵션을 선택합니다. 컨테이너 레지스트리가 아닌 소스 코드 리포지토리에서 배포하기로 선택한 경우 빌드 설정도 구성합니다. App Runner는 이러한 설정을 기본으로 제공하지만, 설정을 이해하고 구성을 사용자 지정하는 데 필요한 옵션을 알고 있어야 합니다.

콘솔에서 설정을 구성하거나 소스 코드 리포지토리에 YAML 구성 파일을 제공할 수 있습니다.

서비스 설정에서 서비스 이름을 지정하고 컨테이너의 CPU와 메모리 크기를 설정합니다. 이러한 설정은 요금에 영향을 줍니다. 여기에서 애플리케이션에 필요한 모든 환경 변수를 설정할 수도 있습니다.

Auto Scaling 동작을 구성할 수 있습니다. 기본적으로 컨테이너의 인스턴스는 하나뿐입니다. App Runner는 80건 이상의 동시 요청을 받는 경우 서비스를 확장하여 인스턴스를 늘릴 수 있습니다. 최대 인스턴스 수를 구성하여 비용을 관리할 수 있습니다.

상태 확인 설정을 사용하면 App Runner에서 상태 확인 요청을 보낼 수 있는 웹 경로를 파악할 수 있습니다. 기본적으로 상태 확인 실패가 5회 연속으로 발생하면 인스턴스가 비정상으로 간주되어 App Runner가 해당 인스턴스를 교체합니다. App Runner에서 서비스를 비정상이라고 판단하기 위한 상태 확인 실패 횟수를 1회에서 20회까지 구성할 수 있습니다.

보안 설정을 사용하면 인스턴스에서 사용할 IAM 역할을 선택할 수 있습니다. 애플리케이션이 다른 AWS 서비스와 통신해야 하는 경우 IAM 역할에서 이를 승인합니다. 또한 이러한 설정을 통해 소스 코드 암호화를 위한 고객 관리형 키(CMK)를 선택적으로 제공할 수 있습니다. 

3.검토 및 생성

이 단계에서는 모든 설정을 검토하고 확인합니다. 생성 및 배포를 클릭하면 App Runner가 서비스를 생성하고 애플리케이션을 배포합니다.

4. 보안 URL 받기

마지막으로, AWS App Runner로부터 실행 중인 프로덕션용 서비스의 보안 URL을 받습니다. 사용자를 위해 HTTPS가 자동으로 구성됩니다.

마지막으로, 사용자 지정 도메인이 있는 경우 애플리케이션을 사용자 지정 도메인과 연결할 수 있습니다. 도메인을 소유하고 있음을 증명하는 과정을 안내해 드립니다.

App Runner 서비스 관리

여러 가지 방법으로 App Runner 서비스를 생성, 배포 및 관리할 수 있습니다.

AWS Management Console

AWS Management Console에서 App Runner 서비스를 생성, 배포, 구성, 모니터링 및 종료할 수 있습니다. AWS App Runner 콘솔로 이동하여 이러한 작업을 수행합니다.

서비스를 생성하고 배포한 후에는 다음 영역에서 서비스를 선택하고 서비스 세부 정보를 볼 수 있습니다.

서비스 개요

서비스 개요 섹션에서 앱 상태(예: 실행 중), 기본 도메인 URL, 서비스의 Amazon 리소스 이름(ARN) 및 '소스' URL을 확인할 수 있습니다. 마지막으로 Amazon Elastic Container Registry(ECR)의 컨테이너 또는 소스 코드 리포지토리로 이동합니다.

로그

이 탭에는 배포 로그와 애플리케이션 실행 로그가 표시됩니다. App Runner는 애플리케이션 출력을 수집하여 CloudWatch Logs로 스트리밍합니다. 웹 서비스에 대한 요청 세부 정보와 같이 유용하다고 생각되는 모든 출력을 포함할 수 있습니다.

활동

활동 탭에는 서비스 기록이 표시됩니다. App Runner는 작업 목록을 사용하여 App Runner 서비스의 활동을 추적합니다. 작업은 서비스 생성, 구성 업데이트, 서비스 배포와 같은 API 작업에 대한 비동기 호출을 나타냅니다.

지표

지표 탭에는 요청, 응답, 지연 시간, 활성 인스턴스 수를 비롯한 서비스 지표가 표시됩니다.

구성

구성 탭에는 가상 CPU 및 메모리 수, 자동 크기 조정, 상태 확인, 보안을 비롯한 서비스 구성 세부 정보가 표시됩니다. 구성을 수정하려면 편집을 클릭합니다. 필요한 경우 인스턴스당 가상 CPU 및 메모리 수를 제어하거나, 환경 변수를 설정하거나, Auto Scaling을 사용자 지정하거나, 상태 확인을 구성하거나, 사용자 지정 IAM 역할을 사용하거나, 사용자 지정 암호화 키를 사용할 수 있습니다.

모니터링 및 로깅

신뢰성, 가용성 및 성능을 유지하려면 App Runner 애플리케이션을 모니터링하는 것이 필수적입니다. AWS 솔루션의 모든 부분에서 모니터링 데이터를 수집하면 오류를 쉽게 디버깅할 수 있습니다. App Runner는 코드에서 애플리케이션 로그를 수집합니다. 또한 서비스 인시던트를 모니터링하고 이에 대응하기 위해 여러 AWS 서비스와 통합됩니다.

Amazon CloudWatch 경보

Amazon CloudWatch 경보를 사용하여 서비스 지표를 모니터링하고 지정한 조건이 충족되면 알림을 보낼 수 있습니다. 일정 기간 동안 서비스 지표를 관찰하고 해당 지표가 지정된 기간 동안 임계값을 초과할 경우 알림을 받을 임계값을 설정할 수 있습니다. 예를 들어 CPU 사용률이 60%를 초과하면 알림을 받을 수 있습니다.

참조: CloudWatch에 보고된 App Runner 서비스 지표 보기

애플리케이션 로그

App Runner는 애플리케이션 코드의 출력을 수집하여 Amazon CloudWatch Logs로 스트리밍합니다. 애플리케이션에 로그인할 내용(예: 웹 서비스에 대한 요청 세부 정보)을 결정합니다. App Runner 콘솔에서 이러한 로그를 볼 수 있습니다. Visual Studio를 사용하는 경우, AWS Toolkit for Visual Studio가 설치되어 있으면 IDE에서 CloudWatch 로그를 볼 수 있습니다. 

AWS CloudTrail 작업 로그

AWS CloudTrail은 AWS 서비스에 대한 API 호출 기록을 보관하고 이를 이벤트로 추적합니다. AWS Console에서 이벤트를 볼 수 있으며, 선택적으로 이벤트를 구성하여 Amazon S3 버킷에 지속적으로 기록할 수 있습니다.

참조: CloudWatch 로그, Cloud Watch 지표, CloudTrail API 작업

AWS Deployment Tool for .NET

 AWS Deploy Tool for .NET는 .NET CLI용 대화형 도구이자 AWS Toolkit for Visual Studio로, 최소한의 AWS 지식으로도 최소한의 클릭이나 명령으로 .NET 애플리케이션을 배포할 수 있도록 도와줍니다. 이 도구는 배포 과정을 안내합니다. dotnet aws deploy라는 단일 명령으로 이 도구를 사용하면 AWS App Runner에 .NET 웹 애플리케이션을 생성하고 게시할 수 있습니다.

Visual Studio를 IDE로 사용하고 있고 AWS Toolkit for Visual Studio를 설치한 경우 Visual Studio에서도 이와 동일한 가이드 배포 기능을 사용할 수 있습니다. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 AWS에 게시를 선택합니다. 마법사 페이지에서 배포 과정을 안내합니다.

AWS Copilot

AWS Copilot은 관리형 빌드 파이프라인을 사용하여 AWS App Runner, Amazon ECS 및 AWS Fargate에 배포할 수 있는 오픈 소스 명령줄 인터페이스(CLI)입니다. Copilot은 백그라운드에서 Amazon CloudFormation을 사용합니다. Copilot은 .NET은 물론 Python 및 Node.js 애플리케이션과 함께 사용할 수 있습니다. 

.NET 개발자라면 명령줄에서 AWS App Runner에 배포하기 위해 AWS Deployment for .NET CLI를 사용하고 싶을 가능성이 높지만, .NET 이외의 애플리케이션도 배포할 경우에는 AWS Copilot을 선택할 수 있습니다.

Copilot을 사용하여 App Runner를 배포할 때의 모습은 다음과 같습니다.

AWS CLI

AWS Command Line Interface에는 AWS App Runner 서비스를 보고 관리하기 위한 명령이 포함되어 있습니다. VPC 커넥터 및 사용자 지정 도메인과 같은 서비스와 관련 아티팩트를 생성하고, 나열하고, 설명할 수 있습니다. 구성 설정을 보고 지정할 수 있습니다. 배포를 시작할 수 있습니다. 애플리케이션을 일시 중지하거나 재개할 수 있습니다. 서비스를 삭제할 수 있습니다.

다른 AWS 서비스에 연결

기본적으로 App Runner 서비스는 퍼블릭 웹사이트 및 웹 서비스와 같은 퍼블릭 엔드포인트에만 메시지를 보낼 수 있습니다. 애플리케이션을 인터넷을 거치지 않고 Amazon RDS 데이터베이스, Amazon DynamoDB 데이터베이스 또는 Amazon ElastiCache와 같은 다른 AWS 서비스와 통합해야 하는 경우 VPC 커넥터를 사용할 수 있습니다. App Runner를 사용하기 위해 일반적으로 AWS 인프라를 이해할 필요는 없지만, VPC 커넥터를 사용하려면 Amazon Virtual Private Cloud(VPC), 서브넷 및 보안에 대한 수준 높은 이해가 필요합니다. Amazon VPC란 무엇인가요?Amazon VPC의 작동 방식을 읽으면 용어에 대한 기본적인 이해를 얻을 수 있습니다.

VPC 커넥터

VPC 커넥터는 App Runner 서비스를 VPC와 연결합니다. VPC 커넥터는 연결의 절반에 불과합니다. 다른 AWS 서비스에 연결하려면 해당 서비스가 VPC에도 연결되어 있어야 합니다. 이를 해결하는 한 가지 방법은 인터넷 액세스가 필요하지 않은 프라이빗 연결인 VPC 엔드포인트를 사용하는 것입니다. 예를 들어 아래 다이어그램은 App Runner 서비스와 DynamoDB 데이터베이스 간의 연결을 보여줍니다. App Runner용 VPC 커넥터와 DynamoDB용 VPC 엔드포인트는 통신을 가능하게 하는 두 개의 VPC 연결입니다. 

App Runner 서비스를 생성할 때 VPC 커넥터를 구성할 수 있습니다. VPC 커넥터를 구성하려면 다음을 지정해야 합니다.

  1. 연결하려는 VPC(예: 기본 VPC)
  2. 선택할 서브넷 고가용성을 위해서는 3개 이상의 가용 영역에서 서브넷을 선택해야 합니다.
  3. 기본 보안 그룹.

VPC 커넥터 또는 VPC 엔드포인트를 구성할 때는 조직의 보안 전문가에게 문의해야 합니다.

VPC 엔드포인트

VPC 엔드포인트를 사용하면 인터넷 게이트웨이, NAT 디바이스 또는 VPN 연결 없이 VPC를 지원되는 AWS 서비스에 비공개로 연결할 수 있습니다. VPC의 인스턴스는 서비스의 리소스와 통신하는 데 퍼블릭 IP 주소가 필요하지 않습니다. VPC와 다른 서비스 간의 트래픽은 Amazon 네트워크를 떠나지 않습니다.

VPC 엔드포인트에 대한 자세한 내용은 AWS Well-Architected Framework 가이드 및 AWS PrivateLink 개념에서 자세히 알아볼 수 있습니다.

AWS Console에서 VPC > 엔드포인트로 이동하고 엔드포인트 생성을 클릭하여 VPC 엔드포인트를 생성할 수 있습니다. AWS 서비스용 엔드포인트를 생성하려면 AWS 서비스 범주를 선택하고 연결하려는 서비스를 검색하여 선택합니다.

설명서 및 리소스

참고 및 학습용으로 사용할 수 있는 다음 리소스를 즐겨찾기에 추가하세요.

AWS App Runner 제품 세부 정보 페이지에는 서비스 개요, 기능, 요금, 리소스 및 FAQ가 나와 있습니다.

AWS App Runner 설명서 페이지에는 App Runner 개발자 가이드, AWS CLI 참조, 자습서, 동영상 및 블로그를 비롯한 개발자 리소스에 대한 링크가 있습니다.

AWS App Runner 개발자 안내서에서는 아키텍처, 배포 및 관찰성에 대해 설명합니다.

AWS CLI App Runner 명령 참조. AWS CLI에서 서비스를 생성하고, 수동 배포를 수행하고, 서비스 상태를 나열할 수 있습니다.

Build and Deploy a Microsoft .NET Core Web API application to AWS App Runner using CloudFormation 워크숍에서는 App Runner와 함께 Amazon Aurora 데이터베이스를 사용하여 Microsoft .NET 웹 API 애플리케이션을 구축하는 방법을 보여줍니다.

AWS App Runner: Deep Dive 웨비나 동영상은 테크 톡이자 데모입니다.

AWS App Runner: 몇 분 안에 코드에서 확장 가능한 보안 웹 애플리케이션으로는 Martin Beeby가 작성한 안내 블로그입니다.

주요 요점

이제 AWS App Runner의 이점, 사용 사례, 기능 및 요금 모델을 명확히 설명할 수 있을 것입니다.

지금까지 개발자 워크플로의 4단계를 알아보았습니다.

AWS Console에서 App Runner 인스턴스를 관리하는 방법, 모니터링 및 로깅 옵션, 다양한 명령줄 도구를 배웠습니다.

VPC 커넥터와 VPC 엔드포인트가 연동하여 AWS App Runner를 다른 AWS 서비스와 연결하는 방법을 배웠습니다.

.NET 워크로드의 경우 App Runner를 사용하는 가장 쉬운 방법은 컨테이너 이미지를 소스로 사용하는 것입니다. 코드 리포지토리 소스를 사용하는 경우 인스턴스에 .NET을 설치하려면 추가 작업이 필요합니다.

결론

이 모듈에서는 AWS App Runner의 기초를 배웠습니다. 서비스 소개에서 App Runner의 이점, 사용 사례, 기능, 제한 사항 및 가격 모델을 검토했습니다. 개발자 워크플로와 구성 가능한 항목에 대해 알아보았습니다. AWS Management Console과 다양한 도구를 통해 App Runner 서비스를 관리하는 방법도 알아보았습니다.

이 페이지의 내용이 도움이 되었나요?