> For the complete documentation index, see [llms.txt](https://docs.hackle.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hackle.io/development-guide/sdk/evaluation-mode.md).

# 평가 방식

핵클 SDK는 사용자가 A/B 테스트의 어떤 그룹에 속하는지, 기능 플래그가 켜져 있는지, 어떤 원격 구성 값을 사용하는지를 **평가(Evaluation)** 과정을 통해 결정합니다.\
평가는 사용자 정보와 워크스페이스 설정 정보를 입력으로 받아 분배 결과를 출력합니다.

핵클 SDK는 평가를 수행하는 위치에 따라 두 가지 평가 방식을 제공합니다.\
평가 방식은 SDK 초기화 시 선택하며, 별도로 설정하지 않으면 로컬 평가로 동작합니다.

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><i class="fa-mobile">:mobile:</i></td><td><strong>로컬 평가</strong></td><td>SDK가 사용자 디바이스에서 직접 평가합니다.<br>기본 평가 방식입니다.</td><td><a href="/pages/TzEazcgoPvplv6yx9JR5">/pages/TzEazcgoPvplv6yx9JR5</a></td></tr><tr><td><i class="fa-server">:server:</i></td><td><strong>원격 평가</strong></td><td>핵클 서버가 미리 평가한 결과를 SDK가 조회합니다.</td><td><a href="/pages/SHlv75VEpmA22qytjROJ">/pages/SHlv75VEpmA22qytjROJ</a></td></tr></tbody></table>

### 두 방식의 차이

<table><thead><tr><th width="191.1796875">구분</th><th>로컬 평가</th><th>원격 평가</th></tr></thead><tbody><tr><td>평가 위치</td><td>사용자 디바이스 (SDK)</td><td>핵클 서버</td></tr><tr><td>대시보드 변경사항 반영</td><td><p>SDK 초기화 시,</p><p>SDK fetch 시</p></td><td>SDK 초기화 시,<br>사용자 정보가 업데이트 될 시</td></tr><tr><td>분배에 사용되는 정보</td><td>디바이스에 저장된 사용자 정보 기반</td><td>서버에 저장된 사용자 정보 기반</td></tr><tr><td>분배/결정 호출 시 동작</td><td>저장된 설정 정보를 기반으로<br>SDK가 직접 평가</td><td>저장된 평가 결과를 조회</td></tr><tr><td>레이턴시</td><td>네트워크 통신 없이 평가</td><td>사용자 정보가 바뀌지 않았다면 네트워크 통신 없이 처리<br>사용자 정보가 바뀌면 서버와 통신해 다시 평가</td></tr><tr><td>지원 SDK</td><td>모든 SDK</td><td>일부 클라이언트 SDK</td></tr></tbody></table>

{% hint style="success" %}
두 방식 모두 분배/결정 호출 시점에는 네트워크 호출이 발생하지 않으므로 속도 저하 없이 처리됩니다.

자세한 내용은 [SDK 레이턴시](/development-guide/sdk/sdk-latency.md) 문서를 참고 바랍니다.
{% endhint %}

{% hint style="info" %}

### 어떤 방식을 선택해야 하나요?

기본 평가 방식은 **로컬 평가**이며, 대부분의 경우 로컬 평가가 적합합니다.

* 앱 버전, 디바이스 OS, 클라이언트에서 설정한 사용자 속성 등 디바이스가 가진 정보로 타겟팅하는 경우
* 로그인 직후 화면처럼 사용자 정보가 바뀌는 시점에 분배 결과가 필요한 경우
* pagePath 등 화면 기반으로 타겟팅이 필요한 경우

핵클 서버에 저장된 사용자 정보를 기준으로 분배해야 하는 경우 **원격 평가**를 사용합니다.

* 서버에서 HTTP API를 이용해 사용자 속성을 업데이트하고 해당 정보로 타겟팅하는 경우
* 구독 정보, 멤버십 등급 등 핵클 서버에 1회성으로 속성을 업데이트하고 해당 정보로 타겟팅하는 경우
  {% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.hackle.io/development-guide/sdk/evaluation-mode.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
