Groo
소프트웨어 아키텍처와 디자인 패턴의 차이 본문
안녕하세요, 오늘은 개발자분들 사이에서도 많이 헷갈려하시고 정확하게 구분하지 못하는 주제 중 하나인
소프트웨어 아키텍처와 디자인 패턴의 차이에 대해서 한 번 공부해보려고 합니다. 그럼 이제 시작해보겠습니다.
👩🏫 다양한 아키텍처와 패턴을 사용하는 이유는?
만약에 특정한 프로젝트를 진행한다고 가정하겠습니다. 그 프로젝트를 참여하는 인원은 한명일 수도 있으며 또는 다수의 개발자분들이 함께 수행할 수도 있습니다. 만약 그 프로젝트를 홀로 진행한다면 프로젝트 개발 담당자는 다른 사람들과 의사소통을 하지 않아도 되며 자신의 프로그래밍 성격에 맞게 코드를 작성하면 됩니다. 그러나 이러한 방식은 이전의 개발 문화에서 지향하였던 방식입니다.
반면에 이번에는 프로젝트를 다수의 개발자분들과 함께 진행한다면 어떨까요? 프로젝트에 대한 개발 언어, 구조 및 패턴, 역할 담당 등 다양한 세부적인 내용들을 나누게 될 것입니다. 이 과정은 앞에서 홀로 진행하였던 프로젝트보다는 더욱 복잡해질 것이지만 프로젝트의 성과 및 코드의 질은 훨씬 뛰어날 것입니다. 또한 프로젝트의 협업은 현대 개발 문화에서 지향하고 있으며 아주 중요합니다.
1. 인수인계 능률 증가
새로운 신입 개발자가 기존의 개발자를 뒤 맡아 프로젝트를 담당하게 된다면 프로그램 내에 체계적인 구조와 패턴을 활용하여 작성된 코드 덕분에 조금 더 쉽게 프로그램을 이해할 수 있을 것입니다.
2. 복잡한 구조 단순화
프로그램 내에 복잡한 부분을 팀원들과 함께 상의하여 한 가지의 구조로 통합시켜 프로젝트를 진행하는 과정 속 의사소통을 보다 더 원활하게 진행시키며 동일한 방식으로 코드를 작성할 수 있습니다.
3. 해결 방안 도출
많은 개발자들 사이에서 검증된 다양한 아키텍처와 패턴을 활용하여 개발한다면 프로그램 개발 시에 발생하는 다양한 에러의 원인과 내용들을 쉽게 도출할 수 있을 것이며 많은 도움이 됩니다.
4. 효율적인 코드 작성
다양한 아키텍처와 패턴들을 활용하여 코드를 작성한다면 프로그램 내의 코드들은 체계적인 구조를 갖출 것이며 추후 유지보수 단계에서 훨씬 편할 것입니다. 또한 효율적인 코드 작성이 가능합니다.
🖥 소프트웨어 아키텍처란?
책과 인터넷에 소프트웨어 아키텍처의 정의에 대해서 찾아본다면 이 주제에 대해 다양한 의견들이 존재하는 것을 볼 수 있습니다. 저 또한 이렇게 다양한 내용들 중에서 어떠한 것이 진실되고 가장 명확한지 구분하기 위해 수많은 자료들을 검색하고 알아보았습니다.
그러던 중 저는 많은 자료들에서 소프트웨어 아키텍처에 대해 공통적으로 언급하고 있는 내용을 찾아내게 되었습니다. 그것은 바로 소프트웨어 아키텍처란 시스템을 구성하는 서브 시스템, 컴포넌트와 같이 구성요소 간의 관계를 관리하는 시스템의 구조라고 합니다.
🎨 디자인 패턴이란?
소프트웨어 개발 분야에서 디자인 패턴은 프로그램 개발 과정 속에서 자주 나타나는 문제들을 쉽게 해결하기 위한 방법으로 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 바탕으로 이후에도 재사용할 수 있기 좋은 형태로 가공하여 정리한 것입니다. 간단한 예시를 들면 선배 개발자가 자신이 이전에 마주한 문제에 대해 풀이 과정을 정리해두어 후배 개발자에게 설명해주는 것입니다.
이 과정을 통해 후배 개발자는 선배 개발자가 이전에 마주친 문제를 마주치더라도 선배 개발자가 이전에 설명해준 풀이 과정을 통해 보다 더 빠르게 문제를 해결할 수 있을 것입니다. 즉 이와 같이 디자인 패턴을 활용한다면 프로그래밍 개발이 조금 더 수월해집니다.
🎭 소프트웨어 아키텍처와 디자인 패턴의 차이점
마지막으로 오늘의 핵심이라고 할 수 있는 SW 아키텍처와 디자인 패턴의 차이점에 대해서 알아보겠습니다. 소프트웨어 아키텍처는 프로그램 내에서 큰 구조로 구성되어 다른 구성 요소들을 관리하는 역할을 합니다. 반면에 디자인 패턴은 특정 유형의 문제를 해결하는 방법으로 소프트웨어 아키텍처보다는 조금 더 좁은 개념에 포함됩니다. 이 둘은 유사성을 가지나 범위의 제한이 존재하는 것이죠.
👍 글을 마치며
오늘은 소프트웨어 아키텍처와 디자인 패턴의 개념, 사용 목적 그리고 차이점에 대해서 알아보는 시간을 가졌습니다. 저 또한 오늘 글을 작성하기 위해 오랜 시간 동안 공부를 하였으며 책과 함께 다양한 문서들을 참고하였습니다. 소프트웨어 아키텍처와 디자인 패턴은 현대 개발 문화에서 적극적으로 지향하고 있는 기술들이며 특히 협업 과정에서 이를 사용한다면 더 많은 이점들을 얻을 수 있을 것입니다. 또한 혹시 위의 내용들 중 틀린 부분이 존재하거나 보완해야 할 부분이 보인다면 댓글로 남겨주시기 바랍니다. 감사합니다.
'프로그래밍 기초 > Pattern' 카테고리의 다른 글
Dependency Injection 디자인 패턴 (0) | 2020.05.04 |
---|---|
Clean Architecture 아키텍처 패턴 (2) | 2020.04.30 |