ASA Core v1.0를 이용한 결정론적 재생

발행: (2025년 12월 4일 오전 12:54 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

재생 함정

대부분의 AI 기반 코딩 도구는 한 번 코드를 생성하는 데는 뛰어나지만… 다시 생성할 때는 그렇지 않습니다.
스펙을 업데이트하고 재생성을 클릭하면 갑자기:

  • 사용자 정의 로직이 사라짐
  • 검증 규칙이 사라짐
  • 테스트 구조가 더 이상 일치하지 않음
  • 핸들러와 모델이 서로 어긋남

이것이 재생성 함정입니다.

전통적인 도구에서 재생성이 실패하는 이유

제너레이터는 당신이 작성한 코드를 알지 못합니다. 일반적인 흐름은 다음과 같습니다:

  1. 1일 차 – 스캐폴딩 생성 → 보기 좋음
  2. 2일 차 – 비즈니스 로직 구현 → 기분 좋음
  3. 3일 차 – 요구사항 변경 → 재생성 → 모든 것이 사라짐

결과

  • 개발자 시간 손실
  • 제너레이터 사용에 대한 두려움
  • 스펙과 코드의 불일치
  • 아키텍처 부패

코드만 잃는 것이 아니라 신뢰도 잃게 됩니다.

ASA의 결정론적 파이프라인

슬라이스

자체 포함된 수직 기능 단위, 예시:

domains/auth/login/
├── slice.spec.md
├── slice.contract.json
├── handler.py
├── service.py
├── repository.py
├── schemas.py
└── tests/

스펙 (사람이 읽을 수 있음)

각 슬라이스는 다음 일곱 개의 필수 섹션을 포함하는 스펙을 가집니다:

  • 목적
  • 입력
  • 출력
  • 동작
  • 오류
  • 부수 효과
  • 의존성

계약 (기계가 읽을 수 있음)

스펙으로부터 JSON 스키마가 생성됩니다. 예시:

{
  "inputs": { "email": "string", "password": "string" },
  "outputs": { "jwt_token": "string", "expires_in": "int" }
}

결정론적 템플릿과 마커 기반 보존

ASA 템플릿에는 무작위성이 없습니다. “당신의 코드”와 “생성된 코드”를 추측하는 대신, ASA는 보존할 영역을 명시적으로 표시합니다:

# === BEGIN USER CODE ===
def execute(self, request: LoginRequest) -> LoginResponse:
    user = self.repo.get_user_by_email(request.email)
    token = self.repo.generate_jwt(user.id)
    return LoginResponse(jwt_token=token, expires_in=3600)
# === END USER CODE ===

재생성 시 ASA는:

  1. 마커 안의 모든 내용을 추출하고
  2. 주변 구조를 재생성하고
  3. 코드를 정확히 원래 위치에 다시 삽입합니다

이 100 % 결정론적 라운드‑트립은 코드를 실수로 덮어쓸 수 없도록 보장합니다.

안전한 재생성 예시

작동 중인 로그인 슬라이스가 있습니다. 나중에 보안팀이 ip_address를 로그에 남기고 싶어합니다.

  1. slice.spec.md를 업데이트:
- email: string
- password: string
- ip_address: string # new
  1. 재생성 명령 실행:
asa generate-contract auth/login
asa regenerate-slice auth/login

ASA가 업데이트하는 항목:

  • 모델
  • 핸들러 시그니처
  • 테스트
  • 계약

사용자 정의 로직은 그대로 유지됩니다.

AI‑지원 개발에서 결정론성이 중요한 이유

  • 여러 에이전트가 동일 슬라이스를 수정할 수 있음
  • 스펙이 매일 변경될 수 있음
  • 계약이 빠르게 진화함
  • 자동화된 워크플로는 예측 가능한 동작이 필요함
  • CI 파이프라인은 인간 개입 없이 재생성·린트를 수행해야 함

ASA는 다음을 보장합니다:

  • 동일 스펙 → 동일 계약
  • 동일 계약 → 동일 파일
  • diff에 놀라움 없음
  • 로직이 우연히 덮어써지는 일 없음

이 아키텍처는 AI 시대에 맞게 설계되었습니다.

ASA Core v1.0: 이상적인 시나리오

  • 장기 운영 백엔드
  • 다중 에이전트 코딩 환경
  • 빠르게 변화하는 기능 세트
  • 코드 드리프트에 지친 팀
  • 결정론적 결과가 필요한 조직
  • LLM을 중심에 두고 개발하는 모든 사람

ASA를 사용하면 재생성을 두려워하지 않고 받아들일 수 있습니다. 재생성은 다음과 같은 느낌이어야 합니다:

rm -rf my_code

이런 느낌이 아니라, 구조는 안전하게 업데이트하면서 로직은 보존되는 느낌이어야 합니다.

ASA Core v1.0의 핵심 요소

  • 슬라이스 공동 배치
  • 결정론적 템플릿
  • 기계‑읽기 가능한 계약
  • 마커‑기반 보존
  • 린터를 통한 경계 강제

AI‑주도 개발에 발맞출 수 있는 백엔드 아키텍처를 원한다면, ASA가 바로 그 해답입니다.

소스 코드 및 스타터 킷:

Back to Blog

관련 글

더 보기 »

SaaS IA 뉴스

SaaS IA 뉴스용 커버 이미지 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazon...