학습 본문으로 건너뛰기
VAIRODE
자동화·데이터 Capstone8번째 작은 수업
오늘은 질문 하나만 해결해요8 / 72

따라 해보기 · 직접 바꿔보기

port 계약과 adapter 구현을 분리한다

오늘의 질문

domain이 필요로 하는 capability를 port protocol로 정의하고 filesystem·HTTP·clock·AI 구현은 교체 가능한 adapter 뒤에 둔다. 이를 생략하면 domain 함수가 requests·Path·환경변수·현재 시각을 직접 호출해 test와 운영 정책이 코드 곳곳에 결합된다. 상황에서도 데모는 보일 수 있지만 제품·검증·운영 책임을 방어할 수 없습니다.

아직 답을 몰라도 괜찮아요. 아래 작은 예시를 보고 먼저 예상해 보세요.

01 · 같이 연습해요

작은 문제부터 하나씩 직접 풀어봐요

먼저 예상하고, 한 단계씩 확인하고, 막힌 곳을 고쳐 봐요. 도움을 열어도 괜찮아요. 도움을 본 문제는 나중에 모양을 바꿔 다시 풀어보면 됩니다.

연습에서 작성 중인 답0 / 8
  1. 01

    찾아보기 · 기초

    cp08 recognize · port 계약과 adapter 구현을 분리한다: port·adapter 표식 중 “domain이 필요로 하는 capability를 port protocol로 정의하고 filesystem·HTTP·clock·AI 구현은 교체 가능한 adapter 뒤에 둔다.”을 충족하는 상태를 고른다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      port 계약과 adapter 구현을 분리한다의 output만 보지 말고 input identity, exit, side effect, rollback, log/metric과 artifact hash를 분리하세요.

    2. 개념

      domain이 필요로 하는 capability를 port protocol로 정의하고 filesystem·HTTP·clock·AI 구현은 교체 가능한 adapter 뒤에 둔다.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    정답과 비교
  2. 02

    먼저 생각하기 · 기초

    cp08 predict · port 계약과 adapter 구현을 분리한다: AI 없이 “domain 함수가 requests·Path·환경변수·현재 시각을 직접 호출해 test와 운영 정책이 코드 곳곳에 결합된다.”를 실행했을 때 exit·state·artifact·evidence가 어떻게 달라질지 먼저 예측한다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      port 계약과 adapter 구현을 분리한다의 output만 보지 말고 input identity, exit, side effect, rollback, log/metric과 artifact hash를 분리하세요.

    2. 개념

      domain이 필요로 하는 capability를 port protocol로 정의하고 filesystem·HTTP·clock·AI 구현은 교체 가능한 adapter 뒤에 둔다.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    움직임과 비교
  3. 03

    순서 따라가기 · 익힌 것을 써보기

    cp08 trace · port 계약과 adapter 구현을 분리한다: port → adapter → dependency inversion → test double를 따라 요청에서 port contract·real/fake adapter map·dependency direction check·swap test receipt까지 최초 contract divergence를 추적한다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      port 계약과 adapter 구현을 분리한다의 output만 보지 말고 input identity, exit, side effect, rollback, log/metric과 artifact hash를 분리하세요.

    2. 개념

      domain이 필요로 하는 capability를 port protocol로 정의하고 filesystem·HTTP·clock·AI 구현은 교체 가능한 adapter 뒤에 둔다.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    움직임과 비교
  4. 04

    내 말로 설명하기 · 익힌 것을 써보기

    cp08 explain · port 계약과 adapter 구현을 분리한다: domain이 필요로 하는 capability를 port protocol로 정의하고 filesystem·HTTP·clock·AI 구현은 교체 가능한 adapter 뒤에 둔다.이 필요한 이유와 port contract·real/fake adapter map·dependency direction check·swap test receipt가 입증하지 못하는 범위를 함께 설명한다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      port 계약과 adapter 구현을 분리한다의 output만 보지 말고 input identity, exit, side effect, rollback, log/metric과 artifact hash를 분리하세요.

    2. 개념

      domain이 필요로 하는 capability를 port protocol로 정의하고 filesystem·HTTP·clock·AI 구현은 교체 가능한 adapter 뒤에 둔다.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    설명 기준과 비교
  5. 05

    빈칸 채우기 · 익힌 것을 써보기

    cp08 complete · port 계약과 adapter 구현을 분리한다: 누락된 guard·effect boundary·failure verdict를 채워 “같은 use case를 in-memory fake와 bounded real adapter로 실행하는 port harness를 구현한다.”을 fail-closed로 완성한다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      port 계약과 adapter 구현을 분리한다의 output만 보지 말고 input identity, exit, side effect, rollback, log/metric과 artifact hash를 분리하세요.

    2. 개념

      domain이 필요로 하는 capability를 port protocol로 정의하고 filesystem·HTTP·clock·AI 구현은 교체 가능한 adapter 뒤에 둔다.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    답과 설명 함께 비교
  6. 06

    틀린 곳 고치기 · 익힌 것을 써보기

    cp08 debug · port 계약과 adapter 구현을 분리한다: 독립 mutant로 “domain 함수가 requests·Path·환경변수·현재 시각을 직접 호출해 test와 운영 정책이 코드 곳곳에 결합된다.”를 재현하고 최초 위반 지점만 수정한다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      port 계약과 adapter 구현을 분리한다의 output만 보지 말고 input identity, exit, side effect, rollback, log/metric과 artifact hash를 분리하세요.

    2. 개념

      domain이 필요로 하는 capability를 port protocol로 정의하고 filesystem·HTTP·clock·AI 구현은 교체 가능한 adapter 뒤에 둔다.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    답과 설명 함께 비교
  7. 07

    직접 만들기 · 새 문제

    cp08 implement · port 계약과 adapter 구현을 분리한다: 같은 use case를 in-memory fake와 bounded real adapter로 실행하는 port harness를 구현한다.을 frozen synthetic fixture와 bounded effect로 구현해 port contract·real/fake adapter map·dependency direction check·swap test receipt를 생성한다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      port 계약과 adapter 구현을 분리한다의 output만 보지 말고 input identity, exit, side effect, rollback, log/metric과 artifact hash를 분리하세요.

    2. 개념

      domain이 필요로 하는 capability를 port protocol로 정의하고 filesystem·HTTP·clock·AI 구현은 교체 가능한 adapter 뒤에 둔다.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    정답과 비교
  8. 08

    새 문제에 써보기 · 새 문제

    cp08 transfer · port 계약과 adapter 구현을 분리한다: local prototype을 CI와 운영 환경으로 옮길 수 있는 Python package로 계약을 옮겨 AI 보조의 변경점과 사람이 최종 승인할 근거를 방어한다.

    이 문제는 주어진 내용과 정답 기준을 더 만드는 중이에요. 지금 적은 답은 연습 메모로만 저장돼요.

    정답 대신 4단계 힌트 보기
    1. 관찰

      port 계약과 adapter 구현을 분리한다의 output만 보지 말고 input identity, exit, side effect, rollback, log/metric과 artifact hash를 분리하세요.

    2. 개념

      domain이 필요로 하는 capability를 port protocol로 정의하고 filesystem·HTTP·clock·AI 구현은 교체 가능한 adapter 뒤에 둔다.

    3. 다음 도움

      내 생각을 먼저 적고 ‘내 답과 맞춰 볼 기준 보기’을 누르면, 풀 순서와 더 자세한 도움을 열어 드려요.

    설명 기준과 비교

