{"id":51230091,"url":"https://github.com/dev-goraebap/pragmatic-ddd-monolith","last_synced_at":"2026-06-28T15:30:44.443Z","repository":{"id":361783141,"uuid":"1255655325","full_name":"dev-goraebap/pragmatic-ddd-monolith","owner":"dev-goraebap","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-19T04:17:33.000Z","size":158,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-19T06:04:38.056Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dev-goraebap.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-01T03:50:34.000Z","updated_at":"2026-06-19T04:17:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dev-goraebap/pragmatic-ddd-monolith","commit_stats":null,"previous_names":["dev-goraebap/backend-pragmatism-design","dev-goraebap/pragmatic-ddd-monolith"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dev-goraebap/pragmatic-ddd-monolith","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-goraebap%2Fpragmatic-ddd-monolith","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-goraebap%2Fpragmatic-ddd-monolith/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-goraebap%2Fpragmatic-ddd-monolith/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-goraebap%2Fpragmatic-ddd-monolith/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dev-goraebap","download_url":"https://codeload.github.com/dev-goraebap/pragmatic-ddd-monolith/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dev-goraebap%2Fpragmatic-ddd-monolith/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34894560,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-28T15:30:43.754Z","updated_at":"2026-06-28T15:30:44.434Z","avatar_url":"https://github.com/dev-goraebap.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# pragmatic-ddd-monolith\n\n\u003e **단일 배포 모놀리식**에서 DDD를 실용적으로 빌려 바운디드 컨텍스트를 패키지로 나누는 설계 스킬.\n\u003e 객체지향 + DI 프레임워크(Spring Boot, NestJS, .NET 등)에서 두루 쓸 수 있고, 예시는 Spring Boot/Java로 듭니다.\n\u003e 모듈을 따로 배포하지 않습니다(그건 MSA). 정석 DDD를 교조적으로 따르기보다 생산성과의 타협을 우선합니다.\n\n![아키텍처 구조 개요 — 컨텍스트 내부 레이어와 상류/하류 협업(OHS·PL·ACL·Conformist)](reference/diagram.png)\n\n## 설치\n\n```bash\nnpx skills add dev-goraebap/pragmatic-ddd-monolith\n```\n\n## 무엇을 하는가\n\n기능 기반 구조에서 출발해, 두 가지 경계(**컨텍스트**와 **레이어**)를 명확히 나누고 컨텍스트 간 의존을 단방향으로 다스립니다.\n\n- **패키지 구조** — `common/` · `config/` · `util/` · `module/\u003cbc\u003e/`.\n- **컨텍스트 내부 레이어** — `domain/`(애그리거트 + Repository 인터페이스) · `application/{command,query}`(CQS) · `infrastructure/adapter` · `contract/`(상류일 때만: OHS + PL).\n- **CQS** — 쓰기는 도메인 Repository로 불변식 검증, 읽기는 `ReadQuery`로 화면 DTO(크로스 컨텍스트 DB 직접 JOIN 허용).\n- **컨텍스트 간** — 하류 → 상류 단방향, 하류는 상류의 `contract`만 참조. 하류는 **Conformist**(직접 사용) 또는 **ACL**(자기 포트 + 어댑터 번역)을 선택.\n- **도메인** — 순수성·자가검증을 지키되, 실용성을 위해 **ORM 애노테이션(JPA 등) 직접 사용을 허용**.\n\n구성:\n\n- [SKILL.md](./SKILL.md) — 본체(전제·두 경계·패키지·레이어·CQS·상하류·contract·Conformist/ACL·배치표).\n- [reference/collaboration.md](./reference/collaboration.md) — contract(OHS/PL) 코드, Conformist/ACL 코드·비교, 양방향 처리, PR 체크리스트, 용어집.\n\n## 적용 범위\n\n단일 배포 모놀리식, 객체지향 + DI 프레임워크(Spring Boot, NestJS, .NET 등). **모듈 별도 배포·MSA·분산(결과적 일관성)은 적용 범위 밖.**\n\n## 라이선스\n\nApache-2.0. [LICENSE](./LICENSE) 참조.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-goraebap%2Fpragmatic-ddd-monolith","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdev-goraebap%2Fpragmatic-ddd-monolith","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdev-goraebap%2Fpragmatic-ddd-monolith/lists"}