System이 기록하는 정보#
System은 Service·API·Database와 다른 System을 묶는 구성입니다. 이름은 다른 System과 같아도 되므로 ID로 구분합니다.
| 필드 | 내용 |
|---|---|
name | 이름. 필수 |
handle | Web 주소 이름. 필수이며 같은 Organization의 System 사이에서 고유합니다(주소 이름) |
summary·description | 한 줄 요약과 설명 |
같은 Service·API·Database·System을 여러 System에 포함할 수 있습니다. Service가 사용하는 Database는 System 구성에 자동으로 포함되지 않으므로 직접 고릅니다. 자기 자신을 다시 포함하는 순환은 허용하지 않습니다.
Web UI#
Systems → 새 System에서 이름을 입력하고 System 등록을 누릅니다. 상세의 직접 구성 편집에서 포함할 Service·API·Database·System을 고르고 직접 구성 저장을 누릅니다.
stly#
{"name": "Commerce", "handle": "commerce", "summary": "주문·결제 기능 묶음"}stly systems create --input system.json직접 구성은 Service·API·Database·System ID 집합을 한 번에 교체합니다. service_ids·api_ids·system_ids는 필수입니다. database_ids를 생략하면 기존 Database 구성을 유지하고, 빈 배열을 보내면 모두 해제합니다. 네 배열의 합계는 최대 500개입니다.
{"service_ids": ["1I6Nc76wEPd"], "api_ids": ["4pkKFh2ojXs"], "system_ids": [], "database_ids": ["7OzP6PauDBf"]}stly systems component-links get <system-id>
stly systems component-links update <system-id> --input links.json --if-match '"구성 조회의 ETag"'구성의 ETag는 System의 이름·설명 ETag와 다릅니다. component-links get의 etag를 사용합니다.
구성 탐색#
| 명령 | 결과 |
|---|---|
stly systems components <system-id> --scope recursive | 직접·간접 구성. inclusion은 direct·indirect·both입니다 |
stly systems parents <system-id> | 이 System을 포함하는 상위 System |
stly systems composition <system-id> --target-kind service --target-id <service-id> | 대상까지의 포함 연결. --target-kind는 system·service·api·database입니다 |
stly services systems <service-id> · stly apis systems <api-id> | 이 Service·API를 포함하는 System |
systems composition의 다음 페이지는 첫 응답의 composition_revision을 --composition-revision으로 넘겨 조회합니다.
조회 중 구성이 바뀌어 HTTP 409가 나면 처음부터 다시 조회합니다.
삭제#
System을 삭제하면 그 System이 포함하던 연결과 다른 System이 이 System을 포함하던 연결이 함께 정리됩니다. 포함되었던 Service·API·Database·System 자체는 삭제되지 않습니다. Database를 삭제할 수 있으면 System 구성에서도 함께 빠집니다.