아키텍처CMS 독립적 설계
CMS 독립적 설계
Gato GraphQL의 기반이 되는 GraphQL 서버는 CMS에 독립적으로 설계되어 있어, WordPress뿐만 아니라 Laravel, Symfony 등 모든 PHP CMS 또는 프레임워크에서 동작합니다.
CMS 독립적 설계를 실현하기 위해, CMS와 상호작용해야 하는 모든 기능은 2개의 별도 패키지로 분리되어 있습니다:
- CMS 독립적 패키지: 어떤 CMS가 구현되어 있더라도 대응할 수 있도록, 모든 비즈니스 코드와 CMS와의 상호작용에 관한 계약(contract)을 포함합니다 (예: posts)
- CMS 전용 패키지: 특정 CMS를 위한 계약의 구현을 포함합니다 (예: posts-wp는 WordPress용 계약을 구현합니다)
따라서 코드의 대부분(약 90%)은 CMS 독립적 패키지에 포함되어 있습니다. API를 다른 CMS로 이식하는 경우(예: WordPress에서 Laravel로), CMS 전용 패키지만 구현하면 됩니다(전체 코드의 약 10%에 해당합니다).
재구현해야 하는 코드 양을 최소화하고, 패키지 간 코드 중복을 방지하는 것이 코드를 패키지로 분할하는 방식을 결정하는 주요 원칙입니다.
Next