비기능 요구사항 누락 경험 + 결합도·관측 가능성 설계 순으로 설명
캡스톤 프로젝트에서 시스템 전체 아키텍처를 처음 직접 설계했습니다. 기능 요구사항만 정리했다가 나중에 성능·가용성·보안 같은 비기능 요구사항을 놓쳤다는 걸 알게 됐습니다. 이후엔 아키텍처 설계 시 트래픽 예측치, 응답 시간 목표, 장애 복구 시간을 먼저 정의하는 방식을 익혔습니다. 도메인 경계도 중요한데, 서비스 간 결합이 너무 높으면 변경할 때 파급 범위가 커진다는 걸 직접 겪었습니다. 통합 지점에서는 외부 시스템 변경에 느슨하게 결합된 인터페이스를 설계하는 것도 고려했습니다. 운영 관점에서는 로그·지표·알림이 설계 단계부터 포함돼야 배포 후 문제를 빠르게 파악할 수 있다는 걸 배웠습니다.
아키텍처는 당장 만들 기능보다 미래 변경 비용을 줄이는 설계라는 게 지금 갖고 있는 생각입니다.