4.4 KiB
4.4 KiB
| domain | last_rule_review_commit | last_rule_updated_at |
|---|---|---|
| core-service | 8a7115d9c8 |
2026-06-01 |
core-service
목적 / 책임
Mattermost 서버 repository clone을 담당한다. packages/messaging_flutter 검증에 쓰이더라도 nexo 독자 서버 제품으로 재정의하지 않고, 원본 repository 단위 갱신이 가능한 상태를 유지하는 것이 중요하다.
포함 경로
services/core/— Mattermost 서버 repository cloneservices/core/server/— Mattermost server moduleservices/core/webapp/— Mattermost webapp moduleservices/core/api/— API reference toolingservices/core/compose/— local core runtime Docker Composeservices/core/e2e-tests/,services/core/tools/— core 검증 및 보조 도구services/core/UPSTREAM.md— upstream baseline 기록
제외 경로
packages/messaging_flutter/— Flutter push plugin 책임apps/flutter-test/— plugin 검증용 테스트 앱 책임apps/mattermost/— 원래 Mattermost 앱 repository clone 책임services/push-proxy/— Mattermost push-proxy repository clone 책임docs/,bin/— 워크스페이스 공통 운영 문서와 entrypoint 책임
주요 구성 요소
services/core/server/go.mod— server Go module 기준services/core/webapp/channels/— Mattermost web client source 기준services/core/webapp/platform/— Mattermost webapp shared/client/types packages 기준services/core/api/package.json— API reference tooling 기준services/core/compose/docker-compose.yml— local core 서비스 구성
유지할 패턴
- upstream에서 온 구조와 명명은 필요한 경우에만 변경한다.
- 제품 특화 변경은
packages/messaging_flutter검증에 필요한 범위로 좁게 유지하고, upstream 재동기화를 방해하지 않게 설명 가능한 단위로 남긴다. - upstream 작업 clone은 이 저장소 안의 ignored
.upstream/mattermost/staging 폴더에 둔다. bin/sync-upstream은 staging clone 갱신까지만 수행하고,services/coresnapshot 반영은 별도 diff/smoke 확인 뒤 진행한다.- staging clone은 Mattermost server upstream
master를 따라가며,master변경 시점 또는 의도적으로 정한 refresh 시점에 snapshot을 떠서 이 저장소의services/core로 merge 요청한다. services/coresnapshot 반영 시 upstream commit SHA를services/core/UPSTREAM.md에 기록한다.services/coresnapshot merge 요청은 앱 또는 push-proxy snapshot과 섞지 않는다.- staging pull 결과를 자동 반영하지 않고, snapshot diff 확인과 core smoke 검증 후 merge 요청한다.
- 갱신은 잦은 자동 반영이 아니라 별도 작업선에서 검토하고, 통과한 baseline만
services/core/UPSTREAM.md와 runtime에 반영한다. - nexo-specific patch는 가능한 한 upstream snapshot 밖의 compose, 문서, wrapper, 작은 명시 patch로 둔다.
- 개발 배포 방식은 현재 컨테이너 내부 개발 환경 제약을 고려해 별도 결정 전까지 고정하지 않는다.
- Go 검증은 기본
bin/test에서 skip되며, 필요할 때NEXO_CORE_GO_TEST=1등 명시적 플래그로 실행한다. - 서버 clone 내부의 원본 repo 구조는 upstream 갱신을 우선해 불필요하게 재해석하지 않는다.
다른 도메인과의 경계
- messaging-flutter: server는 push payload와 ACK endpoint 성격을 제공하고, native 알림 표시와 device token 저장은 plugin이 담당한다.
- client-app: server runtime과
flutter-test검증 앱은 분리한다. test app에서 server 내부 코드를 직접 수정하지 않는다. - push-proxy-service: push-proxy는
services/core하위 요소가 아니라 별도 원본 repository clone으로 둔다. - workspace-ops: 공통 실행 스크립트가 core 명령을 호출할 수 있지만 core 내부 정책은 이 도메인이 소유한다.
금지 사항
services/core/UPSTREAM.mdbaseline을 근거 없이 변경하지 않는다.- 이 도메인을 nexo 제품 앱 또는 앱별 business logic의 소유 영역으로 확장하지 않는다.
- container-in-container 같은 개발 배포 방식을 현재 환경 기준으로 성급하게 고정하지 않는다.
- 대량 rename, formatting-only churn, upstream 파일의 광범위 재배치를 작업 범위 없이 수행하지 않는다.
- generated/build/cache 산출물을 소스 변경처럼 다루지 않는다.