software Architecture와 Architecture Pattern이란?
software Architecture 정의
- 소프트웨어의 골격이 되는 기본 구조이다.
- 건축학에서 건물의 구조를 건축학적으로 설계하듯 컴퓨터 공학에서는 소프트웨어의 구조(아키텍처)를 단계별로 설계하고 구축하게 된다.
Architecture Pattern 정의
- 아키텍처 패턴은 소프트웨어 시스템의 구조를 구성하기 위한 기본적인 윤곽을 제시한다.
- 아키텍처 패턴에는 서브시스템들과 그 역할이 정의되어 있으며, 서브시스템 사이의 관계와 여러 규칙 지침 등이 포함되어 있습니다.
- 일반적으로 발생하는 문제점들에 대한 일반화되고 재사용 가능한 솔루션 이다.
Architecture Pattern의 장점
- 개발 시에 발생하는 다양한 에러의 원인과 내용들을 좀 더 쉽게 파악할 수 있고, 시행착오가 줄어들어 개발 시간이 단축됩니다.
- 협업 시에 공통된 아키텍처를 공유할 수 있어 의사소통이 편해지고, 시스템의 구조를 이해하는 것이 쉬워 새로운 개발자가 온다 하더라도 프로그램 내에 체계적인 구조와 패턴을 활용하여 작성된 코드 덕분에 좀 더 쉽게 프로그램을 이해할 수 있다.
- 다양하고 검증된 아키텍처 패턴들을 활용하여 코드를 작성한다면 프로그램 내의 코드들은 체계적인 구조를 갖게 될 것이고, 추후 유지보수가 편해집니다.
좋은 아키텍처 패턴
- Distribution
- 엄격한 규칙을 가지고 Entities 사이에서 균형 있게 책임을 분배하는 것.(역할 분담이 명확하다)
- Testability
- 각각의 요소를 독립적으로 테스트할 수 있어야 한다.
- Easy of use
- 사용자의 편리함은 코드의 길이에 비례한다. 아키텍처 패턴 구현에 많은 코드가 들어가 복잡해지고, 유지보수 비용이 많이 발생한다면 사용의 편의성이 떨어진다.
마무리
Architecture 패턴이 무엇인지 간단하게 공부해보았다. 최근 토이 프로젝트로 커뮤니티를 만들기 시작했고 기능으로는 메신저, 채팅, 검색엔진을 구축하려 한다. 그렇기에 아키텍처 패턴에 대해 많은 관심을 가지게 됐다. 좋은 아키텍처 패턴을 구성할 수 없다면 좋은 개발환경을 구축할 수 없고, 좋은 성능을 가진 애플리케이션을 개발하기 쉽지 않다. 앞으로 아키텍처에 관한 많은 공부를 해야 함을 느낀다. 좋은 개발자가 되는 길은 역시나 쉽지 않은 것 같다.