앱 컨텍스트 사용 방법
Published: 2024-07-09 06:54:31

펍넙 [앱 컨텍스트는](https://www.pubnub.com/products/app-context/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 사용자, 채널, 멤버십 정보를 위한 서버리스 스토리지 메커니즘을 제공하여 복잡한 실시간 기능 개발을 간소화합니다. 앱 컨텍스트는 데이터가 변경될 때마다 이벤트를 트리거하여 앱을 실시간으로 업데이트할 수 있으며, 저장된 데이터는 [일루미네이트](https://www.pubnub.com/products/illuminate/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [펑션](https://www.pubnub.com/products/functions/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 및 기타 PubNub 서비스에서 사용하여 더 스마트한 의사 결정을 내릴 수 있습니다. 또한 코드가 필요 없는 직관적인 인터페이스를 통해 이 데이터를 관리할 수 있는 [BizOps Workspace를](https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 사용할 수도 있습니다.

앱 컨텍스트란 무엇인가요?
--------------

[앱 컨텍스트](https://www.pubnub.com/docs/general/metadata/channel-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) (이전의 오브젝트)를 사용하면 다음을 수행할 수 있습니다:

-   애플리케이션의 사용자 및 채널과 이들 간의 관계에 의미를 부여합니다.
-   모든 엔티티에 대한 메타데이터를 서버에 저장하여 클라이언트에 글로벌 소스를 간편하게 제공할 수 있습니다. 사용자는 사람을 나타낼 필요는 없으며, 대신 사용자 개체 내에 디바이스 상태를 저장하는 것이 일반적입니다.
-   객체의 값이 변경될 때마다 즉각적인 실시간 이벤트를 수신합니다.

모든 애플리케이션에서 앱 컨텍스트를 사용할 수 있지만 특히 [채팅 솔루션을](https://www.pubnub.com/solutions/chat/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 만드는 개발자에게 인기가 높습니다.

앱 컨텍스트는 [사용자](https://www.pubnub.com/docs/general/metadata/users-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 및 [채널에](https://www.pubnub.com/docs/general/metadata/channel-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 대한 추천 필드 세트와 이들 간의 [멤버십에](https://www.pubnub.com/docs/general/metadata/membership-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 대한 추천 필드를 제공합니다. 이러한 필드의 대부분은 선택 사항이므로 어떤 필드를 채울지 선택할 수 있으며, 사용자 지정 필드를 직접 제공할 수도 있습니다.

![Diagram showing user management, memberhip, channel management](https://www.pubnub.com/cdn/3prze68gbwl1/5ICbXWgNTJNc5kXAAQ4qJI/40b24d228d9ed97e17e47b027469bcdf/app_context_diagram.png "How-to - BizOps Workspace Manage Users and Channels - Image 01")

앱 컨텍스트 사용 사례
------------

앞서 언급했듯이 앱 컨텍스트는 특히 채팅 솔루션을 만드는 개발자들에게 인기가 있지만 다양한 사용 사례에서 사용할 수 있습니다:

-   **채팅:** 사용자 정보(이름, 프로필 사진, '휴가 중' 상태, 직책), 채널 정보(아이콘, 설명, 대상), 사용자 역할을 저장하고 채널별, 사용자별로 마지막으로 읽은 메시지를 추적할 수 있습니다.
-   **스포츠, 미디어 및 엔터테인먼트:** 실시간 투표 및 투표, 실시간 퀴즈, 실시간 입찰, 상품 또는 프로모션에 대한 CTA(클릭 유도 문안) 오버레이.
-   **게임:** 플레이어 레벨, 승리한 게임, 배지 등 실시간 플레이어 통계, 리더보드 추적 및 관리
-   **기타:** 기타: 사용자 부재/활성 상태, 사기 탐지를 위한 사용자 신뢰 점수, 사용자 위치 추적, 배터리 잔량 또는 마지막 센서 판독값과 같은 IoT 디바이스 상태

앱 컨텍스트를 활성화하는 방법
----------------

앱 컨텍스트는 다음과 같이 활성화할 수 있습니다:

1.  [관리자 포털에](https://admin.pubnub.com/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 로그인합니다.
2.  포털 왼쪽에 있는 '앱' 탭을 클릭합니다.
3.  애플리케이션을 클릭합니다. 이 애플리케이션의 키 설정 페이지로 이동합니다.
4.  아직 키셋을 만들지 않았다면 '새 키셋 만들기' 버튼을 클릭하여 새 키셋을 만듭니다. 이 키 집합에 대한 구성 페이지로 이동합니다.
5.  슬라이더를 클릭하여 앱 컨텍스트를 사용 설정합니다.
6.  **버킷 지역** 설정은 데이터가 저장되는 지역입니다. 키 집합에 변경 사항을 저장한 후에는 리전을 수정할 수 없다는 점에 유의하세요.
7.  **사용자 메타데이터 이벤트** 및 **채널 메타데이터 이벤트** 설정이 활성화된 경우 나중에 설명하는 대로 데이터베이스에서 데이터가 설정되거나 제거될 때 사용자 및 채널 이벤트가 트리거됩니다.
8.  **멤버십 이벤트** 설정이 활성화되어 있으면 나중에 설명하는 대로 멤버십이 추가, 업데이트 또는 제거될 때 멤버십 이벤트가 트리거됩니다.
9.  나머지 옵션은 이 문서의 범위를 벗어나지만 자세한 내용은 [앱 컨텍스트 문서를](https://www.pubnub.com/docs/general/metadata/basics#configuration?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 참조하세요.
10.  **변경 사항 저장을** 클릭하여 업데이트된 변경 사항을 저장합니다.

사용자 앱 컨텍스트
----------

새 사용자가 애플리케이션에 등록되면 외부 ID 공급자를 통해 해당 사용자를 PubNub에 고유하게 식별할 수 있는 방법이 있는데, 이것이 바로 사용자의 클라이언트가 PubNub SDK를 초기화하는 데 사용할 [사용자 ID입니다](https://www.pubnub.com/docs/general/setup/users-and-devices?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko). PubNub 사용자 ID는 솔루션의 다른 곳에서 동일한 사용자를 식별하는 데 사용하는 ID와 다를 수 있으므로 '외부 ID' 필드에 이를 추적해 두는 것이 좋습니다.

사용자 이름, 이메일, 프로필 URL은 설명이 필요하지 않지만, 앱 컨텍스트 내에 보관하면 사용자가 이러한 필드 중 하나를 변경하면 모든 SDK에서 지원하는 앱 컨텍스트 이벤트를 사용하여 변경 사항을 모든 수신 클라이언트에 대규모로 전파할 수 있다는 이점이 있습니다.

### 앱 컨텍스트에서 사용자 표현을 만들려면 어떻게 해야 하나요?

앱 컨텍스트 사용자를 만드는 방법에는 두 가지가 있습니다.

1.  PubNub 관리자 포털에 있는 [BizOps 워크스페이스를](https://www.pubnub.com/docs/bizops-workspace/basics?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 사용하여 사용자를 생성하고 관리할 수 있습니다. 여기에는 코드가 필요하지 않으며 별도의 문서에 예제와 함께 프로세스가 설명되어 있습니다: [BizOps Workspace로 사용자 및 채널을 관리하는 방법](https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko)
2.  API는 사용자를 생성하기 위해 각 SDK를 통해 노출됩니다. 예를 들어, [Chat SD](https://www.pubnub.com/docs/chat/chat-sdk/overview?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko)K를 사용하는 경우 이 SDK는 앱 컨텍스트를 백그라운드에서 처리합니다. 예를 들어, Chat SDK의['createUser()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/create?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko)' 메서드는 사용자를 만들기 위해 JavaScript의 [setUUIDMetadata를](https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-user-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 내부적으로 호출합니다. Chat SDK가 아닌 다른 SDK를 사용하는 경우 앱 컨텍스트 데이터를 수정하기 위한 전용 API가 제공됩니다. 이미 자바스크립트 [setUUIDMetadata](https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-user-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) API에 대해 언급했지만 [Java](https://www.pubnub.com/docs/sdks/java/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Swift](https://www.pubnub.com/docs/sdks/swift/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Kotlin](https://www.pubnub.com/docs/sdks/kotlin/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Python](https://www.pubnub.com/docs/sdks/python/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Unity](https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 등 모든 API에 대한 동등한 API가 있습니다.

채널 앱 컨텍스트
---------

사용자가 채널을 구독하거나 게시할 때마다 PubNub는 자동으로 채널을 생성하지만, 채널은 애플리케이션에 의미 있는 무언가를 나타낼 수 있습니다(예: 채팅 앱에서 채널을 사용하여 소통하는 그룹 채팅이 있거나 라이브 이벤트에서 전용 채널을 사용하여 투표를 관리할 수 있습니다).

채널에 대해 앱 컨텍스트를 지정하면 해당 채널과 관련된 원하는 메타데이터가 저장되고 업데이트되며, 이러한 업데이트는 선택적으로 관심 있는 모든 클라이언트에 전파됩니다. 채널에 '사용자 A와 사용자 B 간의 채팅' 등의 이름을 지정할 수 있으며, 채널이 일부 문서 저장소와 관련되어 있을 경우 사용자 지정 'URI' 필드에서 추적할 수 있습니다.

### 앱 컨텍스트에서 채널 표현을 만들려면 어떻게 해야 하나요?

사용자와 마찬가지로 앱 컨텍스트 채널을 만드는 방법에는 두 가지가 있습니다.

1.  채널은 [BizOps 워크스페이스를](https://www.pubnub.com/docs/bizops-workspace/basics?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 사용하여 만들고 관리할 수 있습니다. 여기에는 코드가 필요하지 않으며 별도의 문서에 예제와 함께 프로세스가 설명되어 있습니다: [BizOps Workspace로 사용자 및 채널을 관리하는 방법](https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko)
2.  API는 각 SDK를 통해 노출되어 채널을 만들 수 있습니다. 예를 들어,['](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/create?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 채널[만들기](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/create?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) ' 메서드 패밀리는 커버 아래에서 JavaScript의 [setChannelMetadata(](https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-channel-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) )를 호출하여 앱 컨텍스트를 백그라운드에서 처리하는 등, [Chat SDK를](https://www.pubnub.com/docs/chat/chat-sdk/overview?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 사용하는 경우 앱 컨텍스트를 처리합니다. Chat SDK가 아닌 다른 SDK를 사용하는 경우에는 [JavaScript](https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-channel-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Java](https://www.pubnub.com/docs/sdks/java/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Swift](https://www.pubnub.com/docs/sdks/swift/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Kotlin](https://www.pubnub.com/docs/sdks/kotlin/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Python](https://www.pubnub.com/docs/sdks/python/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Unity](https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 등 앱 컨텍스트 데이터를 수정할 수 있는 전용 API가 제공됩니다.

멤버십 앱 컨텍스트
----------

사용자와 채널 모두에 대한 앱 컨텍스트를 정의했으면 이제 사용자가 채널의 ['멤버'](https://www.pubnub.com/docs/general/metadata/membership-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 인지 여부를 지정하여 둘 사이의 관계를 정의할 수 있습니다.

사용자가 채널에 가입하면 같은 채널의 다른 멤버에 대한 업데이트를 받을 수 있으며, 사용자가 `가입하거나` `탈퇴할` 때뿐만 아니라 해당 사용자의 앱 컨텍스트가 업데이트될 때마다(예: 이름을 업데이트할 때) 알림을 받을 수 있습니다.

**이는** 특히 채팅 앱 개발자에게**많은 가치를 제공하는 놀랍도록 강력한 메커니즘입니다**. 앱 컨텍스트를 사용하지 않는다면 모든 사용자를 직접 추적하고, 해당 사용자가 어떤 채널의 멤버였는지, 해당 사용자가 가입하거나 탈퇴할 때 같은 채널의 다른 모든 사람에게 알려야 합니다. 이 문제는 선형적으로 확장되지 않기 때문에 솔루션에 사용자가 많을수록 이 모든 정보를 중앙에서 관리하기가 더 어려워집니다.

앱 컨텍스트를 사용하면 채팅 클라이언트가 내부 상태를 유지하는 데 필요한 모든 정보를 제공받을 수 있으며, 무단 액세스를 방지하기 위해 PubNub [액세스 관리자를](https://www.pubnub.com/docs/general/security/access-control?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 사용하여 해당 데이터를 완벽하게 제어할 수 있습니다.

### 멤버십은 어떻게 만들 수 있나요?

사용자 및 채널과 마찬가지로 멤버십을 만드는 방법에는 두 가지가 있습니다.

1.  멤버십은 코드를 작성하지 않고도 [BizOps 워크스페이스를](https://www.pubnub.com/docs/bizops-workspace/basics?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 사용하여 만들고 관리할 수 있습니다. 자세한 내용은 문서의 [멤버십 관리](https://www.pubnub.com/docs/bizops-workspace/channel-management#manage-membership?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 섹션을 참조하세요.
2.  채널을 만들기 위한 API는 각 SDK를 통해 노출됩니다. 예를 들어['](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/create?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 채널[만들기](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/create?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) ' 메서드 제품군은 은밀하게 JavaScript의 [setMemberships를](https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-channel-memberships?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 호출하여 앱 컨텍스트를 처리합니다. Chat SDK가 아닌 다른 SDK를 사용하는 경우에는 [JavaScript](https://www.pubnub.com/docs/sdks/javascript/api-reference/objects#set-channel-memberships?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Java](https://www.pubnub.com/docs/sdks/java/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Swift](https://www.pubnub.com/docs/sdks/swift/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Kotlin](https://www.pubnub.com/docs/sdks/kotlin/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Python](https://www.pubnub.com/docs/sdks/python/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Unity](https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 등 앱 컨텍스트 데이터를 수정할 수 있는 전용 API가 제공됩니다.

앱 컨텍스트 변경 시 실시간 이벤트 수신
----------------------

앱 컨텍스트 데이터가 변경되면 애플리케이션이 변경 사항을 실시간으로 알려주는 이벤트를 수신하므로 서버에 업데이트를 폴링하지 않고도 반응형 앱을 만들 수 있습니다.

### PubNub SDK를 통해 앱 컨텍스트 변경 사항 수신(채팅 SDK 제외)

모든 PubNub SDK는 "이벤트 리스너"를 노출하며, 이 리스너를 통해 앱 컨텍스트 데이터가 변경될 때마다 실행되는 `오브젝트 이벤트를` 수신할 수 있습니다.

[이 블로그에서 이벤트 엔진 및 이벤트 리스너 업데이트에 대해](https://www.pubnub.com/blog/updates-to-the-event-engine-and-event-listeners/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 설명한 것처럼, 이 글을 쓰는 시점에서 일부 SDK는 새로운 형식의 '이벤트 리스너'를 지원한다는 약간의 미묘한 차이가 있다는 점에 유의하세요. 이벤트 리스너 형식에 관계없이 원칙은 동일하게 유지됩니다. 앱은 SDK에서 제공하는 리스너를 통해 앱 컨텍스트 이벤트를 수신하도록 등록해야 합니다.

[JavaScript SDK 문서에](https://www.pubnub.com/docs/sdks/javascript/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 자세히 설명된 대로 앱 컨텍스트 이벤트를 등록하는 방법은 다음과 같습니다:

```js
const channel = pubnub.channel('channel_1');
const subscription = channel.subscription();
subscription.onObjects = 
  (objectsEvent) => { console.log("Objects event: ", objectsEvent); };
```

다른 언어로 앱 컨텍스트 이벤트를 등록하는 방법을 설명하는 문서는 다음 위치에서 찾을 수 있습니다: [Java](https://www.pubnub.com/docs/sdks/java/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Swift](https://www.pubnub.com/docs/sdks/swift/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Kotlin](https://www.pubnub.com/docs/sdks/kotlin/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [Python](https://www.pubnub.com/docs/sdks/python/api-reference/publish-and-subscribe#add-listeners?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) (Python은 이벤트를 '메타데이터'라고 부르는 반면, 다른 SDK는 이벤트를 '오브젝트'라고 부름), [Unity](https://www.pubnub.com/docs/sdks/unity/api-reference/configuration#event-listeners?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 등.

작동하는 예제 및 대화형 데모는 [BizOps 워크스페이스로 사용자 및 채널을 관리하는 방법에](https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/#h-7?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 대한 문서를 참조하세요.

### PubNub Chat SDK를 통해 앱 컨텍스트 변경 사항 수신하기

PubNub Chat SDK는 [streamUpdates()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/channels/membership#get-updates?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) API 제품군을 통해 앱 컨텍스트 이벤트를 노출합니다.

다음은 웹용 [Chat SDK 데모 앱에서](https://github.com/PubNubDevelopers/Chat-SDK-Demo-Web) 가져온 몇 가지 예시입니다:

```js
//  Detect changes to the current User
useEffect(() => {
  return currentUser.streamUpdates(updatedUser => {
    if (updatedUser.name) {
      setName(updatedUser.name)
    }
    if (updatedUser.profileUrl) {
      setProfileUrl(updatedUser.profileUrl)
    }
  })
}, [currentUser])
```

```js
//  Detect changes to an array of Channels
useEffect(() => {
if (chat && privateGroups) {
    return Channel.streamUpdatesOn(privateGroups, channels => {
    //  The array of channels, privateGroups, has been updated
}
}, [chat, privateGroups])
```

Chat SDK의 간단한 '상태 확인' 샘플을 기반으로 한 작업 예제는 [BizOps 워크스페이스로 사용자 및 채널을 관리하는 방법에](https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/#h-10?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 대한 문서를 참조하세요.

앱 컨텍스트 및 PubNub 일루미네이트
----------------------

[PubNub Illuminate는](https://www.pubnub.com/products/illuminate/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 조직의 고유한 사용 사례에 맞게 사용자 지정할 수 있는 실시간 의사 결정 및 분석 제품입니다. 이 제품은 제품 관리자와 분석가를 염두에 두고 설계되어 다음과 같은 작업을 수행할 수 있습니다:

-   사용자 지정 실시간 집계 지표를 정의합니다.
-   조건 및 작업으로 의사 결정 규칙을 설정하고 배포합니다.
-   추적 중인 메트릭, 실행된 작업 및 그 결과를 즉시 시각화하세요.

엔지니어링 팀이 진행 중인 프로젝트에서 벗어나지 않고도 이 모든 작업을 실시간으로 수행할 수 있습니다.

PubNub 일루미네이트가 무엇이며 데이터에 대한 즉각적인 실행 가능한 인사이트를 제공하는 방법에 대한 자세한 설명은 이 글의 범위를 벗어나지만, 자세한 내용은 [문서와](https://www.pubnub.com/docs/illuminate/basics?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) [제품 개요를](https://www.pubnub.com/blog/real-time-decisioning-with-illuminate/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 참조하시기 바랍니다.

요약: 애플리케이션과 관련된 **지표**, 즉 측정하고자 하는 항목을 정의합니다. 예를 들어 자산 추적 시나리오에서는 주문이 접수된 후 시간이 될 수 있습니다. 해당 지표와 관련된 특정 [**조건**](https://www.pubnub.com/docs/illuminate/decisions/basics#conditions?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) (예: '주문 후 시간'이 특정 값을 초과할 수 있음)이 충족되면 어떤 **조치를** 취할 수 있습니다.

어떤 [조치를](https://www.pubnub.com/docs/illuminate/decisions/basics#actions?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 취할지는 유연하지만 가능한 조치 중 세 가지는 앱 컨텍스트와 관련이 있습니다:

![How-to - Use App Context - Image 02](https://www.pubnub.com/cdn/3prze68gbwl1/A2XZHFCSuF3nUxDjLDFjX/9b018c14ac44df085c2ad40b40619602/illuminate_app_context.png "How-to - Use App Context - Image 02")

### PubNub 일루미네이트로 사용자 업데이트

사전 정의되거나 사용자 정의된 사용자 메타데이터를 설정할 수 있습니다. 아래 스크린샷은 ID가 123인 사용자의 상태가 정적 값인 '새 상태'로 설정되어 있지만 **작업을** 트리거한 **조건에** 따라 동적 값을 설정할 수도 있습니다.

![How-to - Use App Context - Image 03](https://www.pubnub.com/cdn/3prze68gbwl1/4Rx8xBy406xLFdGoA38Ll2/f7b62aa24fdba0df4cec6d035a8e5812/illuminate_app_context_user.png "How-to - Use App Context - Image 03")

### PubNub 일루미네이트로 채널 업데이트

사전 정의 또는 사용자 지정 채널 메타데이터를 설정할 수 있습니다. 아래 스크린샷은 ID가 123인 채널의 이름이 정적 값인 '새 이름'으로 설정되어 있지만 **작업을** 트리거한 **조건에** 따라 동적 값을 설정할 수도 있습니다.

![How-to - Use App Context - Image 04](https://www.pubnub.com/cdn/3prze68gbwl1/5bVUjl1DTF1IENrhLv6T9v/b88e265164dce7dd1f39ed5437467611/illuminate_app_context_channel.png "How-to - Use App Context - Image 04")

### 펍넙 일루미네이트로 멤버십 업데이트하기

사전 정의 또는 사용자 정의 멤버십 메타데이터를 설정할 수 있습니다. 아래 스크린샷은 사용자 ID 123의 채널 123 멤버십 상태가 정적 값인 '새 상태'로 설정된 것을 보여줍니다. **작업을** 트리거한 **조건에** 따라 동적 값을 설정할 수도 있습니다.

![How-to - Use App Context - Image 05](https://www.pubnub.com/cdn/3prze68gbwl1/ZfrPMbbrj55hsyGpihCC3/44b519ccedde12e574bd44835ce799a3/illuminate_app_context_membership.png "How-to - Use App Context - Image 05")

앱 컨텍스트 및 PubNub 함수
------------------

펍넙은 펍넙 플랫폼에서 발생하는 이벤트를 캡처할 수 있는 함수를 제공합니다. 함수를 사용하면 코드를 작성하거나 기존 통합을 활용하여 데이터를 변환, 경로 변경, 보강, 필터링 및 집계할 수 있습니다. 펍넙 함수에 대한 자세한 개요는 [함수 설명서를](https://www.pubnub.com/docs/serverless/functions/overview?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 참조하시기 바라며, 이 글에서는 펍넙 함수가 앱 컨텍스트와 어떻게 연관되는지 살펴보겠습니다.

### PubNub 함수 내에서 앱 컨텍스트 업데이트하기

함수가 실행되는 환경에서는 [PubNub 모듈에](https://www.pubnub.com/docs/serverless/functions/functions-apis/pubnub-module?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 액세스할 수 있습니다. 이 모듈은 키 집합의 앱 컨텍스트에 대한 전체 액세스 권한을 가지며, 문서에서 가져온 몇 가지 예는 다음과 같습니다. :

[사용자 앱 컨텍스트 메타데이터](https://www.pubnub.com/docs/serverless/functions/functions-apis/pubnub-module#get-user-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 가져오기 예제

```js
export default (event) => {
  const pubnub = require('pubnub');

  return pubnub.objects.getUUIDMetadata({
    uuid: 'my-uuid',
    include: {
      customFields: false,
    },
  })
  .then((resp) => {
    console.log(resp);
    return event.ok('Fetched UUID metadata successfully.');
  })
  .catch((err) => {
    console.log(err);
    return event.abort('Failed to fetch UUID metadata');
  });
};
```

[채널 앱 컨텍스트 메타데이터 설정](https://www.pubnub.com/docs/serverless/functions/functions-apis/pubnub-module#set-channel-metadata?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 예제

```js
export default (event) => {
  const pubnub = require('pubnub');

  return pubnub.objects.setChannelMetadata({
    channel: 'my-channel',
    data: {
      name: 'channel-name',
      description: 'What a great channel',
      custom: {
        foo: 'bar',
      },
    },
    include: {
      customFields: false,
    },
  })
  .then((resp) => {
    console.log(resp);
    return event.ok('Set channel metadata successfully.');
  })
  .catch((error) => {
    console.log(err);
    return event.abort('Failed to set channel metadata.');
  });
};
```

포괄적인 코드 예제는 [PubNub 모듈](https://www.pubnub.com/docs/serverless/functions/functions-apis/pubnub-module?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 설명서를 참조하세요.

### 앱 컨텍스트가 변경될 때 PubNub 함수 트리거하기

[이벤트 유형 문서에](https://www.pubnub.com/docs/serverless/functions/overview#event-types?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 자세히 설명된 대로 함수를 트리거할 수 있는 다양한 이벤트 유형이 있습니다. 여기에는 메시지와 신호가 전송되는 시기를 감지하는 기능, 존재 이벤트 발생 후 함수를 트리거하는 기능, 지정된 간격으로 또는 필요에 따라 함수를 실행하는 기능 등이 포함됩니다. 현재로서는 앱 컨텍스트 업데이트 후 함수를 실행할 수 **없지만**, 애플리케이션에 이 기능이 필요한 경우 [지원팀에](https://support.pubnub.com/hc/en-us?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 문의하시면 사용 사례를 안내해 드릴 것입니다.

다음 단계
-----

앱 컨텍스트가 실제로 작동하는 모습을 보려면, 서버리스 스토리지를 사용하는 채팅 앱이 어떤 모습인지 보여주기 위해 채팅 SDK와 함께 앱 컨텍스트를 사용하는 [채팅 데모를](https://www.pubnub.com/demos/chat/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 확인하세요. 채팅 데모에서는 사용자 및 채널 메타데이터를 설정하고 이러한 변경 사항이 다른 청취자 및 구성원에게 실시간으로 전파되는 것을 확인할 수 있습니다.

또한 앱 컨텍스트에 따라 달라지는 BizOps 워크스페이스에 대한 3부 시리즈에서 관련 방법을 살펴보세요: [사용자 및 채널 관리하기](https://www.pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [대화 모니터링 및 중재하기](https://www.pubnub.com/how-to/monitor-and-moderate-conversations-with-bizops-workspace/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko), [채팅을 안전하게 중재](https://www.pubnub.com/how-to/securely-moderate-chat-and-users/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko)하기 등을 다루고 있습니다.

마지막으로, 개발자팀( [devrel@pubnub.com](mailto:devrel@pubnub.com) )에 문의하거나 [지원팀에](https://support.pubnub.com/hc/en-us?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 연락하여 PubNub 개발과 관련하여 도움이 필요하면 언제든지 문의하세요.

펍넙이 어떤 도움을 드릴 수 있나요?
====================

이 문서는 원래 [PubNub.com에](https://www.pubnub.com/how-to/use-app-context/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 게시되었습니다.

저희 플랫폼은 개발자가 웹 앱, 모바일 앱 및 IoT 디바이스를 위한 실시간 인터랙티브를 구축, 제공 및 관리할 수 있도록 지원합니다.

저희 플랫폼의 기반은 업계에서 가장 크고 확장성이 뛰어난 실시간 에지 메시징 네트워크입니다. 전 세계 15개 이상의 PoP가 월간 8억 명의 활성 사용자를 지원하고 99.999%의 안정성을 제공하므로 중단, 동시 접속자 수 제한 또는 트래픽 폭증으로 인한 지연 문제를 걱정할 필요가 없습니다.

PubNub 체험하기
-----------

[라이브 투어를](https://www.pubnub.com/tour/introduction/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 통해 5분 이내에 모든 PubNub 기반 앱의 필수 개념을 이해하세요.

설정하기
----

PubNub [계정에](https://admin.pubnub.com/signup/?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 가입하여 PubNub 키에 무료로 즉시 액세스하세요.

시작하기
----

사용 사례나 [SDK에](https://www.pubnub.com/docs?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 관계없이 [PubNub 문서를](https://www.pubnub.com/docs?utm_source=devto&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 통해 바로 시작하고 실행할 수 있습니다.