Premises Architecture > technical decisions - 모든 기능 개발에 cross-cutting하는 기술적 결정 - 프레임워크, 코딩 표준, 문서화, 프로세스 등 - 프로젝트 후반에 바꾸기 어려운 기술적 결정 - 시스템의 큰 그림이며, 컴포넌트들과 그들의 관계 - 결정을 최대한 미루어 변화에 유연하게 만드는 것 - 컴포넌트와 모듈을 재사용 할 수 있게 만드는 것 - 코딩 표준, 개발 단계, CI/CD, 배포 등과 같은 표준을 만드는 것 - 한 사람이 결정하는 것이 아닌, 여러 팀의 숙련된 개발자 길드가 결정 ** 길드 - Spotify Engineering Culture Video Architect - 아키텍처의 수호자 / 촉진자 - 가장 숙련된 개발자로 큰 그림 상의 문제를 분석하고 해결하는데 더 “많은 책임" - 아키텍처와 관련된 사안을 결정할 때, 강력한 투표권 - 모든 개발자는 어느 시점이 되면 아키텍트가 되는데, 그때 아키텍처에 대해 제대로 이해 필요 - 숙련된 개발자는 어떤 방식으로든 아키텍처에 기여하기 때문에, 아키텍처 관리에 책임을 가짐 - 안티패턴 : 상아탑(Ivory Tower) 아키텍트 - 모든 것을 독단적으로 결정하는 아키텍트 Software Architecture […] is the set of structures needed to reason about the system, which comprises software elements, relations among them, and properties of both. Clements et al, 2010