본문으로 건너뛰기
페이지 목차
이 페이지에서 검색

AI 드리븐

이 페이지에 묻기

AI 드리븐 · 현재 차시와 목차 본문에서만 찾아 답합니다. 답을 지어내지 않고 해당하는 대목을 그대로 보여 주며, 여기에 없으면 없다고 알려 드립니다.

생성형 AI가 아니라 이 페이지 본문을 찾아 그대로 보여 주는 방식입니다. 외부로 나가는 요청이 없습니다.

AI · DEVELOPMENT

AI 드리븐

생성 수정

요구사항과 역할 정의부터 구현·검증·배포·운영까지, AI와 함께 개발하며 사람이 판단할 기준을 정리합니다.

26개 문서 · 1일차 · 9 / 26

8차시 · 아키텍처 결정과 근거 기록

지도 위치 : 1일차 · 설계 마무리 · 구조를 정하고 이유를 파일로 남기는 자리 | 이전: 7차시 디자인 ② 검증 역할의 분리 | 다음: 9차시 서비스 뼈대 세우기 키워드 : 서비스 계층 구조, 구성 방식 선택과 결정 기록(ADR), 클라우드 개요

이 차시를 다 읽으면

  1. 웹 서비스의 네 계층 을 말하고, 각 계층이 하지 않는 일 을 댈 수 있다.
  2. 모놀리스 · 모노레포 · 관계형 DB · 트랜잭션을 정의하고, AI와 함께 개발할 때의 선택 기준(널리 쓰이는가, 내가 운영할 수 있는가)을 말할 수 있다.
  3. 결정 기록(ADR) 을 유와 종차로 정의하고, 네 부분 중 "검토한 대안"이 왜 가장 쓸모 있는지 설명할 수 있다.
  4. ADR과 아키텍처 문서를 "왜" ↔ "무엇이 어디에" 로 가르고, 이해 부채를 줄이는 습관을 말할 수 있다.
  5. 클라우드 기본 용어(IaaS · PaaS · SaaS, 리전, 관리형 DB, 오브젝트 스토리지, CDN, 비밀값 관리 서비스)를 한 줄씩 말할 수 있다.

0. 이 차시의 판별 축

#축왼쪽 (0)오른쪽 (1)이 축으로 갈리는 것큰 축 (README 5장)
1⭐ 디스크 ↔ 메모리결정 이유를 파일(ADR)에 남김결정 이유가 대화에만 있음다음 세션의 에이전트가 같은 논의를 반복하는가①
2⭐ 하나 ↔ 여럿모놀리스, 모노레포 (하나로 뭉침)화면 · 서버 분리, 마이크로서비스, 여러 저장소단순 · 빠름 ↔ 독립 · 확장, 대신 조율 비용⑤
3로컬 ↔ 원격내 컴퓨터에서 돌림클라우드(남의 데이터센터)에서 돌림인터넷에 공개할 수 있는가④
4누가 관리하는가내가 관리 (서버 직접 운영)클라우드가 관리 (관리형 · PaaS · SaaS)장애 때 내가 손댈 범위이 차시의 축

이 차시가 답하는 질문은 "서비스를 어떤 덩어리로 나누고, 그 결정의 이유를 어떻게 남기는가" 입니다. 앞에서 배운 대로 에이전트는 대화가 끝나면 잊습니다(2차시 2절, 디스크 ↔ 메모리). 규칙을 지침 파일에 남겼듯, 결정의 이유 도 파일에 남깁니다. 기록이 없으면 에이전트는 새 세션마다 "더 좋은 방법"을 제안하며 같은 논의를 반복하거나, 결정을 슬그머니 뒤집습니다. 이 차시로 1일차 "결정" 단계가 끝나고, 2일차의 모든 역할이 여기서 만든 문서를 맥락 (5차시 3.1의 두 번째 축)으로 씁니다.


1. ⭐ 서비스 계층 구조

1.1 정의

계층 구조 — [서비스 구성 방식]인데, [ 화면 · 서버 · 데이터 · 외부 서비스를 역할별 층으로 나누고 각 층이 자기 일만 하게 한다 ]는 점에서 한 덩어리 코드가 보여 주기 · 판정 · 저장을 모두 하는 방식과 구별된다.

┌─────────────────────────────┐
│ 화면 (프론트엔드)              │  보여 주고 입력받음. 판정하지 않음 (11차시)
└──────────────┬──────────────┘
               │ API (4차시의 약속)