8개 답이 남았습니다.

02 · 막힌 곳을 찾아요

틀린 답에서 생각이 갈라진 첫 지점 찾기

헷갈림 01

domain 함수가 requests·Path·환경변수·현재 시각을 직접 호출해 test와 운영 정책이 코드 곳곳에 결합된다.

겉으로 보이는 막힘
port 계약과 adapter 구현을 분리한다의 happy path는 끝나지만 사용자-visible 상태와 release evidence가 계약에서 벗어난다.
막힌 까닭
domain이 필요로 하는 capability를 port protocol로 정의하고 filesystem·HTTP·clock·AI 구현은 교체 가능한 adapter 뒤에 둔다.을 실행 전 acceptance와 실패 상태로 고정하지 않았다.
다시 해보는 방법
같은 use case를 in-memory fake와 bounded real adapter로 실행하는 port harness를 구현한다.에 guard·rollback 또는 reject verdict를 추가하고 port contract·real/fake adapter map·dependency direction check·swap test receipt를 다시 만든다.
헷갈림 02

AI가 port 계약과 adapter 구현을 분리한다의 구현과 test를 함께 생성하고 성공이라고 설명한다.

겉으로 보이는 막힘
같은 가정에서 나온 code와 oracle이 domain 함수가 requests·Path·환경변수·현재 시각을 직접 호출해 test와 운영 정책이 코드 곳곳에 결합된다.를 놓쳐 false green을 만든다.
막힌 까닭
AI-off baseline과 독립 requirement oracle을 먼저 봉인하지 않았다.
다시 해보는 방법
기존 expected를 보존하고 AI diff만 검토한 뒤 별도 작성한 dependency inversion mutant로 반증한다.
헷갈림 03

