앱 및 버전
버전 관리와 애플리케이션에 대해 알아보세요 — 개념 및 더 깊은 이해를 위한 모범 사례.
📦 애플리케이션
애플리케이션은 서버 프로젝트를 캡슐화합니다. 이러한 컨텍스트 분리는 특히 다음과 같은 경우에 유용합니다:
여러 게임 또는 비게임 프로젝트에서 작업할 때(통합 청구),
외부 프로젝트에 공동 개발자로 참여할 때(나중에 소유권 이전),
다양한 확장 패턴이나 요구사항을 가진 여러 느슨하게 결합된 서버 유형에 의존할 때.
Edgegap에서 플러그인, 대시보드, 또는 우리의 API를 사용해 애플리케이션을 관리할 수 있습니다.
다음을 살펴보세요 애플리케이션 API 참조, 또는 더 읽어보세요 관리 API.
🏷️ 앱 버전
애플리케이션을 개발하고 지속적으로 새로운 빌드를 생성할 때, 각 빌드를 별도의 버전으로 저장해야 하는 이유는 다음과 같습니다:
호환성 유지 클라이언트와 서버 간의,
다양한 측면을 비교하기 위해 증분 릴리스 (성능, 사용자 반응),
테스트 여러 앱 버전을 동시에 (개발, 품질 보증, 스테이징, 베타).
각 앱 버전은 선택한 하나의 빌드 아티팩트를 가리킵니다. 여러 버전이 동일한 빌드를 가리킬 수 있습니다.
Edgegap에서 다음을 사용해 앱 버전을 관리할 수 있습니다 대시보드, 또는 우리의 API를 사용해 애플리케이션을 관리할 수 있습니다.
다음을 살펴보세요 앱 버전 API 참조, 또는 다음에 대해 더 읽어보세요 API.
각 버전은 상위 애플리케이션 내에서 다음에 의해 고유하게 식별됩니다 앱 버전 이름당신만의 명명 규칙을 자유롭게 결정할 수 있습니다. 선택에 영감을 줄 몇 가지 인기 있는 예시는 다음과 같습니다:
2024.01.30-16.23.00-UTC- 타임스탬프는 과거 많은 버전을 투명하게 관리하는 데 유용합니다,1.1.0- 시맨틱 버저닝 변경 범위를 전달하기에 훌륭한 선택입니다,dev,스테이징,QA,프로덕션- 환경별로 최신 버전만 유지하는 것은 매우 쉽습니다,블루,그린- 버전은 롤링 업데이트 릴리스 전략의 별칭으로 사용할 수 있습니다.
클라이언트/서버 호환성만 유지되는 한 언제든지 접근 방식을 변경할 수 있습니다.
다음에서 어떤 앱이나 버전을 비활성화할 수 있습니다 대시보드 에서 인간(개발자) 실수에 대한 안전장치.
무료 요금제는 2개의 애플리케이션, 2개의 버전 및 5GB 컨테이너 레지스트리 저장소로 제한됩니다.
버전 관리 전략 결합
종종 최선의 해결책은 여러 버전 관리 전략을 혼합하는 것입니다. 예를 들어:
개발 빌드의 보다 세분화된 추적을 위해 타임스탬프나 시맨틱 버저닝 사용;
유지하기
스테이징,QA및프로덕션환경별 매개변수를 가진 버전;교대로
블루및그린별칭으로 사용하는 버전 매치메이킹 다운타임 없는 업데이트.
🧱 필수 매개변수
이러한 기본 매개변수는 항상 정의되어야 합니다.
리소스 요구사항
다음에 추가하여, 버전의 이름, 새 버전을 생성하려면 몇 가지 매개변수가 필요합니다:
vCPU - 앱이 실행되는 데 필요한 가상 CPU 단위 수(1024 단위 = 1 vCPU),
허용되는 최소 vCPU는 0.25 vCPU(256 단위)입니다,
이 설정은 기존 앱 버전에서 편집할 수 없으며, 새 버전을 생성해야 합니다.
메모리 - 앱이 실행되는 데 필요한 RAM 용량(1024MB = 1GB),
이 설정은 기존 앱 버전에서 편집할 수 없으며, 새 버전을 생성해야 합니다.
GPU - 앱이 실행되는 데 필요한 그래픽 처리 장치 수,
이 기능은 아직 제공되지 않습니다. 관심이 있으시면 문의해 주세요.
버전은 자동으로 2:1 RAM-vCPU 비율의 RAM을 포함하며, 0.25 vCPU당 최대 512MB의 RAM을 허용합니다.
우리의 서버 머신은 위치에 따라 2.4 - 3.2GHz 클럭 속도의 AMD/Intel CPU를 사용합니다. 서버에 충분한 리소스가 있는지 확인하려면 이 페이지의 문제 해결 단계를 검토하세요,.
이미지 세부정보
이러한 매개변수는 나중에 어떤 서버 빌드를 시작할지 시스템이 결정하는 데 도움이 됩니다:
레지스트리 -
registry.edgegap.com당사의 컨테이너 레지스트리,타사 레지스트리를 사용하려면 타사 레지스트리 도커 자격 증명을 입력하세요,
레지스트리는 귀하와 다른 사용자의 저장소를 위한 공유 저장 서비스 역할을 합니다.
이미지 저장소 - 애플리케이션 전용 저장소를 가리킵니다,
모든 저장소는 우리의 대시보드의 컨테이너 레지스트리 페이지에서 찾을 수 있습니다,
각 저장소에는 서버 이미지의 여러 태그가 포함될 수 있습니다.
태그 - 서버 이미지의 특정 빌드 아티팩트(버전)를 가리킵니다,
플러그인은 기본적으로 앱 버전 이름에서 태그 값을 복사합니다,
로컬에 저장된 태그는 Docker Desktop의 Images 또는 docker CLI를 사용해 볼 수 있습니다.
❌ 하지 마세요 - 기존 태그를 덮어쓰거나 사용하지 마세요 latest 태그 구식(캐시된) 빌드 배포를 피하기 위해.
✅ 해야 할 것 - 항상 버전 태그를 증가시키세요 의도한 빌드를 배포하고 릴리스 문제를 방지하기 위해.
프라이빗 레지스트리 - 저장소 접근이 보호(비공개 저장소)되어 있다면 다음도 필요합니다:
사용자 이름 토큰 - 레지스트리의 프로그래밍 접근용 사용자 이름,
비밀번호 토큰 - 레지스트리의 프로그래밍 접근용 비밀번호,
Edgegap의 경우 컨테이너 레지스트리다음을 대시보드에서 이 값들을 복사할 수 있습니다,
이 값들은 공개 저장소에는 필요하지 않습니다.
문제 해결 및 FAQ
푸시할 때 오류를 받았습니다 401 권한 없음 서버 이미지를 푸시할 때 발생했습니다.
이는 컨테이너 레지스트리에 로그인하지 않았음을 의미합니다. 자세한 내용은 컨테이너 레지스트리를 참조하세요 Edgegap 컨테이너 레지스트리 지침, 또는 사용 중인 레지스트리 제공자에 해당하는 지침을 참조하세요. 마지막 작업을 반복해도 오류가 해결되지 않습니다.
푸시할 때 오류를 받았습니다 403 금지됨 서버 이미지를 푸시할 때 발생했습니다.
이는 현재 로그인한 레지스트리 사용자가 충분한 권한(일반적으로 새 이미지를 푸시할 권한)을 갖고 있지 않거나 잘못된 레지스트리 제공자에 로그인했음을 의미합니다. 로그아웃한 뒤 올바른 제공자와 충분한 권한을 가진 사용자로 다시 로그인해 보세요. 마지막 작업을 반복해도 오류가 해결되지 않습니다.
레지스트리, 저장소(repository), 프로젝트의 차이는 무엇인가요?
레지스트리는 저장 시설, 저장소(repository)는 저장 유닛, 프로젝트는 저장 유닛 번호로 생각하세요. 각 레지스트리에는 일반적으로 여러 저장소가 포함되며, 일부는 공개이고 일부는 조직이나 사용자에게 비공개입니다.
예시 레지스트리:
registry.edgegap.com.예시 저장소:
registry.edgegap.com/my-edgegap-org/my-game-server.예시 프로젝트 이름:
my-game-server.
새 이미지 태그/빌드를 푸시할 때 변경 사항이 제대로 반영되지 않습니다.
매번 재빌드할 때 새 이미지 태그로 푸시하는지 확인하세요. Edgegap의 내부 캐싱 시스템은 태그 이름을 사용하며 태그 값을 덮어쓰는 경우(예:
latest) 새 빌드를 인식하지 못할 것입니다.
동일한 빌드 아티팩트에 여러 태그를 붙일 수 있나요?
예, 동일한 아티팩트에 여러 태그를 문제 없이 붙여 동일 빌드에 대한 여러 별칭으로 사용할 수 있습니다. 태그를 나중에 제거하는 방법을 계속 읽어보세요.
태그를 삭제하면 어떤 일이 발생하나요? 해시를 사용해 특정 아티팩트를 삭제할 수 없는 이유는 무엇인가요?
태그를 삭제하면 해당 시점에 아티팩트에 다른 태그가 연결되어 있지 않다면 관련 빌드 아티팩트도 삭제됩니다, API 요청.
도커 API 표준 및 가능한 최상의 사용자 경험 보장을 위해 태그 삭제를 위한 인터페이스만 제공합니다. 빌드 아티팩트 삭제에 대한 위의 설명을 참조하세요.
⚙️ 선택적 매개변수
이러한 매개변수는 배포를 더욱 사용자화하기 위해 구성할 수 있습니다.
주입된 변수(Injected Variables)
사용자 정의 환경 변수는 이 버전의 모든 배포에 주입됩니다:
일반적인 예로는: 엔진 인수, 타사 비밀 및 엔드포인트가 있습니다,
보기 또는 배포 컨텍스트에 따라 환경 변수를 주입하는 다양한 방법을 이해하려면, 앱 버전 변수 외에,
각 환경 변수는 최대 4KB(킬로바이트)의 문자열 데이터를 포함할 수 있습니다.
반드시 민감한 변수(비밀, 토큰)를 숨김으로 설정하세요 추가 보안을 위해!
액티브 캐싱
🌟 종량제(Pay as You Go) 등급으로 업그레이드 전 세계적으로 0.5초 배포 시간을 잠금 해제하려면!
배포 속도를 높이고 서버를 몇 초 내에 시작하세요, 대기 서버가 필요 없습니다. 이 앱 버전과 연관된 서버 이미지는 자동으로 전 세계 모든 위치에 사전 로드됩니다.
캐싱은 앱 버전의 캐싱 수준이 🟢 좋음에 도달하면 완전히 적용됩니다.
여러 앱 버전이 동일한 이미지 태그를 재사용할 수 있습니다. 한 버전에 대해 캐시를 활성화하면 동일한 이미지 태그와 연결된 모든 버전에 대해 자동으로 활성화되어매개변수화된 배포를 쉽게 만듭니다.
이미지는 배포 시에도 수동으로 캐시되며 배포된 호스트 머신에서만 적용됩니다.
이미지는 연속 72시간 동안 배포되지 않으면 캐시에서 제거됩니다.
포트 매핑
각 서버는 들어오는 클라이언트 연결을 수락하기 위해 최소 하나의 포트가 필요합니다:
포트 값은 내부 포트 값을 가리키며, 일반적으로 네트코드 통합에서 사용되는 값입니다,
프로토콜 네트코드 통합의 전송 방식에 따라 달라집니다,
이름 사용자 필요에 맞춘 사람이 읽기 쉬운 식별자이며 포트와 동일할 수 있습니다,
검증 컨테이너가 READY로 표시되기 전에 초기화되었는지 확인하도록 활성화할 수 있습니다.
대부분의 게임은 포트에 대해 단일 UDP 포트 매핑만 추가하면 됩니다 7777.
서버 프로세스의 내부 포트는 앱 버전의 일부로 정의되는 반면, 외부 포트는 배포가 생성되면 임의로 할당됩니다잠재적인 악의적 행위자(해커)가 피해를 일으키기 전에 느려지거나 탐지되도록 하기 위해서입니다.

