# 아키텍처

이 페이지는 개발자와 고급 사용자를 위한 WCPOS의 기술 아키텍처를 설명합니다.

## 두 부분 시스템[​](#two-part-system "두 부분 시스템으로 직접 링크")

WCPOS는 두 부분 시스템으로 설계되었습니다:

1. **PHP 플러그인:** 서버에 호스팅되는 이 비교적 작은 플러그인은 [WooCommerce REST API](/ko/reference/wc-rest-api.md)를 확장합니다.

2. **JavaScript 클라이언트:** 이 클라이언트는 로컬 브라우저나 데스크탑 앱에서 실행되며, 이후 iOS 및 Android 앱에서도 사용됩니다.

이를 두 개의 별도 세계로 생각할 수 있습니다:

* \_PHP 세계\_는 WordPress와 WooCommerce를 사용하여 데이터 관리가 이루어지는 곳입니다.
* \_JavaScript 세계\_는 WooCommerce 상점을 로컬에서 복제하며, 빠른 검색 및 오프라인 사용을 위해 최적화되어 있습니다.

SVG not found

## 데이터 동기화[​](#data-synchronization "데이터 동기화으로 직접 링크")

데이터는 [WooCommerce REST API](https://woocommerce.github.io/woocommerce-rest-api-docs/)를 사용하여 WooCommerce에서 가져옵니다. 이는 POS가 모든 제품, 변형, 제품 카테고리, 고객, 세금 비율 등을 다운로드하여 로컬에 저장해야 함을 의미합니다.

처음에는 시간이 걸릴 수 있지만, 다운로드가 완료되면 서버에서 계속해서 가져올 필요 없이 즉시 사용할 수 있습니다.

### 무엇이 동기화됩니까?[​](#what-gets-synced "무엇이 동기화됩니까?으로 직접 링크")

* 제품 및 변형
* 제품 카테고리 및 태그
* 고객
* 세금 비율 및 세금 클래스
* 결제 게이트웨이 (체크아웃용)
* 주문 (Pro에서의 주문 역사용)

### 동기화 전략[​](#sync-strategy "동기화 전략으로 직접 링크")

WCPOS는 증분 동기화 전략을 사용합니다:

1. **초기 동기화:** 첫 로드 시 모든 데이터를 다운로드합니다.
2. **증분 업데이트:** 마지막 동기화 이후 변경 사항만 가져옵니다.
3. **백그라운드 동기화:** 주기적으로 업데이트를 확인합니다.
4. **수동 동기화:** 사용자가 언제든지 동기화를 트리거할 수 있습니다.

## 아키텍처 장단점[​](#architecture-pros-and-cons "아키텍처 장단점으로 직접 링크")

| 장점 😊                                                       | 단점 😟                                                |
| ------------------------------------------------------------- | ------------------------------------------------------ |
| 로컬 데이터 검색이 즉시 이루어짐                              | 데이터 동기화 유지가 어려움                            |
| 오프라인에서 사용 가능한 캐시 데이터                          | WooCommerce REST API의 제약을 받음                     |
| 데스크탑, iOS 및 Android에 대한 더 나은 네이티브 앱 생성 가능 | WordPress 테마 및 훅이 POS 앱을 커스터마이즈할 수 없음 |

## 로컬 데이터베이스[​](#local-database "로컬 데이터베이스으로 직접 링크")

JavaScript 클라이언트는 IndexedDB라는 브라우저 기반 데이터베이스에 데이터를 저장합니다. 이는 다음과 같은 이점을 제공합니다:

* **지속성:** 데이터가 브라우저 재시작 후에도 유지됨
* **성능:** 네트워크 지연 없이 빠른 쿼리
* **오프라인 브라우징:** 인터넷 없이도 캐시 데이터 접근 가능

## 체크아웃 아키텍처[​](#checkout-architecture "체크아웃 아키텍처으로 직접 링크")

체크아웃 프로세스는 WooCommerce 주문 결제 페이지를 로드하는 iframe/webview를 사용합니다. 이 접근 방식은:

* **기존 결제 게이트웨이를 활용:** 모든 WooCommerce 결제 게이트웨이가 POS에서 작동할 수 있음
* **보안 유지:** 결제 처리는 WooCommerce의 안전한 인프라를 통해 이루어짐
* **복잡성 감소:** 결제 게이트웨이 통합을 재구현할 필요 없음

## API 확장[​](#api-extensions "API 확장으로 직접 링크")

PHP 플러그인은 POS 전용 기능을 위한 추가 엔드포인트로 WooCommerce REST API를 확장합니다. 자세한 내용은 [WooCommerce REST API](/ko/reference/wc-rest-api.md)를 참조하십시오.

***
