# Cloud Code

> Write and run server-side code on a fully managed infrastructure that scales automatically to meet your traffic demands.

Cloud Code는 클라우드에서 코드를 작성하고 실행할 수 있는 서버리스 컴퓨팅 서비스입니다. Unity의 Cloud Code를 사용해 완전히 관리되는 인프라에서 상태 비보존형 서버 측 코드를 작성할 수 있습니다. Cloud Code는 완전히 관리되는 서비스로서 트래픽 수요를 충족하도록 자동으로 스케일링됩니다. 게임 로직 개발에 집중하고 클라이언트로부터 분리하여 부정 행위를 방지할 수 있습니다.

Cloud Code는 [Remote Config](/remote-config.md), [Cloud Save](/cloud-save.md), [Economy](/economy.md), [Leaderboards](/leaderboards.md) 등 다른 Unity 서비스와 연동되도록 완전히 호환됩니다.

Cloud Code를 다른 Unity 서비스와 함께 사용하면 전체 게임 백엔드를 생성하고 [인게임 경제](/economy.md), [플레이어 데이터용 스토리지](/cloud-save.md), [동적 설정 구성](/remote-config.md)과 같은 솔루션을 배포하면서 게임 로직을 안전하게 유지할 수 있습니다.

> **Note:**
>
> Cloud Code C# 모듈은 \[Unity 스크립팅 API]의 네임스페이스 또는 그 외 요소에서 `UnityEngine`의 클래스를 사용할 수 없습니다. Cloud Code가 오픈 소스 \[.NET 런타임]을 사용하기 때문입니다. 이는 Unity Runtime과는 별개이며 해당 \[스크립팅 백엔드]를 사용하지 않습니다.

## Cloud Code를 통한 해결 방법##solutions-with-cloud-code

| 문제                                                                                                 | 해결 방법                                                       |
| -------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
| 클라이언트 업데이트 롤아웃 없이 코드를 라이브 게임에 배포해야 하는데 이로 인해 플레이어가 인스톨을 업데이트해야 합니다.                                | 플레이어가 업데이트해야 할 필요 없이 Cloud Code를 사용하여 게임 로직을 업데이트합니다.       |
| 악의적 플레이어가 클라이언트 코드를 수정하거나, 상태를 변경하거나, 부정 행위를 할 수 없도록 하고 싶습니다. 플레이어가 게임 로직을 리버스 엔지니어링하는 것도 막고 싶습니다. | Cloud Code를 활용하여 게임 로직이 안전한 샌드박스에서 실행되고 클라이언트로부터 분리되도록 합니다. |
| 여러 온라인 서비스를 사용하되 게임이 느리다고 느껴지지 않았으면 하며 더 많은 서버 측 컴포넌트와 연동함에 따라 게임 클라이언트에 쉽게 작성할 수 있었으면 합니다.        | Cloud Code를 활용하여 다른 Unity 서비스와 연동하고 여러 컴포넌트와 연결된 코드를 작성합니다. |
| 게임 로직을 실행하기 위해 인프라를 관리하고 트래픽 수요를 충족할 수 있도록 인프라를 스케일링해야 합니다.                                        | Cloud Code를 활용하여 완전히 관리되는 인프라에서 상태 비보존형 서버 측 코드를 작성합니다.     |
| 게임에 트래픽이 수신되지 않는 경우 미사용 리소스에 대해 비용을 지불하고 싶지 않습니다.                                                  | Cloud Code를 활용하여 사용한 것에 대해서만 비용을 지불합니다.                     |
| 인증이나 호환성에 대한 우려 없이 여러 컴포넌트와 연결되는 코드를 작성하기 위한 해결 방법이 필요합니다.                                         | Cloud Code를 활용하여 빌트인 호환성을 갖춘 다른 Unity 서비스와 연동하는 코드를 작성합니다.  |

## Cloud Code 샘플##cloud-code-samples

다음 튜토리얼에서는 특정 결과를 얻기 위해 Cloud Code 트리거와 다른 UGS 제품을 조합하여 사용하는 방법을 보여 줍니다.

> **Note:**
>
> **참고**: 고급 샘플 프로젝트를 알아보려면 [UGS 사용 사례 샘플 프로젝트](/services/solutions/use-cases-project.md)를 참고하십시오.

