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