┌──────────────▼──────────────┐
│ 서버 (백엔드)                  │  판정 · 검증 · 비즈니스 규칙 (10차시)
└───────┬──────────────┬──────┘
        │              │
┌───────▼──────┐ ┌─────▼───────────────┐
│ 데이터 (DB)   │ │ 외부 서비스           │
│ (12차시)      │ │ 결제(16), 이메일 등    │
└──────────────┘ └─────────────────────┘

🔍 읽는 포인트 : 상자 오른쪽의 한 줄 설명만 보면 됩니다. 특히 화면 상자의 "판정하지 않음" .

1.2 각 계층이 하지 않는 일

계층하는 일하지 않는 일
화면보여 주기, 입력받기금액 계산, 권한 판단, 재고 판단 (4차시 3.2)
서버판정, 검증, 규칙 적용화면의 모양 결정
데이터오래 보관, 규칙(제약조건) 지키기화면 · 비즈니스 흐름 결정
외부 서비스결제, 이메일 같은 전문 기능우리 서비스의 판정 (결과를 서버가 다시 확인)

⚠️ 경계가 무너지는 전형: 화면이 금액을 계산하거나, 서버가 HTML 모양을 정하는 것입니다. 경계가 무너지면 역할을 나눈 에이전트들(5차시)이 서로의 일을 침범 합니다.

💡 비유는 마지막에 — 식당입니다. 홀 직원(화면)은 주문을 받고 음식을 내지만 가격을 정하지 않고, 주방(서버)은 조리하고 판단하며, 창고(데이터)는 보관하고, 배달 대행(외부 서비스)은 맡은 일만 합니다.


2. 구성 방식 선택

2.1 먼저 용어

용어정의 (유 + 종차)
모놀리스[코드 구성 방식]인데, [ 서비스 전체를 한 덩어리 프로그램으로 실행 · 배포한다 ]는 점에서 기능별로 따로 배포하는 마이크로서비스와 구별된다
모노레포[저장소 구성 방식]인데, [ 화면 · 서버 등 여러 프로그램의 코드를 Git 저장소 하나에 둔다 ]는 점에서 프로그램마다 저장소를 따로 두는 방식과 구별된다
관계형 DB[데이터베이스]인데, [ 데이터를 표(행과 열)로 저장하고 표 사이의 관계와 규칙을 DB가 지킨다 ]는 점에서 문서 단위로 자유롭게 저장하는 문서형 DB와 구별된다
트랜잭션[DB 작업 단위]인데, [ 여러 변경을 묶어 전부 성공하거나 전부 취소되게 한다 ]는 점에서 변경을 하나씩 따로 반영하는 방식과 구별된다

⚠️ 모놀리스( 실행 · 배포 단위)와 모노레포( 저장소 단위)는 다른 축입니다. 화면과 서버를 따로 배포하면서 저장소는 하나로 둘 수 있습니다.

2.2 결정 항목

결정 항목선택지 예판단 기준
코드 구성모놀리스 / 화면 · 서버 분리팀 규모, 따로 배포할 필요
저장소모노레포 / 여러 개에이전트가 전체를 한 번에 볼 수 있는가
서버 실행 방식서버리스 함수 / 컨테이너 / PaaS (4.1)트래픽 패턴, 운영 부담, 비용
데이터베이스관계형(PostgreSQL 등) / 문서형데이터 관계, 정합성 요구 (예약 · 결제는 관계형이 유리)
언어 · 프레임워크TypeScript, Python 등AI가 잘 다루는가, 타입이 있는가

2.3 AI와 함께 개발할 때 추가 기준

기준이유
널리 쓰이는 기술AI가 학습한 예가 많아 잘 다룬다. 생소한 최신 프레임워크는 틀린 코드가 많이 나온다
타입이 있는 언어값의 종류(숫자 · 글자)를 미리 적어 두어, AI의 실수를 실행 전에 잡아 준다
모노레포에이전트가 화면과 서버 코드를 함께 보고 API 약속에 맞춰 일관성을 유지하기 좋다
⭐ 내가 운영할 수 있는가코드를 읽지 않는 상태에서 장애가 나면(23차시) 손댈 범위가 좁다

