Designing Apps Using an Architecture Framework #1 - Why is Architecture Important?
좋은 애플리케이션 아키텍처를 설계하는 것이 왜 중요한지 살펴보도록 하겠다.
소프트웨어 솔루션의 품질 기준
1991년, 국제표준화기구(ISO)와 국제전기기술위원회(IEC)는 소프트웨어 솔루션의 품질에 관한 표준을 만들었다.
- 사용자 관점에서의 "유용성"
- 필요를 충족시키는 기능 집합으로서의 "기능성"
- 사용된 리소스의 양과 성능과 연관된 "효율성"
- 수정하는 데 필요한 노력과 관련된 "유지 보수성"
- 환경 간에 소프트웨어를 이동하는 기능을 정의하는 "이식성"
- 소프트웨어 솔루션이 일정 기간 동안 성능을 유지할 수 있도록 보장하는 "안정성"
초기에 위 특성이 포함되었다.
그리고 2011년 표준이 업데이트되면서 아래 특성도 포함되었다.
- 소프트웨어 솔루션이 정보와 데이터를 보호할 수 있도록 "보안"
- 소프트웨어 일부가 다른 시스템과 함께 작동할 수 있도록 하는 방법으로 "호환성"
아키텍처 개념 부족 시 생길 수 있는 문제점
- (핵심 비즈니스 개념에 대한 서비스가 올바르게 분리되고 추상화되지 않으면) 코드 재사용이 줄어들고 비즈니스 규칙이 분산되는 경향이 있음
- 올바르게 격리되지 않은 시스템 간의 종속성은 관리할 수 없다.
- 시스템을 업데이트하거나 교체하면 "Snowball effect"가 생길 수 있음
- 코드 내 한 부분을 수정하면 다른 부분에서 문제가 생길 수 있음
- 시스템 유연성이 떨어지고 관리하기가 휠씬 더 어려워짐
이러한 아키텍처를 "Spaghetti Architecture"라고 부르며
"강하게 결합된 아키텍처", "취약한 아키텍처"라고도 함
아키텍처가 중요한 이유
- 솔루션에 대한 인식과 이해가 높아짐
- 관련된 모든 사람과 팀 간 공통된 관점으로 커뮤니케이션이 가능해짐
- 원래 디자인 및 설계를 변경해야 할 상황이 발생하면 시스템 아키텍처를 변경해야 할 사항을 정확하게 확인할 수 있음
- 프로젝트 전체 비용을 줄이는데 도움이 됨