서버가 여러 프로토콜로 통신하는 경우 포트 매핑에 더 많은 포트를 추가하세요.
안전 장치
이러한 매개변수는 다양한 엣지 케이스 및 일반적인 서버 문제 해결에 도움이 됩니다:
시간 제약 - 이러한 기능은 배포의 리소스 수명 주기 관리를 돕습니다:
를 사용하여 이 배포를 중지함, 지정된 기간 후에 서버를 정상적으로 종료하도록 설정하거나,
-1사용: 앱 버전 API 생성/편집 위해 영속성 사용: 프라이빗 플릿.배포 최대 시간 시작하는 데 너무 오래 걸리는 배포를 정리하는 데 도움이 됩니다.
컨테이너 로그 저장소 - 배포가 중지된 후 서버 로그를 내보내려면 사전 구성된 S3 호환 버킷을 지정하여 컨테이너 로그를 내보내세요,
보기 엔드포인트 저장소 구성 및 사용에 대한 자세한 내용은 참고하세요.
외부 저장소가 없는 버전의 로그는 배포 종료 시 삭제됩니다.
무료 요금제는 2개의 애플리케이션, 2개의 버전 및 5GB 컨테이너 레지스트리 저장소로 제한됩니다.
⏩ 업데이트 일관성
새 앱 버전을 우리의 대시보드, 생성할 때 어떤 매개변수도 변경되지 않도록 하기 위해, 우리는 복제 이전 앱 버전의 대시보드 페이지 오른쪽 상단에 있는 기능 사용을 권장합니다. 복제할 때 저장하기 전에 매개변수를 편집할 수 있습니다.
앱 버전을 복제하거나 편집해도 서버 이미지를 다시 빌드할 필요가 없습니다.
보기 매치메이커 롤링 업데이트 추가적인 릴리스 자동화.
마지막 업데이트
도움이 되었나요?