| 튜토리얼                                                                                    | 서비스                                                                                               |
| :-------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------ |
| [시즌 종료 시 상위 플레이어에게 게임 내 재화로 보상 제공](/triggers/tutorials/use-cases/reward-top-players.md) | [Leaderboards](/leaderboards.md)[Economy](/economy.md)                                            |
| [새로 가입한 플레이어를 기본 구성 값으로 초기화](/triggers/tutorials/use-cases/initialize-new-players.md)   | [Authentication](/authentication.md)[Cloud Save](/cloud-save.md)                                  |
| [순위가 떨어진 플레이어에게 푸시 메시지 전송](/triggers/tutorials/use-cases/higher-score-message.md)       | [Leaderboards](/leaderboards.md)                                                                  |
| [참여한 로비에 있는 모든 플레이어에게 레벨 업 알림](/triggers/tutorials/use-cases/announce-level-up.md)      | [Cloud Save](/cloud-save.md)[Lobby](/lobby.md)                                                    |
| [각 플레이어에 맞게 게임 난이도 조정](/triggers/tutorials/use-cases/tune-game-difficulty.md)           | [Cloud Save](/cloud-save.md) [Leaderboards](/leaderboards.md)[Authentication](/authentication.md) |

## Cloud Code에서 모듈과 스크립트 사용##use-cloud-code-with-modules-and-scripts

게임에서 Cloud Code를 호출하기 위해 연동된 Unity SDK 또는 Cloud Code 클라이언트 API를 사용할 수 있습니다(Unity 에디터 외부에서 작업해야 하는 경우).

Cloud Code에서 지원되는 두 가지 유형의 코드는 Cloud Code C# 모듈과 Cloud Code JavaScript 스크립트입니다.

요구 사항에 맞는 방법을 선택하려면 다음 개요를 검토하십시오.

|                 | Cloud Code C# 모듈                                                        | Cloud Code JavaScript 스크립트                                                       |
| --------------- | ----------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| **런타임**         | .NET 9                                                                  | Node.js 14                                                                       |
| **언어**          | C#                                                                      | JavaScript                                                                       |
| **배포**          | [에디터][modules-editor], [커맨드 라인][CLI-modules] 또는 [관리자 API][AAPI-modules] | [에디터][scripts-editor], \[대시보드], [커맨드 라인][CLI-scripts] 또는 [관리자 API][AAPI-scripts] |
| **실행**          | [SDK][SDK-modules] 또는 [런타임 API][CAPI-modules]                           | [SDK][SDK-scripts] 또는 [런타임 API][CAPI-scripts]                                    |
| **외부 라이브러리 지원** | [NuGet 패키지 관리자][NuGet-packages] 및 [공개 인터넷 엔드포인트][External-APIs-modules] | [공개 인터넷 엔드포인트][External-APIs]                                                    |

> **Note:**
>
> Cloud Code C# 모듈은 \[Unity 스크립팅 API]의 네임스페이스 또는 그 외 요소에서 `UnityEngine`의 클래스를 사용할 수 없습니다. Cloud Code가 오픈 소스 \[.NET 런타임]을 사용하기 때문입니다. 이는 Unity Runtime과는 별개이며 해당 \[스크립팅 백엔드]를 사용하지 않습니다.

[scripts-editor]: /cloud-code/3.0.0/scripts/how-to-guides/write-scripts/unity-editor

[modules-editor]: /cloud-code/3.0.0/modules/how-to-guides/write-modules/unity-editor

[CLI-modules]: /cloud-code/3.0.0/modules/how-to-guides/write-modules/cli#deploy-modules

[CLI-scripts]: /cloud-code/3.0.0/scripts/how-to-guides/write-scripts/cli#deploy-scripts

[AAPI-modules]: /cloud-code/3.0.0/modules/how-to-guides/write-modules/rest-api#deploy-modules

[AAPI-scripts]: /cloud-code/3.0.0/scripts/how-to-guides/write-scripts/rest-api#deploy-scripts

[CAPI-modules]: /cloud-code/3.0.0/modules/how-to-guides/run-modules/rest-api

[CAPI-scripts]: /cloud-code/3.0.0/scripts/how-to-guides/run-scripts/rest-api

[SDK-modules]: /cloud-code/3.0.0/modules/getting-started#deploy-the-module

[SDK-scripts]: /cloud-code/3.0.0/scripts/getting-started#deploying-hello-world

[NuGet-packages]: /cloud-code/3.0.0/modules/how-to-guides/external-services-integration

[External-APIs]: /cloud-code/3.0.0/scripts/how-to-guides/external-services-integration

[External-APIs-modules]: /cloud-code/3.0.0/modules/how-to-guides/external-services-integration

## Cloud Code 인터페이스##cloud-code-interfaces