⭐ 마지막 기준에서 코드를 읽지 않는 사람에게 유리한 선택이 나옵니다.

  • 서버를 직접 관리하는 방식보다 관리형 서비스 · PaaS (백업 · 보안 패치 · 재시작을 플랫폼이 대신 함, 0절 축 4)
  • 대시보드에서 로그와 상태를 눈으로 볼 수 있고, 되돌리기(롤백) 버튼이 있는 플랫폼
  • AI가 잘 다루는 널리 쓰이는 기술

2.4 반례 — 지금 고르면 안 되는 구성

구성왜 지금은 아닌가
처음부터 마이크로서비스사람 한 명 + AI 팀에는 조율 · 운영 비용 이 이득보다 크다 (0절 축 2)
쿠버네티스(컨테이너 여러 개를 직접 관리하는 시스템)운영할 수 있는 사람이 없으면 장애 때 손을 못 댄다
AI가 추천한 스택을 이유를 묻지 않고 그대로 받기결정이 아니라 위임된 추측 . ADR의 "검토한 대안"이 비어 있게 된다

3. ⭐ 결정 기록 — ADR

3.1 정의

결정 기록 (ADR, Architecture Decision Record) — [설계 문서]인데, [ 결정 하나를 맥락 · 결정 · 검토한 대안 · 결과로 짧게 남겨 "왜 그렇게 정했는가"를 보존한다 ]는 점에서 지금 구조가 어떻게 생겼는지만 보여 주는 아키텍처 문서와 구별된다.

결정 하나에 파일 하나, 짧게 씁니다.

# docs/adr/0002-database.md
# ADR-0002: 데이터베이스로 PostgreSQL을 쓴다

- 상태: 확정 (2026-10-20)

## 맥락
예약과 결제는 "남은 자리 감소"와 "예약 생성"이 함께 성공하거나 함께 실패해야 한다.
동시 예약이 발생할 수 있다.

## 결정
관계형 DB인 PostgreSQL을 쓴다. 클라우드의 관리형 DB를 사용한다.

## 검토한 대안
- 문서형 DB: 트랜잭션 · 제약조건 활용이 상대적으로 불편해서 기각
- SQLite: 로컬 개발은 편하지만 배포 환경의 동시 접속에 부적합해서 기각

## 결과
- 트랜잭션과 잠금(한 예약이 처리되는 동안 같은 자리를 다른 요청이 못 건드리게 함)으로 동시 예약 문제를 처리할 수 있다 (13차시)
- 관리형 DB 비용이 발생한다
- 운영 시 내가 할 수 있는 일: 대시보드에서 백업 복원, 접속 수 확인 / 없는 일: 느린 질의 원인 분석

🔍 읽는 포인트 : ## 검토한 대안과 ## 결과의 마지막 줄만 보면 됩니다.

부분무엇을 적나왜 필요한가
맥락어떤 문제 · 조건 때문에 결정이 필요했나조건이 바뀌면 결정도 다시 볼 수 있다
결정무엇을 하기로 했나
⭐ 검토한 대안무엇을 왜 기각했나에이전트가 새 세션에서 "문서형 DB가 더 좋습니다"라고 제안할 때 "이미 검토했고 이 이유로 기각했다" 고 답할 수 있다. 나중에 가장 쓸모 있는 부분
결과얻는 것 · 잃는 것 · 운영 시 내가 할 수 있는 일 / 없는 일대가를 미리 알고 고른다

지침 파일에 한 줄 추가합니다.

기술 선택을 바꾸자고 제안하기 전에 docs/adr/를 먼저 읽는다.

🔍 읽는 포인트 : "제안하기 전에 "입니다. 기록이 있어도 에이전트가 읽지 않으면 소용이 없으므로, 읽는 시점을 규칙으로 정합니다.

3.2 ADR과 아키텍처 문서

ADR아키텍처 문서 (docs/architecture.md)
답하는 질문왜 이렇게 정했나무엇이 어디에 있나
바뀌는 방식고치지 않고 새 ADR로 대체 (상태: 대체됨)구조가 바뀔 때마다 갱신
예"PostgreSQL을 쓴다. 문서형은 이 이유로 기각""예약 기능 = apps/api/reservations/, 화면 → 서버 → DB 흐름"

⭐ 코드를 읽지 않으면 AI가 구현하면서 구조를 조금씩 바꾸는 것 을 알아채기 어렵습니다. 코드는 늘어나는데 이해하는 사람이 아무도 없는 상태가 쌓이는 것을 이해 부채 라고 부릅니다. 장애가 났을 때(23차시) 가장 크게 드러납니다. 아키텍처 문서는 이 부채를 줄이는 가장 쉬운 장치입니다.

