

AWS App Runner 는 2026년 4월 30일부터 신규 고객에게 더 이상 공개되지 않습니다. App Runner를 사용하려면 해당 날짜 이전에 가입하세요. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 [AWS App Runner 가용성 변경](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html)을 참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# App Runner용 애플리케이션 코드 개발
<a name="develop"></a>

이 장에서는 배포용 애플리케이션 코드를 개발하거나 마이그레이션할 때 고려해야 할 런타임 정보 및 개발 지침에 대해 설명합니다 AWS App Runner.

## 런타임 정보
<a name="develop.considerations"></a>

컨테이너 이미지를 제공하든 App Runner가 컨테이너 이미지를 빌드하든 App Runner는 컨테이너 인스턴스에서 애플리케이션 코드를 실행합니다. 다음은 컨테이너 인스턴스 런타임 환경의 몇 가지 주요 측면입니다.
+ **프레임워크 지원** - App Runner는 웹 애플리케이션을 구현하는 모든 이미지를 지원합니다. 선택한 프로그래밍 언어와 사용하는 웹 애플리케이션 서버 또는 프레임워크에 관계없이 사용할 수 있습니다. 편의를 위해 다양한 프로그래밍 플랫폼을 위한 플랫폼별 관리형 런타임을 제공하여 애플리케이션 빌드 프로세스를 간소화하고 이미지를 추상화합니다.
+ **웹 요청** - App Runner는 컨테이너 인스턴스에 HTTP 1.0 및 HTTP 1.1에 대한 지원을 제공합니다. 서비스 구성에 대한 자세한 내용은 섹션을 참조하세요[App Runner 서비스 구성](manage-configure.md). HTTPS 보안 트래픽 처리를 구현할 필요가 없습니다. App Runner는 모든 수신 HTTP 요청을 해당 HTTPS 엔드포인트로 리디렉션합니다. HTTP 웹 요청 리디렉션을 활성화하도록 설정을 구성할 필요가 없습니다. App Runner는 요청을 애플리케이션 컨테이너 인스턴스에 전달하기 전에 TLS를 종료합니다.
**참고**  
HTTP 요청에는 총 120초의 요청 제한 시간이 있습니다. 120초에는 애플리케이션이 본문을 포함하여 요청을 읽고 HTTP 응답 작성을 완료하는 데 걸리는 시간이 포함됩니다.
요청 읽기 및 응답 제한 시간은 사용하는 애플리케이션에 따라 다릅니다. 이러한 애플리케이션에는 Python용 HTTP 서버, Gunicorn과 같은 자체 내부 제한 시간이 있을 수 있으며 기본 제한 시간은 30초입니다. 이 경우 애플리케이션의 제한 시간이 App Runner 120초 제한 시간을 재정의합니다.
App Runner가 완전 관리형 서비스이므로 TLS 암호 제품군 또는 기타 파라미터를 구성할 필요가 없으며 TLS 종료를 관리합니다.
+ **상태 비저장 앱** - 현재 App Runner는 상태 저장 앱을 지원하지 않습니다. 따라서 App Runner는 단일 수신 웹 요청을 처리하는 기간 이후의 상태 지속성을 보장하지 않습니다.
+ **스토리지** - App Runner는 수신 트래픽 볼륨에 따라 App Runner 애플리케이션의 인스턴스를 자동으로 확장하거나 축소합니다. App Runner 애플리케이션에 대한 [Auto Scaling 옵션을](manage-autoscaling.md) 구성할 수 있습니다. 웹 요청을 처리하는 현재 활성 인스턴스 수는 수신 트래픽 볼륨을 기반으로 하므로 App Runner는 단일 요청 처리 후에도 파일이 지속될 수 있다고 보장할 수 없습니다. 따라서 App Runner는 컨테이너 인스턴스의 파일 시스템을 임시 스토리지로 구현하므로 파일이 일시적입니다. 예를 들어 App Runner 서비스를 일시 중지했다가 다시 시작할 때 파일이 지속되지 않습니다.

  App Runner는 3GB의 임시 스토리지를 제공하며 인스턴스에서 풀링, 압축 및 압축되지 않은 컨테이너 이미지에 3GB의 임시 스토리지의 일부를 사용합니다. App Runner 서비스에서 나머지 임시 스토리지를 사용할 수 있습니다. 그러나 상태 비*저장 특성으로 인해 영구 스토리지는 아닙니다*.