port contract·real/fake adapter map·dependency direction check·swap test receipt 없이 screenshot·demo·AI 요약만 release 근거로 제출한다.

겉으로 보이는 막힘
clean environment에서 port 계약과 adapter 구현을 분리한다 결과와 복구 경로를 재현하거나 책임 있게 거절할 수 없다.
막힌 까닭
artifact identity·command·environment·human verdict를 하나의 evidence chain으로 연결하지 않았다.
다시 해보는 방법
port contract·real/fake adapter map·dependency direction check·swap test receipt를 clean replay하고 accept·refactor·reject 및 residual risk를 사람이 서명한다.

03 · 내게 맞는 도움 고르기

같은 목표를 원하는 도움만큼 연습해요

안내 받으며

안내형

port → adapter → dependency inversion → test double 순서로 baseline·AI diff·independent mutant·human verdict 칸을 채운다.

port 계약과 adapter 구현을 분리한다의 정상 경로와 실패 경로, AI 제안 변경, 독립 검증, 사람 판정을 번호·도형·선 종류로 구분한 도식에서 색상 외에도 contract·build·test·security·telemetry·SBOM·attestation·ship verdict label과 선 종류를 함께 표시한다.
혼자 해보기

내 힘으로

cp08 port 계약과 adapter 구현을 분리한다: domain이 필요로 하는 capability를 port protocol로 정의하고 filesystem·HTTP·clock·AI 구현은 교체 가능한 adapter 뒤에 둔다.의 미공개 synthetic product variant를 먼저 판정한 뒤 Python 3.14.6·pytest 9.1.1 current lane과 pytest 9.0.0 regression lane의 hash-pinned local harness에서 실행 receipt를 만들고 불일치만 공식 계약으로 교정한다.

공식 문서·문법·library API는 열 수 있지만 해당 변형의 hidden acceptance value·private fault schedule·server verdict·attestation subject·forbidden sentinel·expected incident timeline은 먼저 제공하지 않는다.
더 도전하기

심화형

local prototype을 CI와 운영 환경으로 옮길 수 있는 Python package의 runtime·data volume·permission·failure timing 중 두 축을 바꾼 private variant에서도 같은 evidence contract를 방어한다.

port 계약과 adapter 구현을 분리한다에서 기능 수보다 contract clarity·bounded effect·failure visibility·reproducibility·operator cost를 우선하고 포기한 범위를 기록한다.