코드를 작성할 때 아키텍처, 디자인 패턴에 대한 많은 고민들을 한다. 간단하게 아키텍쳐와 디자인 패턴의 차이부터 정확하게 알고 싶었다. 프로젝트를 하면서 SwiftUI에서 어떠한 아키텍처를 사용하는 것이 좋을지가 요즘 가장 큰 관심사이다.
아키텍쳐 중 흔히 들어본 MVVM, MVC, MVP 등등... 정말 많은 공부가 필요할 것 같다. 또한 이중에 SwiftUI에 잘 맞는 아키텍쳐는 무엇일지 평생 풀어야할 과제일 것 같다.
아키텍쳐와 디자인 패턴의 차이를 알아보자.
소프트웨어 아키텍쳐
소프트웨어 아키텍처는 소프트웨어 시스템의 전체적인 구조를 정의한다. 아키텍처는 시스템의 확장성, 유지보수성, 성능 및 보안을 결정하는 데 중요한 역할을 한다. 프로젝트 초기 단계에서 결정되고, 시스템의 큰 그림과 전체적인 방향을 결정한다.
디자인 패턴
디자인 패턴은 개발자가 특정한 문제를 해결하기 위한 재사용 가능한 디자인 아이디어 또는 템플릿이다. 여기서 특정한 문제란 소프트웨어 개발 과정 중에서 자주 발생하는 설계 또는 구현 문제이다. 클래스나 모듈 레벨에서 코드를 작성할 때 코드의 유지보수성, 확장성, 가독성, 효율성에 대한 문제들이라고 보면 된다.
아키텍쳐와 디자인 패턴의 차이
결국 요약하자면 아키텍쳐가 전체 시스템의 구조라면 디자인 패턴은 전체 시스템의 구조가 정해진 후 클래스, 모듈 레벨에서 적용되는 것이라고 볼 수 있다. 이 두가지는 함께 유지보수성, 확장성, 가독성, 효율성을 향상시키게 된다.