Skip to content

Sync System

good-bad-code edited this page Sep 20, 2026 · 1 revision

🔄 Sync System

Entry-Sync의 데이터 동기화 시스템과 전체적인 동기화 흐름을 설명합니다.


🌐 Overview

Entry-Sync는 Chrome Extension을 통해 Entry 환경에서 발생하는 데이터를 처리하고, 서버와의 실시간 통신을 이용하여 연결된 클라이언트 간 데이터를 동기화하는 것을 목표로 합니다.

전체적인 흐름은 다음과 같습니다.

┌─────────────────────┐
│     Entry Site      │
└──────────┬──────────┘
           │
           ▼
┌─────────────────────┐
│    Entry-Sync       │
│  Chrome Extension   │
└──────────┬──────────┘
           │
           │ WebSocket / HTTPS
           ▼
┌─────────────────────┐
│    Sync Server      │
└──────────┬──────────┘
           │
           ▼
┌─────────────────────┐
│ Connected Clients   │
└─────────────────────┘

🔌 Client

Entry-Sync Client는 Chrome Extension 형태로 동작합니다.

주요 역할:

  • Entry 페이지와 상호작용
  • 동기화할 데이터 확인
  • 서버와 연결
  • 데이터 송수신
  • 동기화 상태 관리

관련 소스 코드는 extension/ 디렉터리에서 확인할 수 있습니다.


🌐 Connection

Entry-Sync는 서버와의 통신을 통해 클라이언트 간 데이터를 전달합니다.

일반적인 연결 흐름은 다음과 같습니다.

Extension
    │
    │ Connect
    ▼
Sync Server
    │
    │ Connection established
    ▼
Extension

실시간 통신이 필요한 경우 WebSocket 기반 연결을 사용할 수 있습니다.

보안이 필요한 통신에서는 HTTPS / WSS와 같은 암호화된 연결을 사용합니다.


🔄 Synchronization Flow

데이터 변경이 발생하면 다음과 같은 과정을 거쳐 동기화가 이루어집니다.

1. Entry에서 데이터 변경
          ↓
2. Entry-Sync가 변경 사항 확인
          ↓
3. Sync Server로 데이터 전달
          ↓
4. 서버에서 연결된 클라이언트 확인
          ↓
5. 다른 클라이언트에 변경 사항 전달
          ↓
6. 각 클라이언트에서 데이터 반영

간단하게 표현하면:

Client A
   │
   │ Change
   ▼
Sync Server
   │
   ├──────────────► Client B
   │
   └──────────────► Client C

👥 Multi-Client Sync

여러 클라이언트가 동일한 동기화 환경에 연결되어 있을 수 있습니다.

예:

┌─────────────┐
│  Client A   │
└──────┬──────┘
       │
       │
       ▼
┌─────────────┐
│ Sync Server │
└──────┬──────┘
       │
       ├──────────────┐
       │              │
       ▼              ▼
┌─────────────┐  ┌─────────────┐
│  Client B   │  │  Client C   │
└─────────────┘  └─────────────┘

한 클라이언트에서 변경 사항이 발생하면 서버를 통해 다른 연결된 클라이언트에 전달될 수 있습니다.


💾 Data Persistence

동기화 데이터의 영구 저장 여부와 저장 방식은 Entry-Sync의 서버 구현에 따라 달라질 수 있습니다.

서버에서 별도의 저장소를 사용하는 경우:

Client
  ↓
Sync Server
  ↓
Persistent Storage

저장소를 사용하지 않는 실시간 데이터의 경우:

Client A
   ↓
Sync Server
   ↓
Client B

와 같이 실시간 전달만 수행할 수도 있습니다.


🔐 Security

동기화 시스템에서는 다음과 같은 보안 사항을 고려해야 합니다.

Encrypted Connection

가능한 경우 HTTPS / WSS를 사용하여 네트워크 통신을 암호화합니다.

Sensitive Data

다음과 같은 정보는 소스 코드나 공개 Repository에 포함하지 않습니다.

API Key
Access Token
Password
Secret
Private Key

Client-side Security

Chrome Extension에 민감한 인증 정보가 불필요하게 노출되지 않도록 주의합니다.

보안 취약점은 공개 Issue나 Discussion에 작성하지 말고 Security Policy를 확인해주세요.


⚠️ Connection Errors

동기화가 정상적으로 이루어지지 않는 경우 다음 항목을 확인해주세요.

1. Internet Connection

인터넷 연결 상태를 확인합니다.

2. Extension

Chrome Extension이 정상적으로 활성화되어 있는지 확인합니다.

chrome://extensions/

3. Server Connection

서버 연결이 정상적으로 이루어졌는지 확인합니다.

4. Console

Chrome Developer Tools의 Console에서 관련 오류가 발생했는지 확인합니다.

5. Extension Reload

Extension을 다시 로드한 후 문제가 해결되는지 확인합니다.


🧪 Debugging

개발 중 동기화 문제를 확인할 때는 다음을 확인합니다.

Entry
 ↓
Extension
 ↓
Network
 ↓
Sync Server
 ↓
Other Client

각 단계에서 데이터가 정상적으로 전달되는지 확인하면 문제가 발생한 위치를 쉽게 찾을 수 있습니다.


🏗️ Related Components

Sync System과 관련된 주요 구성 요소:

Entry
│
├── Chrome Extension
│
├── Sync Server
│
├── WebSocket / HTTPS
│
└── Storage

각 구성 요소의 자세한 설명은 다음 문서를 참고해주세요.


📌 Note

Entry-Sync의 동기화 구조는 개발 과정에서 변경될 수 있습니다.

실제 구현과 문서의 내용이 다른 경우 최신 소스 코드를 기준으로 확인해주세요.