docs/architecture.md를 만들어줘. 계층별로 어떤 기능이 어느 폴더에 있는지, 화면 → 서버 → DB 흐름을
글자 그림으로. 구조를 바꾸는 작업을 할 때마다 이 문서도 갱신하는 규칙을 CLAUDE.md에 추가해줘.

🔍 읽는 포인트 : 두 번째 문장 "갱신하는 규칙을 CLAUDE.md에"입니다. 문서를 한 번 만드는 것보다 계속 맞춰 두는 규칙 이 중요합니다.

그리고 주기적으로 "docs/architecture.md와 실제 코드 구조가 다른 곳이 있는지 점검해줘" 라고 시킵니다.

3.3 반례 — 이건 결정 기록이 아닙니다

대상왜 아닌가
"DB: PostgreSQL" 한 줄결정만 있고 맥락 · 대안 · 결과가 없다 . 왜인지 모른다
AI와 대화하며 정한 내용대화는 메모리 (0절 축 1). 세션이 끝나면 사라진다
아키텍처 문서의 폴더 목록현재 구조(무엇)일 뿐, 이유(왜)가 없다

4. 클라우드 기본 용어

4.1 정의와 용어표

클라우드 — [인프라 이용 방식]인데, [ 남의 데이터센터에 있는 컴퓨터 · 저장소를 인터넷 너머로 빌려 쓰고 쓴 만큼 낸다 ]는 점에서 내 건물에 장비를 두고 직접 운영하는 방식과 구별된다(0절 축 3).

개념뜻클래스온에서
IaaS / PaaS / SaaS빌리는 범위: 서버 자체 / 실행 환경(코드만 올리면 돌려 줌) / 완성된 서비스서버는 PaaS, 결제는 SaaS(결제 대행사)
서버리스 함수 / 컨테이너요청이 올 때만 잠깐 실행되는 코드 조각 / 프로그램과 실행 환경을 통째로 묶은 꾸러미(서버 실행 방식의 다른 선택지)
리전데이터센터가 있는 지역사용자가 한국이므로 서울 리전
관리형 DB백업 · 보안 패치를 클라우드가 대신 하는 DBPostgreSQL 관리형
오브젝트 스토리지사진 · 파일을 통째로 보관하는 저장소클래스 사진
CDN화면 파일을 사용자 가까운 곳에 복사해 두고 빠르게 전달하는 망화면 배포 (22차시)
비밀값 관리 서비스API 키 같은 비밀값을 안전하게 보관하고 필요한 프로그램에만 건네는 서비스결제 비밀키 (21차시)

🔍 읽는 포인트 : IaaS → PaaS → SaaS로 갈수록 클라우드가 관리하는 범위가 넓어지고 내가 손댈 범위가 줄어듭니다 (0절 축 4). 코드를 읽지 않는 사람에게는 대체로 오른쪽이 유리합니다(2.3).

앞으로 다시 만납니다 — 15차시에서 이 구성을 설정 파일(코드) 로 적어 되돌릴 수 있게 만들고, 21 · 22차시에서 서버와 화면을 실제로 인터넷에 공개합니다.


5. 클래스온 — 1일차 산출물 묶음

docs/
├── requirements.md      # 3차시 — 무엇이 맞는 상태인가
├── scope.md             # 4차시 — Must / Should / Could / Won't
├── api.md               # 4차시 — 화면 ↔ 서버의 약속
├── design.md            # 6차시 — 디자인 토큰 · 상태 규칙
├── architecture.md      # 8차시 — 무엇이 어디에
└── adr/                 # 8차시 — 왜
    ├── 0001-monorepo.md
    ├── 0002-database.md
    └── 0003-hosting.md

🔍 읽는 포인트 : 오른쪽 주석의 차시 번호만 보면 1일차 전체가 한눈에 들어옵니다.

⭐ 이 문서들이 2일차 모든 에이전트의 맥락 이 됩니다. 1일차는 코드를 한 줄도 쓰지 않았지만, 2일차에 AI가 빠르게 코드를 만들 때 무엇이 맞는지 판정할 기준 을 전부 여기서 만들었습니다(README 4장: 결정이 구현보다 먼저 온다).


6. 실습 — 맡기고 검수하기

