Skip to content

Partition canonical api spec outputΒ #11

@toothlessdev

Description

@toothlessdev

🧩 Summary

  • ν‘œμ€€ν™”λœ api spec 을 key strategy λ³„λ‘œ νŒŒν‹°μ…”λ‹ν•΄μ„œ μ €μž₯, 쑰회, 비ꡐ νš¨μœ¨μ„±μ„ κ°œμ„ ν•˜λŠ” μ „λž΅ λ„μž…

🎯 Context

  • @patchlogr/oas μ—μ„œ openapi λ¬Έμ„œλ₯Ό canonical spec 으둜 λ³€ν™˜
  • μ΄λ•Œ ν‘œμ€€ν™”λœ μŠ€νŽ™μ„ ν•˜λ‚˜μ˜ json ν˜•νƒœλ‘œ μ €μž₯, λ‘œλ“œ, 비ꡐ
    • diff μ‹€ν–‰μ‹œ 전체 spec 을 맀번 λ‘œλ“œ 및 비ꡐ 해야함
    • oas 규λͺ¨κ°€ 컀질수둝 diff λΉ„μš© 증가
    • μ€‘λ³΅μ œκ±° μ •κ·œν™” 및 μΊμ‹±ν•˜κΈ° 어렀움

πŸ›  Proposed Change

  • ui 둜 λ³΄μ—¬μ€„λ•Œ swagger μ—μ„œλŠ” tag[0] λ₯Ό 기반으둜 λΆ„λ₯˜ ν•˜κΈ°μ— tag, domain 별 νŒŒν‹°μ…”λ‹ μ „λž΅ 채택
  • 각 νŒŒν‹°μ…˜μ— λŒ€ν•΄ manifest.json sha 256 기반 content addressable storage ν˜•νƒœλ‘œ μ €μž₯ (git 이 μ΄ν˜•νƒœλ‘œ μ €μž₯ν•˜κ³  있음)
Strategy Key
by Operation GET /pets, POST /users/:id
by Tag/Domain Pets, User, Billing
by Path Prefix /api/v1/pets/*
  • diff pipeline κ°œμ„ 
    • base, head manifest 비ꡐ -> hash λ™μΌμ‹œ ν•΄λ‹Ή domain 전체 μŠ€ν‚΅
    • hash κ°€ μ„œλ‘œ λ‹€λ₯Έ partition 만 diff μˆ˜ν–‰
    • diff result λ₯Ό partition λ‹¨μœ„ λ³€ν™˜ κ°€λŠ₯
  • inspector ui μ—μ„œ domain, tag 별 탐색 및 필터링 κΈ°λŠ₯
  • s3, blob store 에 μ €μž₯ν•˜κ³  db μ—λŠ” metadata 만 μ €μž₯

πŸ“¦ Scope

  • @patchlogr/core
  • @patchlogr/cli
  • @patchlogr/inspector
  • docs, examples
  • tests
  • ci / infra
  • other (μ•„λž˜μ— λͺ…μ‹œ)

⚠️ Impact & Risk

  • No Breaking Changes
  • Possible Breaking Changes

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions