Java 8은 지원이 종료되었으며 2026년 1월 31일에 지원 중단됩니다. 지원 중단 후에는 조직에서 이전에 조직 정책을 사용하여 레거시 런타임의 배포를 다시 사용 설정한 경우에도 Java 8 애플리케이션을 배포할 수 없습니다. 기존 Java 8 애플리케이션은 지원 중단 날짜 이후에도 계속 실행되고 트래픽을 수신합니다. 지원되는 최신 Java 버전으로 마이그레이션하는 것이 좋습니다.
REGION_ID는 앱을 만들 때 선택한 리전을 기준으로 Google에서 할당하는 축약된 코드입니다. 일부 리전 ID는 일반적으로 사용되는 국가 및 주/도 코드와 비슷하게 표시될 수 있지만 코드는 국가 또는 주/도와 일치하지 않습니다. 2020년 2월 이후에 생성된 앱의 경우 REGION_ID.r이 App Engine URL에 포함됩니다. 이 날짜 이전에 만든 기존 앱의 경우 URL에서 리전 ID는 선택사항입니다.
App Engine 앱은 하나 이상의 서비스로 구성된 단일 애플리케이션 리소스로 구성됩니다. 서비스마다 런타임을 다르게 사용하고 다른 성능 설정으로 작동하도록 구성할 수 있으며 각 서비스 내에 해당 서비스의 여러 버전을 배포할 수 있습니다. 그러면 각 버전은 트래픽 처리량 구성에 따라 하나 이상의 인스턴스에서 실행됩니다.
애플리케이션 구성요소
애플리케이션 리소스를 만들면 App Engine 앱이 Google Cloud 프로젝트 아래에 생성됩니다. App Engine 애플리케이션은 앱을 구성하는 서비스, 버전, 인스턴스 리소스가 포함된 최상위 컨테이너입니다. App Engine 앱을 만들면 설정, 사용자 인증 정보, 앱의 메타데이터 컬렉션과 함께 앱 코드를 비롯한 모든 리소스가 선택한 리전에 생성됩니다.
각 App Engine 애플리케이션에는 서비스가 최소 한 개(default 서비스) 이상 포함되어 있으며 앱의 결제 상태에 따라 이 서비스 버전을 원하는 만큼 보유할 수 있습니다.
자세한 내용은 아래의 한도를 참조하세요.
다음 다이어그램은 여러 서비스로 실행되는 App Engine 앱의 계층 구조를 보여줍니다. 이 다이어그램에서 앱에는 여러 버전이 포함된 서비스가 두 개 있고 이 버전 중 두 개는 여러 인스턴스에서 활발하게 실행되고 있습니다.
다른 Google Cloud 서비스(예: Datastore)는 App Engine 앱 간에 공유됩니다. 자세한 내용은 웹 서비스 구조화를 참고하세요.
서비스
App Engine 기능을 안전하게 공유하고 각 요소 간에 통신할 수 있도록 App Engine의 서비스를 사용하여 대규모 앱을 논리적 구성요소로 분할합니다. 일반적으로 App Engine 서비스는 마이크로서비스처럼 동작합니다.
따라서 전체 앱을 단일 서비스에서 실행하거나 여러 서비스를 설계 및 배포하여 마이크로서비스 집합으로 실행할 수 있습니다.
예를 들어 고객 요청을 처리하는 앱에는 다음과 같이 각기 다른 작업을 처리하는 개별 서비스가 포함될 수 있습니다.
휴대기기의 API 요청
관리 유형의 내부 요청
청구 파이프라인과 데이터 분석 등의 백엔드 처리
App Engine의 각 서비스는 앱의 소스 코드와 해당하는 App Engine의 구성 파일로 구성됩니다. 서비스에 배포되는 파일 집합은 해당 서비스의 단일 버전을 나타내며, 해당 서비스에 파일 집합이 배포될 때마다 동일한 서비스 내에서 버전이 추가로 생성됩니다.
버전
각 서비스 내에서 앱을 여러 버전으로 관리하면 롤백, 테스트 또는 그 외 일시적인 이벤트를 위해 앱의 버전을 신속하게 전환할 수 있습니다. 트래픽을 마이그레이션 또는 분할하면 하나 이상의 특정 앱 버전으로 트래픽을 라우팅할 수 있습니다.
인스턴스
서비스 내의 버전은 인스턴스 한 개 이상에서 실행됩니다.
기본적으로 App Engine은 로드에 맞게 앱의 크기를 조정합니다. 즉, 앱은 일관된 성능을 제공하기 위해 실행되는 인스턴스 수를 늘리거나 유휴 인스턴스를 최소화하고 비용을 절감하기 위해 인스턴스 수를 줄입니다.
인스턴스에 대한 자세한 내용은 인스턴스 관리 방법을 참조하세요.
애플리케이션 요청
앱의 각 서비스와 서비스의 각 버전마다 고유한 이름이 있어야 합니다. 그러면 고유한 이름과 다음과 같은 URL을 사용하여 대상을 특정 리소스로 지정하고 트래픽을 라우팅할 수 있습니다.
VERSION-dot-SERVICE-dot-PROJECT_ID의 결합된 길이(VERSION는 버전 이름, SERVICE
은 서비스 이름, PROJECT_ID는 프로젝트 ID)는 63자(영문)를 초과할 수 없으며 하이픈으로 시작하거나 끝날 수 없습니다. 합친 길이가 63자를 초과하면 DNS address could not be
found. 오류가 표시될 수 있습니다.
수신되는 사용자 요청은 트래픽을 처리할 수 있도록 구성된 서비스 또는 버전으로 라우팅됩니다. 요청을 특정 서비스와 버전으로 타겟팅하고 라우팅할 수도 있습니다. 자세한 내용은 요청 처리를 참조하세요.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-04(UTC)"],[[["\u003cp\u003eThe \u003ccode\u003eREGION_ID\u003c/code\u003e is a code assigned by Google based on the selected region when creating an app, and it's included in App Engine URLs for apps created after February 2020.\u003c/p\u003e\n"],["\u003cp\u003eAn App Engine app is a top-level container made up of services, versions, and instances, all located in a chosen region within a Google Cloud project.\u003c/p\u003e\n"],["\u003cp\u003eServices in App Engine allow for the division of large apps into logical components, similar to microservices, which can be deployed together or independently.\u003c/p\u003e\n"],["\u003cp\u003eEach service can have multiple versions, allowing for easy switching between different versions for testing, rollbacks, or other needs, and traffic can be split or migrated to specific versions.\u003c/p\u003e\n"],["\u003cp\u003eThe number of services and versions, as well as instances, is limited depending on whether it is a free or paid app, and the URL cannot exceed 63 characters.\u003c/p\u003e\n"]]],[],null,["# An Overview of App Engine\n\n### Region ID\n\nThe \u003cvar translate=\"no\"\u003eREGION_ID\u003c/var\u003e is an abbreviated code that Google assigns\nbased on the region you select when you create your app. The code does not\ncorrespond to a country or province, even though some region IDs may appear\nsimilar to commonly used country and province codes. For apps created after\nFebruary 2020, \u003cvar translate=\"no\"\u003eREGION_ID\u003c/var\u003e`.r` is included in\nApp Engine URLs. For existing apps created before this date, the\nregion ID is optional in the URL.\n\nLearn more\n[about region IDs](/appengine/docs/legacy/standard/java/how-requests-are-routed#region-id). \nOK\n\n\nAn App Engine app is made up of a single application resource\nthat consists of one or more *services* . Each service can be configured to use\ndifferent runtimes and to operate with different performance settings. Within\neach service, you deploy *versions* of that service. Each version then runs\nwithin one or more *instances*, depending on how much traffic you configured it\nto handle.\n\nComponents of an application\n----------------------------\n\nYour App Engine app is created under your Google Cloud project when you\ncreate an [application resource](/appengine/docs/legacy/standard/java/console). The App Engine\napplication is a top-level container that includes the service, version, and\ninstance resources that make up your app. When you create your\nApp Engine app, all your resources are created in the\n[region](/appengine/docs/legacy/standard/java/locations) that you choose, including your app code\nalong with a collection of settings, credentials, and your app's metadata.\n\nEach App Engine application includes at least one service, the `default`\nservice, which can hold many versions, depending on your app's billing status.\nFor more information, see [Limits](#limits) below.\n\nThe following diagram illustrates the hierarchy of an App Engine\napp running with multiple services. In this diagram, the app has two services\nthat contain multiple versions, and two of those versions are actively running\non multiple instances:\n\nOther Google Cloud services, for example Datastore, are\nshared across your App Engine app. For more information, see\n[Structuring web\nservices](/appengine/docs/legacy/standard/java/configuration-files).\n\nServices\n--------\n\nUse *services* in App Engine to factor your large apps into logical\ncomponents that can securely share App Engine features and communicate\nwith one another. Generally, your App Engine services behave like\n[microservices](https://wikipedia.org/wiki/Microservices).\nTherefore, you can run your whole app in a single service or you can design and\ndeploy multiple services to run as [a set of microservices](/appengine/docs/legacy/standard/java/microservices-on-app-engine).\n\nFor example, an app that handles your customer requests might include separate\nservices that each handle different tasks, such as:\n\n- API requests from mobile devices\n- Internal, administration-type requests\n- Backend processing such as billing pipelines and data analysis\n\nEach service in App Engine consists of the source code from your app and\nthe corresponding App Engine configuration files. The set of files that\nyou deploy to a service represent a single *version* of that service and each\ntime that you deploy to that service, you are creating additional versions\nwithin that same service.\n\nVersions\n--------\n\nHaving multiple versions of your app within each service allows you to quickly\nswitch between different versions of that app for rollbacks, testing, or other\ntemporary events. You can route traffic to one or more specific versions of your\napp by\n[migrating](/appengine/docs/legacy/standard/java/migrating-traffic) or\n[splitting](/appengine/docs/legacy/standard/java/splitting-traffic)\ntraffic.\n\n\nInstances\n---------\n\nThe versions within your services run on one or more *instances* .\nBy default, App Engine scales your app to match the load. Your apps will\nscale up the number of instances that are running to provide consistent\nperformance, or scale down to minimize idle instances and reduces costs.\nFor more information about instances, see [How Instances are\nManaged](/appengine/docs/legacy/standard/java/how-instances-are-managed).\n\nApplication requests\n--------------------\n\nEach of your app's services and each of the versions within those services must\nhave a unique name. You can then use those unique names to target and route\ntraffic to specific resources using URLs, for example:\n\n\n`https://`\u003cvar translate=\"no\"\u003eVERSION\u003c/var\u003e`-dot-`\u003cvar translate=\"no\"\u003eSERVICE\u003c/var\u003e`-dot-`\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e`.`\u003cvar translate=\"no\"\u003e\u003ca href=\"#appengine-urls\" style=\"border-bottom: 1px dotted #999\" class=\"devsite-dialog-button\" data-modal-dialog-id=\"regional_url\" track-type=\"progressiveHelp\" track-name=\"modalHelp\" track-metadata-goal=\"regionalURL\"\u003eREGION_ID\u003c/a\u003e\u003c/var\u003e`.r.appspot.com`\n\nNote that the combined length of\n\u003cvar translate=\"no\"\u003eVERSION\u003c/var\u003e`-dot-`\u003cvar translate=\"no\"\u003eSERVICE\u003c/var\u003e`-dot-`\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e\u003cvar translate=\"no\"\u003e\u003ca href=\"#appengine-urls\" style=\"border-bottom: 1px dotted #999\" class=\"devsite-dialog-button\" data-modal-dialog-id=\"regional_url\" track-type=\"progressiveHelp\" track-name=\"modalHelp\" track-metadata-goal=\"regionalURL\"\u003e\u003c/a\u003e\u003c/var\u003e, where\n`VERSION` is the name of your version, `SERVICE\n` is the name of your service, and `PROJECT_ID` is your\nproject ID, cannot be longer than 63 characters and cannot start or end with\na hyphen. If the combined length is\nlonger than 63 characters, you might see Error `DNS address could not be\nfound. `\n\nIncoming user requests are routed to the services or versions that are\nconfigured to handle traffic. You can also target and route requests to specific\nservices and versions. For more information, see [Handling Requests](/appengine/docs/legacy/standard/java/how-requests-are-handled).\n\n### Logging application requests\n\nWhen your application handles a request, it can also write its own logging\nmessages to [`stdout` and\n`stderr`](https://wikipedia.org/wiki/Standard_streams). For details about your app's logs, see [Writing Application\nLogs](/appengine/docs/legacy/standard/java/logs).\n\nLimits\n------\n\nThe maximum number of services and versions that you can deploy depends on your app's pricing:\n\n\u003cbr /\u003e\n\nThere is also a limit to the number of instances for each service with basic or\nmanual scaling:\n\nThere is also a limit to the number of characters in the URL of your\napplication."]]