Nexia 시스템 개요
App 요청이 Shell·SDK·Core를 거쳐 실행되는 과정과 개발자가 수정할 영역을 설명합니다.
Nexia 시스템 개요
App이 실행되는 흐름
App은 Nexia의 Laravel 호스트 안에서 실행하는 독립 버전 Composer 패키지입니다. 개발자는 업무 로직과 React 화면을 작성하고, 호스트 기능은 SDK로 호출합니다. 호출을 처리하는 구현은 Core가 제공합니다.
App 열기 → Shell이 화면 로드 → 화면에서 API 요청 → Core가 테넌트·행위자 확인 → App이 권한과 업무 규칙 검사 후 처리 → 응답으로 화면 갱신
| 영역 | 담당 기능 | 개발자가 수정할 곳 |
|---|---|---|
| App | 모델·업무 규칙·Policy·API·화면·번역 | 해당 App 저장소 |
| App SDK | 공용 서비스·컴포넌트·타입·contribution 인터페이스 | App의 import와 선언. 보통 SDK 소스 수정은 불필요 |
| Core | 테넌트 격리·인증·권한 처리 기반·공용 런타임·화면 조합 | 일반적인 App 기능 추가에는 수정 불필요 |
App 패키지 만들기 다음에 Resource 만들기를 진행하세요. 플랫폼 기능이 필요하면 App SDK 사용하기에서 사용할 기능을 찾습니다.
Note 하나를 저장하기까지
실습 생성기는 Workshop App 안에 Note 모델, Policy, controller, Resource
Module, Route, 프런트엔드 파일을 만듭니다. 같은 Resource를 다루지만 각 파일이
맡는 일은 다릅니다.
| 단계 | 처리 주체 | 결과 |
|---|---|---|
| 노트 화면 열기 | Shell과 App Surface | 등록한 React 화면 표시 |
| 목록 요청 | App Surface와 controller | 목록 조건을 백엔드에 전달 |
| 요청자 확인 | Core HTTP 미들웨어 | 테넌트·행위자·해당 요청 컨텍스트 확립 |
| 볼 수 있는 노트 조회 | SDK 권한 계약을 쓰는 App 쿼리 | 허용된 레코드만 응답 |
| 노트 저장 | App 입력 검증·Policy·모델 | 업무 규칙을 검사하고 테넌트 데이터 저장 |
| 화면 갱신 | App 쿼리와 화면 | 실제 저장 결과 표시 |
Resource descriptor는 이 기능의 공개 메타데이터를 선언합니다. 업무 규칙을 작성하거나 App 개요 화면을 구성하거나 서버 입력 검증을 대신하지 않습니다. 발견 과정은 확장 모델, 화면 구현은 App 화면 만들기에서 이어집니다.
Central과 테넌트
| 실행 영역 | 담당 |
|---|---|
| Central | 공개 사이트·개발자 문서·테넌트 생성·플랫폼 관리 |
| 테넌트 | 고객별 Shell·App API·업무 데이터·권한 |
App 화면은 테넌트 도메인에서 엽니다. Central 화면에는 테넌트 업무 컨텍스트가 자동으로 생기지 않습니다. 현재 런타임은 테넌트별 데이터베이스에 업무 데이터를 저장하며, 조직 선택은 그 테넌트 안에서만 적용됩니다. 테넌트와 컨텍스트에서 구체적인 범위를 확인하세요.
App은 Laravel 런타임을 함께 사용합니다. App 설치마다 별도 서버가 생기지는 않습니다. 선택 서비스인 Agent Gateway는 별도 런타임에서 위임된 권한으로 보호된 테넌트 API를 호출합니다. 영속 업무 데이터는 PostgreSQL에 두고, Redis·검색 인덱스·브라우저 상태는 각각 필요한 보조 역할을 맡습니다.
패키지 경계 지키기
PHP 호스트 계약은 Nexia\*로 사용합니다. 프런트엔드 타입과 순수 유틸리티는
@nexia/sdk, 호스트에 연결된 컴포넌트·훅·서비스는 /host에서
가져옵니다. App은 Core의 App\*, Core 프런트엔드 별칭, 다른 App을 import하지 않습니다.
다른 App의 데이터가 필요하면 App 간 연동 방식 선택하기에서 참조와 이벤트 중 맞는 경로를 고르세요. 호스트 서비스 계약은 특정 App이 없어도 의미가 유지되어야 합니다.
생성기가 표준 연결을 준비해도 업무 판단은 App이 맡습니다. 로그인·설치·메뉴 표시는 권한 부여가 아닙니다. 판단 기준은 권한과 역할에 있습니다.
더 알아보기
- App Package 구조 — 수정할 파일의 위치와 역할.
- 테넌트 웹 런타임 — 브라우저의 Route 처리.
- Octane·FrankenPHP 런타임 — 오래 실행되는 PHP 프로세스.
- App 라이프사이클 — 패키지 로드·활성화·설치·접근의 차이.