Cloud Code를 사용하여 애플리케이션을 연동하고 관리하는 방법에는 다음과 같이 여러 가지가 있습니다.

| 인터페이스                                                                                                                                                    | 지원               | 설명                                            | 사용                                                                                                                                                                                                                                                     |
| -------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Cloud Code SDK                                                                                                                                           | 스크립트 및 모듈        | Unity 프로젝트를 Cloud Code와 연동하는 SDK(소프트웨어 개발 키트) | SDK를 사용하여 [모듈 엔드포인트를 호출](/cloud-code/3.0.0/modules/how-to-guides/run-modules/unity-runtime.md)하거나 Unity Runtime에서 [스크립트를 호출](/cloud-code/3.0.0/scripts/how-to-guides/run-scripts/unity-runtime.md)합니다.                                                 |
| [Unity Dashboard](/services/unity-dashboard-introduction.md)                                                                                             | 스크립트 및 제한된 모듈 지원 | Cloud Code 구성 및 설정을 관리하는 웹 기반 인터페이스           | 스크립트를 [생성](/cloud-code/3.0.0/scripts/how-to-guides/write-scripts/unity-dashboard.md)하고, 미리 보고, [테스트 실행](/cloud-code/3.0.0/scripts/how-to-guides/test-run.md)하며 [모듈을 미리 봅니다](/cloud-code/3.0.0/modules/how-to-guides/write-modules/unity-dashboard.md). |
| [Unity Gaming Services 커맨드 라인 인터페이스](https://services.docs.unity.com/guides/ugs-cli/latest/cloud-code/Cloud%20Code%20Command%20Line/overview/index.html) | 스크립트 및 모듈        | Cloud Code 구성 및 설정을 관리하는 커맨드 라인 인터페이스         | Cloud Code를 CI/CD와 연동하고 파일 기반 워크플로를 사용하여 Cloud Code와 다른 Unity 서비스를 함께 배포합니다.                                                                                                                                                                           |
| [Cloud Code 관리자 API](https://services.docs.unity.com/cloud-code-admin)                                                                                   | 스크립트 및 모듈        | Cloud Code 스크립트 및 모듈을 관리하는 REST API           | REST API를 사용하여 Cloud Code 스크립트 및 모듈을 생성하고, 읽고, 업데이트하고, 삭제합니다.                                                                                                                                                                                          |
| [Cloud Code 클라이언트 API](https://services.docs.unity.com/cloud-code)                                                                                       | 스크립트 및 모듈        | Cloud Code 스크립트 및 모듈 엔드포인트를 호출하는 REST API     | API 호출을 통해 Cloud Code 스크립트 및 모듈을 호출하고 Unity 에디터 외 제품과 연동합니다.                                                                                                                                                                                           |
| [배포](/services/ugs-cli-introduction.md#deployments)                                                                                                      | 스크립트 및 모듈        | Unity 에디터 및 UGS CLI 확장                        | 배포를 사용하여 Unity Dashboard 대신 파일로 Cloud Code를 구성합니다. 이러한 파일을 버전 관리의 일부로 포함하여 Unity Dashboard에서 컨텍스트 전환을 최소화합니다.                                                                                                                                          |

코드를 배포하고 실행하는 방법을 이해하려면 [다음 단계 진행](#take-the-next-step) 섹션의 옵션 중 하나를 따릅니다.

## 다음 단계 진행##take-the-next-step

| ### Cloud Code C# 모듈타입 세이프(type-safe) 프로그래밍 언어와 강력한 .NET 컴포넌트를 사용하여 서버 측 코드를 작성합니다. NuGet과 같은 툴을 사용하여 DLL(동적 링크 라이브러리)을 번들링하는 프로젝트에서 필요한 기타 콘텐츠를 활용합니다.[Cloud Code C# 모듈 시작하기](/cloud-code/3.0.0/modules/overview.md)                                                                                        |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| ### Cloud Code JavaScript 스크립트반복 작업(iteration)이 수월한 언어를 사용하여 서버 측 코드를 작성합니다. JavaScript 프론트엔드로 개발을 시작했다면 동일한 생태계를 사용하여 기존의 개발 경험을 활용할 수 있습니다. Cloud Code 커맨드 라인으로 바로 지원되는 CommonJS 및 ECMAScript 모듈 시스템을 통해 재사용 가능한 부분으로 코드를 번들링하십시오.[Cloud Code JavaScript 스크립트 시작하기](/cloud-code/3.0.0/scripts/overview.md) |
