프로젝트 아키텍처
`소프트웨어 개발 프로젝트의 기본적인 구조`
프로젝트의 요구사항을 충족시키기 위해 `시스템의 구성 요소와 그 관계`를 정의하고, 이러한 요소들이 어떻게 `상호작용`하는지를 설명하는 설계도.
즉, 프로젝트 아키텍처는 건물을 짓기 위한 청사진과 같으며, 이를 통해 개발자들은 각자의 역할을 명확히 이해하고, 시스템의 전체적인 모습을 파악할 수 있음
프로젝트 아키텍처의 필요성
- 명확한 구조 제공:
- 프로젝트 아키텍처는 시스템의 전체 구조를 명확하게 정의한다. 이를 통해 팀원들이 시스템의 구성 요소와 상호 작용을 명확하게 이해할 수 있게 한다.
- 효과적인 의사소통 촉진:
- 프로젝트 아키텍처 문서는 프로젝트 이해관계자 간의 공통 이해를 촉진한다. 이를 통해 개발팀, 관리팀, 고객 모두가 동일한 목표와 방향을 공유할 수 있게 한다.
- 일관성 유지:
- 아키텍처는 프로젝트 전반에 걸쳐 일관성을 유지하도록 한다. 모든 팀원이 동일한 표준과 규칙을 따르기 때문에 개발 과정에서 혼란을 줄일 수 있다.
- 재사용성 향상:
- 잘 설계된 아키텍처는 코드와 구성 요소의 재사용성을 높인다. 이를 통해 개발 시간과 유지보수 비용을 줄일 수 있게 한다.
- 위험 관리:
- 프로젝트 아키텍처는 잠재적인 위험 요소를 식별하고 이를 완화할 계획을 수립하도록 한다. 이를 통해 프로젝트 실패의 가능성을 줄일 수 있다.
- 성능 및 확장성 보장:
- 초기 단계에서 적절한 아키텍처 설계를 통해 시스템의 성능과 확장성을 보장할 수 있게 한다. 이는 프로젝트가 성장하고 더 많은 사용자와 데이터를 처리할 수 있도록 하는 데 중요하다.
- 보안 강화:
- 프로젝트 아키텍처 문서는 보안 요구 사항과 방법을 포함한다. 이를 통해 데이터 보호, 접근 제어, 인증 및 권한 부여 메커니즘을 정의할 수 있게 한다.
- 자원 관리 효율화:
- 아키텍처는 프로젝트에 필요한 자원을 정의하고 할당하도록 한다. 이를 통해 자원의 낭비를 줄이고 효율성을 극대화할 수 있게 한다.
- 개발 및 유지보수 용이:
- 명확한 아키텍처는 개발 과정 뿐만 아니라 유지보수 과정에서도 큰 도움을 준다. 새로운 기능을 추가하거나 버그를 수정할 때 시스템 구조를 쉽게 이해하고 접근할 수 있게 한다.
- 프로젝트 일정 관리:
- 아키텍처는 프로젝트의 주요 마일스톤과 일정을 정의하도록 한다. 이를 통해 프로젝트 진행 상황을 모니터링하고 프로젝트가 제시간에 완료되도록 할 수 있다.
아키텍처 패턴
3계층 구조 (Three-Tier Architecture)
프레젠테이션(사용자 인터페이스), 애플리케이션 로직, 데이터 계층으로 나뉨
각 `계층이 독립적`으로 변경 가능하며 유지보수성과 확장성이 높지만 `계층 간 데이터 전달`로 인해 성능 저하가 발생할 수 있음
MVC (Model-View-Controller)
모델(데이터), 뷰(사용자 인터페이스), 컨트롤러(로직)으로 나뉨
각 구성 요소를 독립적으로 변경할 수 있어 유지보수가 쉽지만 작은 프로젝트에선 복잡도가 증가할 수 있음
마이크로서비스 아키텍처 (Microservice Architecture)
애플리케이션을 작은 독립 서비스로 분리하여 개발하고 배포.
독립 배포 가능, 각 서비스 독립적으로 확장할 수 있으나 서비스 간 통신 복잡성 증가, 배포 및 관리가 어려울 수 있음
아키텍처 결정에 영향을 미치는 요소
프로젝트 요구사항, 팀의 기술 스택, 예산, 시간 제약 등의 요소에 따라 설계함
개발자에게 아키텍처가 중요한 이유
클린 아키텍처 클린 아키텍처는 프로젝트가 확장될 때 그 위력을 발휘한다. 프로젝트가 확장됨에 따라 로직이 여러 차례 바뀌게 되고 데이터 의존성은 뒤죽박죽 되기 십상이다. 이를 사전에 방
devent.tistory.com
아키텍쳐의 중요성
강연 초반에 마틴 파울러가 말합니다." 우리가 처음 개발할 때, 설계 아이디어에서 모듈화에 대해 크게 걱정하지 않고, 품질이 낮더라도 수 많은 기능 개선을 해 왔을 것입니다.만약, 이러한 노
velog.io
'백엔드 공부일지' 카테고리의 다른 글
DI(의존성 주입)와 DIP(의존 역전 원칙) (0) | 2025.04.02 |
---|---|
REST API 개념과 예시 (스프링부트) (1) | 2025.03.26 |