Skip to content

refactor(arch): api-only 후속 SSOT/KISS 정리 #715

@keIIy-kim

Description

@keIIy-kim

Summary

#713으로 backend 모듈 경계의 api-only 강제와 strict empty-set guard는 완료됐다.
다만 recent api 공개 계약 층에는 유지보수성 관점의 후속 debt가 남아 있다.

대표 후보:

  • backend/iam/src/main/kotlin/io/deck/iam/api/UserPublicEvents.kt
  • backend/iam/src/main/kotlin/io/deck/iam/api/OAuthIdentityLinkedEvent.kt
  • backend/iam/src/main/kotlin/io/deck/iam/api/event/*
  • backend/iam/src/main/kotlin/io/deck/iam/api/DashboardApi.kt
  • backend/audit/src/main/kotlin/io/deck/audit/api/AuditApi.kt
  • backend/notification/src/main/kotlin/io/deck/notification/api/NotificationHistoryApi.kt
  • backend/common/src/main/kotlin/io/deck/common/api/exception/ApiExceptions.kt
  • backend/common/src/main/kotlin/io/deck/common/api/meta/LabelContracts.kt

문제는 경계 위반이 아니라, 최근 정리 과정에서 생긴 중복 계약/혼재된 파일 책임/얇은 wrapper 증가다.
이번 follow-up은 runtime behavior를 바꾸지 않고 SSOT와 KISS를 높이는 데 집중한다.

Goal

recent api-only 후속 계약을 정리해 공개 API layer의 단일 책임과 단일 계약 원천을 회복한다.

Non-Goals

  • 모듈 경계 규칙 변경
  • 신규 기능 추가
  • FE 아키텍처 정리
  • api-only guard 완화

Tasks

Acceptance Criteria

  • 같은 개념의 공개 이벤트 계약이 두 경로 이상에 중복되지 않는다.
  • api 파일은 한 가지 책임만 갖고, query/manager interface와 record/dto 묶음이 과하게 섞여 있지 않다.
  • 얇은 re-export/typealias/wrapper는 실제 경계 가치가 있는 경우만 남고, 불필요한 indirection은 제거된다.
  • strict api-only guard와 기존 behavior는 유지된다.

Related

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions