애플리케이션 아키텍트(AA)의 첫 30일은 개발 기간 전체의 비용을 정한다. 이때 정한 구조, 표준, 기술 선택은 개발자 수십 명이 몇 달 동안 따라야 하는 기준이 되고, 늦게 바꿀수록 고치는 값이 커진다. 이 글은 착수 후 30일을 주 단위로 나눠 해야 할 일과 그 주에 반드시 남겨야 할 산출물을 정리한 것이다.

30일을 한눈에
| 주차 | 목표 | 핵심 산출물 |
|---|---|---|
| 1주차 (D1~D7) | 현황과 제약 파악 | 이해관계자 목록, 현행(AS-IS) 시스템 분석, 제약사항·가정 목록, 초기 위험 목록 |
| 2주차 (D8~D14) | 아키텍처를 움직이는 요구사항 찾기 | 품질 요구사항 정의(수치 포함), 아키텍처 핵심 요구사항(ASR) 목록 |
| 3주차 (D15~D21) | 구조와 표준 결정 | 아키텍처 정의서 초안, 아키텍처 결정 기록(ADR), 개발 표준 정의서, 인터페이스 목록 |
| 4주차 (D22~D30) | 결정을 코드로 검증 | PoC 결과, 샘플(레퍼런스) 애플리케이션, 개발 환경 가이드, 아키텍처 검토 결과 |

순서가 중요하다. 1~2주차를 건너뛰고 3주차부터 시작하면 "멋있지만 이 프로젝트에 안 맞는" 아키텍처가 나온다.
1주차: 현황과 제약 파악
첫 주에는 설계하지 않는다. 읽고 묻는다.
할 일
- 제안요청서(RFP), 제안서, 계약서의 과업 범위를 끝까지 읽는다. 특히 비기능 요구사항(성능, 보안, 가용성)과 "~를 준수한다"로 끝나는 문장에 표시한다. 이 문장들이 나중에 검수 기준이 된다.
- 이해관계자를 만난다. 발주 부서, 운영 부서, 보안 담당, 인프라 담당, 연계 대상 시스템 담당자를 빠뜨리지 않는다. 운영 부서와 보안 담당은 늦게 만날수록 설계를 뒤집는 요구를 가져온다.
- 현행 시스템을 조사한다. 서버 구성, 사용 중인 프레임워크와 버전, DB, 연계 시스템과 방식(API, 파일, DB 링크), 월별 사용량과 피크 시간대를 확인한다.
- 바꿀 수 없는 제약을 적는다. 정해진 인프라(온프레미스, 특정 클라우드), 필수 표준 프레임워크, 망 분리 여부, 개인정보 처리 기준, 지정된 DBMS 같은 것들이다.
산출물
- 이해관계자 목록: 이름, 역할, 관심사, 의사결정 권한
- 현행 시스템 분석서: 구성도, 기술 스택, 연계 목록, 사용량
- 제약사항·가정 목록: 확인된 제약과 아직 확인 못 한 가정을 나눠 적는다. 가정에는 확인할 사람과 기한을 붙인다.
- 초기 위험 목록: "연계 대상 시스템의 API 문서가 없음"처럼 구체적으로 적는다.
2주차: 아키텍처를 움직이는 요구사항 찾기
요구사항 수백 개 중 아키텍처를 바꾸는 것은 많지 않다. 그것을 골라내는 주다.
할 일
- 품질 요구사항을 숫자로 바꾼다. "빠른 응답"은 요구사항이 아니다. "피크 시간 동시 사용자 2,000명에서 조회 화면 95%가 2초 안에 응답"처럼 조건, 측정 대상, 기준값을 함께 적는다. 숫자를 발주처와 합의하지 못하면 검수 때 다툼이 생긴다.
- 품질 속성 시나리오를 만든다. 자극(무슨 일이 생기나), 환경(언제), 응답(시스템이 어떻게 반응하나), 측정(무엇으로 판단하나) 네 칸으로 정리하면 모호함이 줄어든다.
- 아키텍처 핵심 요구사항(ASR)을 고른다. 기준은 "이 요구사항이 바뀌면 구조가 바뀌는가"다. 대용량 배치, 외부 기관 실시간 연계, 24시간 무중단, 개인정보 암호화 같은 것들이 보통 여기에 든다.
- 요구사항끼리 충돌하는 지점을 찾는다. 보안 강화와 응답 속도, 유연한 확장과 일정이 자주 부딪친다. 충돌은 AA 혼자 정하지 말고 우선순위를 발주처와 합의해 기록한다.
산출물
- 품질 요구사항 정의서: 항목마다 측정 방법과 기준값
- ASR 목록: 요구사항 ID, 선정 이유, 영향받는 구조
3주차: 구조와 표준 결정
이제 설계한다. 이 주의 결과물은 개발자가 바로 따라 할 수 있어야 한다.
할 일
- 후보 아키텍처를 두세 개 놓고 ASR 기준으로 비교한다. 비교표를 남겨야 나중에 "왜 이렇게 했냐"는 질문에 답할 수 있다.
- 애플리케이션 구조를 정한다. 레이어 구성, 업무 모듈 경계, 모듈 사이 호출 규칙(직접 호출 허용 여부, 공통 모듈 위치)을 그림과 함께 적는다.
- 기술 스택과 버전을 확정한다. 프레임워크, 라이브러리, 빌드 도구, 런타임 버전까지 적는다. 버전을 비워 두면 개발자마다 다른 버전을 쓴다.
- 주요 결정을 ADR로 남긴다. 한 결정에 한 장, "배경 / 결정 / 고려한 대안 / 결과(감수하는 단점)" 네 칸이면 충분하다.
- 개발 표준을 만든다. 패키지 구조, 이름 규칙, 예외 처리, 로그 형식과 레벨, 트랜잭션 경계, 공통 응답 형식, 보안 코딩 규칙(입력 검증, SQL 작성 방식)을 정한다.
- 인터페이스 목록을 만든다. 내부·외부 연계마다 방식, 주기, 데이터 형식, 담당자를 적는다. 상세 명세는 이후에 채워도 되지만 목록은 이 주에 있어야 한다.
산출물
- 아키텍처 정의서 초안: 논리·물리 구성도, 레이어 구조, 기술 스택, 품질 요구사항 대응 방안
- ADR 묶음
- 개발 표준 정의서
- 인터페이스 목록
ADR 예시는 이 정도면 된다.
# ADR-003 외부 기관 연계는 비동기 큐로 처리한다
- 배경: 외부 기관 API 응답이 최대 10초까지 늦어지고 장애가 잦다.
- 결정: 신청 접수는 즉시 응답하고, 연계 호출은 메시지 큐 소비자가 처리한다.
- 대안: 동기 호출 + 타임아웃(장애가 화면까지 전파되어 기각).
- 결과: 처리 상태 조회 화면과 재처리 기능이 추가로 필요하다.
4주차: 결정을 코드로 검증
문서로만 끝난 아키텍처는 개발 2주 차에 무너진다. 마지막 주에는 위험한 결정부터 실제로 돌려 본다.
할 일
- 위험이 큰 기술은 PoC로 확인한다. 처음 쓰는 프레임워크, 성능 목표가 빡빡한 구간, 외부 연계, 인증 연동이 대상이다. PoC는 "되는지"뿐 아니라 2주차에 정한 숫자를 넘는지까지 측정한다.
- 샘플 애플리케이션을 만든다. 화면 하나, API 하나, 배치 하나 정도로 표준(레이어, 예외, 로그, 트랜잭션)을 전부 지킨 레퍼런스 코드다. 개발자는 문서보다 이 코드를 복사해 시작하므로, 샘플이 곧 표준이다.
- 개발 환경을 준비한다. 저장소와 브랜치 전략, 빌드·배포 파이프라인, 정적 분석 도구, 로컬 환경 구성 방법을 한 문서에 모은다.
- 아키텍처 검토를 연다. 발주처, PM, 각 파트 리더, 운영·보안 담당이 함께 보고 ASR이 어떻게 반영됐는지 확인한다. 지적 사항은 조치 계획과 함께 기록한다.
산출물
- PoC 결과 보고서: 목표, 방법, 측정값, 결론, 남은 위험
- 샘플 애플리케이션과 사용 가이드
- 개발 환경 구성 가이드
- 아키텍처 검토 결과와 조치 계획
필수 산출물을 왜 남기는가
| 산출물 | 주로 읽는 사람 | 없으면 생기는 일 |
|---|---|---|
| 제약사항·가정 목록 | PM, 발주처 | 확인 안 된 가정이 개발 중반에 사실이 아닌 것으로 드러남 |
| 품질 요구사항 정의서 | 발주처, 테스트 담당 | 성능·보안 검수 기준을 놓고 다툼 |
| ASR 목록 | AA, 파트 리더 | 중요한 요구사항이 다른 요구사항에 묻혀 설계에서 빠짐 |
| 아키텍처 정의서 | 전 인원, 감리 | 사람마다 다른 구조로 개발 |
| ADR | 후임 AA, 유지보수 담당 | 같은 논쟁 반복, 결정 이유 유실 |
| 개발 표준 정의서 | 개발자 | 모듈마다 다른 예외·로그 처리, 통합 테스트 지연 |
| 인터페이스 목록 | 연계 담당, PM | 연계 대상과 일정 누락 |
| 샘플 애플리케이션 | 개발자 | 표준 문서를 각자 다르게 해석 |
자주 하는 실수
- 기술 선택부터 한다. 요구사항을 보기 전에 익숙한 스택을 정해 두면, 그 뒤의 분석은 결정을 합리화하는 일이 된다.
- 품질 요구사항을 형용사로 둔다. "안정적인", "빠른"은 측정할 수 없다. 숫자가 없으면 아키텍처도 검증할 수 없다.
- 문서만 쓰고 코드를 안 쓴다. 샘플 애플리케이션이 없으면 표준은 지켜지지 않는다.
- 운영·보안 담당을 늦게 만난다. 망 구성, 접근 통제, 로그 보관 기준은 구조를 바꾸는 요구사항이다.
- 결정 이유를 남기지 않는다. 석 달 뒤 "왜 이렇게 했지?"에 아무도 답하지 못하면 같은 논쟁을 다시 한다.
30일 점검표
- 과업 범위의 비기능 요구사항과 준수 항목을 모두 표시했다
- 운영·보안·인프라·연계 담당자를 모두 만났다
- 가정마다 확인할 사람과 기한이 있다
- 품질 요구사항에 측정 방법과 기준값이 있고 발주처와 합의했다
- ASR 목록과 선정 이유가 있다
- 기술 스택에 버전까지 적혀 있다
- 주요 결정마다 ADR이 있다
- 개발 표준과 그것을 지킨 샘플 코드가 있다
- 위험한 기술은 PoC로 측정까지 마쳤다
- 아키텍처 검토를 열고 지적 사항의 조치 계획을 남겼다
첫 30일의 목표는 완벽한 설계가 아니다. 개발자가 내일 아침 무엇을 어떻게 만들지 헷갈리지 않는 상태, 그리고 그 기준이 왜 그런지 설명할 수 있는 기록을 남기는 것이다.
댓글 0개
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.