**참고**  
스토리지 파일이 요청 간에 지속되는 시나리오가 있을 수 있습니다. 예를 들어 다음 요청이 동일한 인스턴스에 도착하면 스토리지 파일이 유지됩니다. 요청 간 스토리지 파일의 지속성은 특정 상황에서 유용할 수 있습니다. 예를 들어 요청을 처리할 때 향후 요청에 필요할 경우 애플리케이션이 다운로드하는 파일을 캐싱할 수 있습니다. 이렇게 하면 향후 요청 처리 속도가 빨라질 수 있지만 속도 증가를 보장할 수는 없습니다. 코드는 이전 요청에서 다운로드한 파일이 여전히 존재한다고 가정해서는 안 됩니다.  
높은 처리량, 짧은 지연 시간 인 메모리 데이터 스토어를 사용하여 캐싱을 보장하려면 [Amazon ElastiCache](https://aws.amazon.com/elasticache/)와 같은 서비스를 사용합니다.
+ **환경 변수** - 기본적으로 App Runner는 컨테이너 인스턴스에서 `PORT` 환경 변수를 사용할 수 있도록 합니다. 포트 정보로 변수 값을 구성하고 사용자 지정 환경 변수 및 값을 추가할 수 있습니다. *AWS Secrets Manager* 또는 *AWS Systems Manager 파라미터 스토어*에 저장된 민감한 데이터를 환경 변수로 참조할 수도 있습니다. 환경 변수 생성에 대한 자세한 내용은 섹션을 참조하세요[환경 변수 참조](env-variable.md).
+ **인스턴스 역할** - 애플리케이션 코드가 AWS 서비스 APIs 또는 AWS SDKs 중 하나를 사용하여 서비스를 호출하는 경우 AWS Identity and Access Management (IAM)을 사용하여 인스턴스 역할을 생성합니다. 그런 다음 생성할 때 App Runner 서비스에 연결합니다. 코드에 필요한 모든 AWS 서비스 작업 권한을 인스턴스 역할에 포함합니다. 자세한 내용은 [인스턴스 역할](security_iam_service-with-iam.md#security_iam_service-with-iam-roles-service.instance) 단원을 참조하십시오.

## 코드 개발 지침
<a name="develop.tips"></a>

App Runner 웹 애플리케이션용 코드를 개발할 때 다음 지침을 고려하세요.
+ **컨테이너 이미지 패치 적용** - 컨테이너 이미지를 제공할 때 사용자는 이러한 이미지를 정기적으로 업데이트하고 패치를 적용할 책임이 있습니다. App Runner가 인프라를 관리하는 동안 제공된 컨테이너 이미지의 보안 및 up-to-date 상태를 확인해야 합니다. 자세한 내용은 [AWS App Runner 설명서를](security-shared-responsibility.md#security-shared-responsibility.patch-images) 참조하세요.
+ **상태 비저장 코드 설계** - App Runner 서비스에 배포하는 웹 애플리케이션을 상태 비저장으로 설계합니다. 코드는 단일 수신 웹 요청을 처리하는 기간 이후에도 상태가 지속되지 않는다고 가정해야 합니다.
+ **임시 파일 삭제** - 파일을 생성하면 파일 시스템에 저장되고 서비스의 스토리지 할당에 포함됩니다. out-of-storage 오류를 방지하려면 임시 파일을 장기간 보관하지 마세요. 파일 캐싱 결정을 내릴 때 스토리지 크기와 요청 처리 속도의 균형을 맞춥니다.
+ **인스턴스 시작** - App Runner는 5분의 인스턴스 시작 시간을 제공합니다. 인스턴스는 구성된 수신 포트에서 요청을 수신해야 하며 시작 후 5분 이내에 정상 상태여야 합니다. 시작 시간 동안 App Runner 인스턴스에는 vCPU 구성에 따라 가상 CPU(vCPU)가 할당됩니다. 사용 가능한 vCPU 구성에 대한 자세한 내용은 섹션을 참조하세요[App Runner 지원 구성](architecture.md#architecture.vcpu-memory).

  인스턴스가 성공적으로 시작되면 유휴 상태로 전환되고 요청을 기다립니다. 인스턴스 시작 기간을 기준으로 비용을 지불하며, 인스턴스 시작당 최소 요금은 1분입니다. 요금에 대한 자세한 정보는 [AWS App Runner 요금](https://aws.amazon.com/apprunner/pricing)을 참조하세요.