1-1. 플러그인 개요

시냅스 플러그인의 역할, 시스템 구조, 종류, 실행 방식

플러그인이란?


Synapse의 데이터 입출력과 모델 기능은 모두 플러그인으로 제공됩니다.

플러그인은 하나의 AI 작업을 담은 독립 부품입니다. 사진에 라벨을 붙이는 어노테이션, 라벨 데이터로 모델을 학습(training)하는 작업, 학습된 모델로 새 데이터를 추론(inference)하는 작업 등이 각각 플러그인 단위로 등록·실행됩니다.


시스템 구조


플러그인 시스템은 Backend, SDK, Agent 세 구성요소가 역할을 나눠 맡습니다.

이 역할 분리가 설계의 핵심입니다. 개발자는 주로 SDK 규격에 맞춰 코드를 작성하고, Agent 위에서 실행되는 결과를 확인하게 됩니다.

구성요소역할기술
Backend어떤 플러그인이 있는지, 누가 쓸 수 있는지 관리합니다. 작업 주문을 접수하고 진행·결과를 추적하며, 테넌트(팀/회사)별 권한과 데이터를 분리합니다.Django
SDKBackend와 Agent가 공유하는 공통 규격입니다. 입력·출력·진행률 보고 방식을 정의하는 라이브러리이며, 직접 실행하는 프로그램은 아닙니다.Python 라이브러리
AgentBackend에서 받은 작업을 실제로 실행합니다. 플러그인 코드를 내려받아 캐시하고, 무거운 계산은 Ray·Docker로 격리 실행합니다.Ray + Docker

역할이 분리되어 있어 한쪽을 바꿔도 다른 쪽이 쉽게 흔들리지 않습니다. 무거운 작업은 격리 실행되므로 하나가 실패해도 전체 시스템이 멈추지 않습니다.

작업량이 늘면 Agent와 GPU 서버를 늘려 수평 확장하며, 데이터와 작업은 테넌트 단위로 격리됩니다.

flowchart LR
    User([사용자 / 개발자])
    subgraph PS["Synapse Plugin System"]
        BE["Backend<br/>주문 접수 · 관리"]
        SDK["SDK<br/>공통 규격 · 라이브러리"]
        AG["Agent<br/>실제 실행"]
    end
    Worker["Ray + Docker<br/>실제 계산이 일어나는 곳"]
    User -->|"플러그인 등록 / 작업 요청"| BE
    User -.->|"규격에 맞춰 플러그인 제작"| SDK
    BE -.->|"규격 공유"| SDK
    AG -.->|"규격 공유"| SDK
    BE -->|"작업 전달"| AG
    AG -->|"진행률 · 결과 회신"| BE
    AG -->|"실행"| Worker
📘

용어 정리

  • 플러그인 : 하나의 AI 작업 부품입니다.
  • 테넌트 : 작업과 데이터를 분리하는 팀/회사 단위입니다.
  • Ray : 여러 컴퓨터에 일을 나눠 돌리는 분산 엔진입니다.
  • Docker : 프로그램을 격리된 상자에 담아 실행하는 기술입니다.

플러그인의 종류


플러그인은 세 카테고리로 나뉩니다.

같은 “내보내기” 버튼이라도 어떤 플러그인을 고르느냐에 따라 산출물 형식이 달라집니다. 즉, 형식을 고르는 것이 아니라 플러그인을 고르는 것입니다.

개발 시 가장 먼저 정하는 것도 이 카테고리입니다.

종류 (코드값)하는 일
임포트 (upload)스토리지의 파일을 Synapse 데이터로 임포트합니다.이미지 폴더 업로드, 비디오→프레임 추출 업로드, PDF→이미지 변환 업로드
익스포트 (export)라벨링 결과를 외부 형식으로 내보냅니다.COCO / YOLO / Pascal VOC / 사내 포맷 JSON
모델 (neural_net)딥러닝 모델 학습·배포·추론을 수행합니다.객체 탐지 학습, 음성→텍스트(STT) 추론

실행 방식과 구현 영향


모든 작업을 똑같이 실행하면 비효율적이므로, 시스템은 작업 성격에 따라 실행 방식을 골라 씁니다.

이 선택은 개발자가 작성하는 플러그인 코드에 영향을 줍니다.

실행 방식언제 쓰나구현 형태
Local개발·테스트 시, 즉시 결과가 필요할 때 사용합니다.코드 서버 내 즉시 실행
Task짧고 자주 반복되는 가벼운 작업에 사용합니다.에이전트에서 빠르게 처리
Job몇 시간씩 걸리는 학습·대량 처리에 사용합니다.에이전트에서 비동기 처리
Serve실시간으로 들어오는 추론 요청에 사용합니다.앱을 배포하여 모델을 로딩 및 서브

가벼운 작업은 빠르게, 무거운 작업은 격리해서 동기식/비동기식 성격에 맞게 처리됩니다.

실무적으로 익스포트·학습은 Job, 실시간 추론은 Serve로 구현하게 됩니다. 이 차이가 2.3의 코드 구조를 가릅니다.

📘

액션별 파일과 실행 방식

각 액션은 대응하는 파일이 있어야 실행됩니다.

예를 들어 train.py는 학습, inference.py는 추론, test.py는 환경 점검, deployment.py는 배포에 사용됩니다.

config.yaml에서 각 액션의 entrypoint가 해당 파일의 클래스를 가리키며, 그 액션의 성격에 맞는 실행 방식으로 동작합니다.



Did this page help you?