ATLAS 하네스

ATLAS 하네스

Atlas는 .NET 데스크탑 앱이다. 이 환경에서는 레이어 경계와 절차 경로의 우회가 두드러진다.


Atlas란

Atlas는 C# / .NET으로 작성된 데스크탑 애플리케이션이다. 문서를 열고, 편집하고, 저장하고, 인덱싱하는 기능을 중심으로 레이어드 아키텍처를 가진다.

기술 스택:

  • 언어: C# / .NET
  • 아키텍처: Layered (Application → Domain → Infrastructure)
  • 상태 관리: Event-driven, Store 기반
  • 강제 도구: Roslyn Analyzer, 빌드 타임 정적 분석

Atlas의 계층 구조:

UI Layer
    ↓ (ViewModel / Command)
Application Layer       ← UseCase, Handler
    ↓ (Interface)
Domain Layer            ← Entity, Value Object, Repository Interface
    ↓ (DI / Assembly)
Infrastructure Layer    ← Repository 구현체, FileSystem, DB

각 레이어는 위 방향으로만 의존한다. 하위 레이어가 상위 레이어를 알면 안 된다. Infrastructure 구현체가 Application Layer에 직접 노출되면 안 된다.


이 환경에서 드러난 우회

Atlas에서 AI와 함께 작업하면서 반복된 우회는 크게 네 종류였다.

레이어 경계 우회 — Service가 Repository 구현체를 직접 생성하거나, UI가 Infrastructure를 직접 참조하는 패턴. 인터페이스를 거치지 않고 concrete 타입으로 바로 간다.

인터페이스 계약 위반 — DI를 무시하고 new FileRepository()처럼 구현체를 직접 생성하는 패턴. 계약이 없으면 진입점이 여러 개가 된다.

상태 변경 우회 — Store나 이벤트 없이 상태를 직접 바꾸는 패턴. 값은 바뀌지만 전이 절차가 실행되지 않는다.

검증 우회null 체크 대신 fallback 값 삽입, 예외를 삼켜서 성공처럼 반환하는 패턴. 잘못된 입력이 조용히 통과된다.


강제 도구

Atlas의 강제는 Roslyn Analyzer 기반이다.

Roslyn Analyzer는 C# 컴파일 파이프라인에 삽입되어 코드를 정적으로 분석한다. 위반이 감지되면 빌드 자체가 실패한다. 경고가 아니라 오류다.

주요 규칙:

ATL001: Application layer must not reference Infrastructure types directly
ATL002: Service layer must use interface, not concrete implementation
ATL003: State mutation must go through declared Store/Event path
ATL401: Execution flow must validate input before continuing
ATL402: Empty catch block hides validation or execution failure

이 규칙들은 실행 통제 — 빌드 타임 강제에서 상세히 다룬다.


이 파트의 문서 목록

문서우회 패턴핵심 질문
Atlas 사례 개요입문Atlas 구조를 읽기 위한 최소 컨텍스트는 무엇인가?
Atlas 패턴 묶음전체 조망Atlas에서 반복되는 패턴을 한눈에
백엔드 레이어 우회direct path bypass레이어 경계를 건너뛰고 있는가?
통신 우회direct path bypass통신 계층을 우회하고 있는가?
UI 직접 파일 접근direct path bypassUI가 파일 시스템에 직접 접근하는가?
인터페이스 계약 위반contract flattening계약 없이 구현체를 직접 사용하는가?
실행 흐름 우회contract flatteningUseCase를 건너뛰고 있는가?
상태 변경 우회state & meaning bypassStore 없이 상태를 직접 바꾸는가?
검증 우회fallback & backdoor검증 없이 실행이 계속되는가?
디버그 백도어fallback & backdoor디버그 경로가 두 번째 공식 경로가 됐는가?

읽는 순서: Atlas 사례 개요Atlas 패턴 묶음 → 관심 있는 개별 패턴


각 사례 문서의 구조

Atlas 사례 문서는 거의 같은 구조를 따른다.

  1. 개요 / 질문 / 문제 — 어떤 우회가 반복됐고 무엇을 물어야 하는가
  2. 문제의 본질 — 왜 이 우회가 구조를 무너뜨리는가
  3. 목표 구조 / 하네스 적용 위치 — 합법 경로와 잠가야 할 표면은 어디인가
  4. 실제 구현 / 위반 예시 — 실제 C# 코드와 실패 결과는 어떻게 보이는가
  5. 보조 강제 수단 / 결과 — 하네스가 어떤 강제와 연결되고 어떤 변화를 만드는가
  6. 실무 적용 팁 / 요약 — 현업에서 무엇을 먼저 봐야 하는가