소프트웨어 아키텍처
소프트웨어 아키텍처는 시스템을 개발하는 것에 있어서 매우 중요한 요소입니다. 사실 이 부분에 대해서는 아직 경험이 많지 않은 제가 정의하기에 부족함이 많겠지만요. 그래도 처음 이 단어를 접하시는 분들에게 작게나마 도움이 되고자 글을 쓰겠습니다.
이렇게 중요한 만큼 개발에 대해 공부한다면 모두가 한번쯤 들어봤을 단어이기도 하지요. 아키텍처에 대해서 한마디로 정의하기 어렵습니다만 최대한 쉽게 설명하자면 아키텍처란 시스템 구성 요소에 대한 설계 및 구현을 지원하는 거대한 설계도 라고 보면 되겠습니다. 물론 위의 한 문장으로는 설명이 부족합니다만 이 카테고리에서는 간단하게 개념을 전파하는 목적을 가졌으므로 이정도로 간단하게 설명하도록 하겠습니다.
건물을 짓는데 있어 설계도가 부실하다면 많이 난감하겠지요. 그렇다고 처음의 목적에 맞춰진 형태로 꽉 잡아놓은 설계 또한 옳다고는 할 수 없습니다. 이렇게 셜계한다면 이후에 있을 추가 변경사항 및 사용자의 자유도를 빼았는 꼴이 되니깐요. 그만큼 개발에 도입하기 이전에 많은 고민이 필요한 부분입니다.
또한 아키텍처는 과거부터 지금까지 다양한 설계 패턴이 존재했습니다. 추측해 보건데 그동안 프로그래밍 언어가 계속해서 달라졌고 그 시대에 유행하는 프레임워크나 라이브러리 혹은 언어가 있었기 때문이겠지요. 그리고 기술이 발전함에 따라 구현하고 적용할 수 있는 시스템 또한 달랐을 것이라고 생각합니다.
그럼 지금부터 제가 가장 많이 본 아키텍처의 예시를 살펴보도록 하겠습니다.
MVC
제가 이번 챕터에서 소개할 아키텍처 패턴은 MVC 패턴 입니다. MVC란 Model, View, Controller 이 세 개로 구분하여 시스템을 구현하는 방식입니다. Model은 주로 데이터를 가지고 있는데, 이 데이터에 필요한 부분을 구현한 기능을 가지고 있습니다. View에서는 말 그대로 사용자의 화면을 표시하지요. 요즘의 React, Vue와 같은 느낌으로 보시면 되겠습니다. 마지막 Controller는 둘 사이의 통신을 담당합니다. 이렇게 세 가지로 구분하여 각각 기능구현에 필요한 관심사를 분리하여 시스템을 개발하지요. 제가 공부하면서 가장 많이 보기도 한 패턴이 MVC 입니다.
MVC패턴 이외에도 다양한 아키텍처가 존재하는 것으로 알고 있습니다. Client-server, Peer to peer, Event-bus 등등,, 다양하게 존재하는 것으로 알고 있습니다만 제가 나름 잘 설명할 수 있는 것이 MVC 패턴이네요.
그럼 이만 이번 아키텍처에 대한 소개를 마치도록 하겠습니다.
'IT > 개발상식' 카테고리의 다른 글
추상화 (0) | 2024.01.10 |
---|---|
Clean Code (0) | 2023.12.02 |
Interface (0) | 2023.10.08 |
객체지향 프로그래밍 (0) | 2023.09.24 |
Container (0) | 2023.09.23 |