# 클라이언트 SDK와 서버 SDK

이 문서는 클라이언트 및 서버 측 SDK에 대해 설명하고 사용할 SDK 유형을 결정하는데 도움을 줍니다. SDK가 제공하는 기능을 클라이언트 또는 서버 중 어디에 구현하는 것이 적합할지 이해하는 것이 중요합니다.

<table><thead><tr><th width="158.19921875">유형</th><th>설명</th></tr></thead><tbody><tr><td>클라이언트 측</td><td><p>브라우저, 모바일 앱 등 사용자 디바이스에서 SDK 기능이 실행됩니다.</p><p><code>JavaScript</code>, <code>Android</code>, <code>iOS</code>, <code>React</code>, <code>React Native</code>, <code>Flutter</code>, <code>Unity</code> SDK 등이 해당됩니다.</p></td></tr><tr><td>서버 측</td><td><p>서비스를 제공하는 서버에서 SDK 기능이 실행됩니다.</p><p><code>Java/Kotlin</code>, <code>Python</code>, <code>Node.js</code>, <code>PHP</code>, <code>Ruby</code> SDK 등이 해당됩니다.</p></td></tr></tbody></table>

### 클라이언트 측 SDK

![](/files/3ppYJPm6G4G33JUOuAFy)

웹 브라우저, 모바일 앱 등 사용자의 디바이스에서 SDK의 기능이 실행되며 디바이스와 핵클 서버가 직접 통신합니다.

다음과 같은 경우 클라이언트 측 SDK의 사용을 권장합니다.

* 버튼 색상, 레이아웃 변경 등 시각적인 요소의 변경을 테스트하기 위해 테스트 그룹을 분배하는 경우
* 클릭, 스크롤 등 서버와 통신 없이 클라이언트에서 수행되는 사용자 이벤트를 전송해야 하는 경우
* 비즈니스 로직이 클라이언트에 집중되어 있는 경우

### 서버 측 SDK

![2264](/files/6UfhF1DkLQFs3kbB2f0F)

서버에서 SDK의 기능이 실행되며 서버 대 서버로 통신을 합니다.

다음과 같은 경우 서버 측 SDK의 사용을 권장합니다.

* 검색 알고리즘 개선, 추천 로직 변경 등 백엔드 시스템의 변경을 테스트하기 위해 테스트 그룹을 분배하는 경우
* 회원가입, 구매완료 등 서버에서 상태를 확정하는 사용자의 이벤트를 전송해야 하는 경우


---

# Agent Instructions: 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:

```
GET https://docs.hackle.io/development-guide/sdk/client-vs-server.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