이 차시는 내가 결정권을 쥐는 곳 입니다(README 9.2: 아키텍처 결정 승인). AI는 선택지와 근거를 정리하고, 결정은 내가 합니다.

지시

architect 역할로 클래스온의 서버 실행 방식(hosting)에 대한 ADR 초안을 써줘.
- 대안 최소 3개(예: PaaS, 서버리스 함수, 직접 관리하는 가상 서버)를 [대안 | 장점 | 단점 | 월 예상 비용 범위 | 운영 시 내가 할 수 있는 일 / 없는 일] 표로 비교
- 비용 · 기능은 각 서비스의 공식 문서 주소를 근거로 쓰고, 확인 못 한 칸은 "확인 필요"로 남길 것. 추측으로 채우지 마
- 결정 칸은 비워 두고 "사람 결정 필요"라고 쓸 것
- docs/adr/0003-hosting.md로 저장하고 원문을 보고에 붙여줘

받을 증거

  • ADR 초안 원문
  • 비교표의 각 칸에 붙은 공식 문서 주소

내가 직접 확인할 것

볼 것이걸로 아는 것 / 왜 내가 보는가
공식 문서 주소 몇 개를 직접 열어 가격 · 기능이 표와 맞는지AI가 기억하는 가격 · 이름은 오래됐거나 지어낸 것일 수 있음
"운영 시 내가 할 수 있는 일" 열에 대시보드 · 로그 보기 · 롤백 버튼 이 있는지장애 때 코드 없이 손댈 수 있는 플랫폼인지 (2.3)
결정 칸이 비어 있는지AI가 결정까지 해 버리지 않았는지. 결정은 내가 내리고 직접 적음
내 결정을 적은 뒤, 새 세션에서 "서버 실행 방식을 바꾸는 게 좋을까?"라고 물어보기에이전트가 ADR을 읽고 "이미 검토해 기각했다"고 답하는지. 기억이 디스크에 있는지 확인 (0절 축 1)

부록 A. 스스로 확인하기

#질문답이 있는 곳
1네 계층과 각 계층이 하지 않는 일은?1.2
2모놀리스와 모노레포는 같은 축인가?2.1
3트랜잭션을 유와 종차로 정의하면? 예약에 왜 필요한가?2.1, 3.1
4AI와 함께 개발할 때 추가로 볼 기술 선택 기준은?2.3
5처음부터 마이크로서비스를 고르면 안 되는 이유는?2.4
6ADR의 네 부분은? "검토한 대안"이 가장 쓸모 있는 이유는?3.1
7ADR과 아키텍처 문서의 차이는?3.2
8이해 부채란 무엇이고, 무엇으로 줄이나?3.2
9IaaS · PaaS · SaaS를 "누가 관리하는가" 축으로 놓으면?4.1
101일차 산출물이 2일차에 하는 역할은?5

부록 B. 자주 하는 실수

실수바로잡기
AI가 추천한 스택을 이유를 묻지 않고 그대로 받는다❌ 대안과 기각 이유를 요구합니다 (2.4)
결정은 했지만 기록하지 않는다❌ 다음 세션에서 에이전트가 다른 걸 제안합니다 (3.3)
처음부터 마이크로서비스 · 쿠버네티스를 고른다⚠️ 1인 + AI 팀에는 운영 부담이 너무 큽니다 (2.4)
ADR에 "검토한 대안"을 빼먹는다❌ 나중에 가장 쓸모 있는 부분입니다 (3.1)
기술 선택에 "내가 운영할 수 있는가"를 빼먹는다⭕ 관리형 · 대시보드 · 롤백 버튼이 있는 쪽 (2.3)
아키텍처 문서를 한 번 쓰고 갱신하지 않는다⭕ 갱신 규칙을 지침 파일에, 주기적으로 대조 (3.2)
클라우드 가격 · 기능을 AI 답변으로 확정한다⚠️ 공식 문서 주소를 받아 직접 확인 (6)

부록 C. NotebookLM 복습 프롬프트

이 8차시 노트만 근거로 6문제를 내줘. 코드를 모르는 사람 기준으로.
"네 계층과 하지 않는 일", "모놀리스와 모노레포", "ADR의 네 부분과 검토한 대안", "ADR과 아키텍처 문서", "IaaS · PaaS · SaaS"는 반드시 포함해줘.
답은 내가 답한 다음에 채점하고, 틀린 이유를 노트의 절 번호를 근거로 설명해줘.