본문 바로가기

CS

[CS]아키텍처란?

아키텍처(Architecture)란?


시스템 구조같은 개념이 아닐까?

아키텍처는 건축이라는 뜻이니까 프로그래밍에서 쓰인다면 대충 구조와 같은 개념이 아닐까 생각했습니다. 하지만 대충이란 부분을 걷어내기 위해 블로그를 시작한 만큼 이번 기회에 프로그래밍에서 사용하는 아키텍처란 개념이 무엇인지에 대해 알아보았습니다.

개념

  • 아키텍처는 쉽게 말해 프로그램의 밑그림 개념인 시스템 설계도입니다.

왜 개발에 아키텍처가 필요할까?

  • 설계도 없이 개발을 한다면 설계도 없이 집을 짓는 것과 마찬가지로 기능이 중복되거나 예상치 못한 에러에 대응이 어려운 문제가 있습니다.
  • 따라서 시스템의 구성환경, 동작원리, 내부 상호작용, 외부 환경(유저 반응 등) 등을 고려하여 시스템 최적화를 목표로 설계도를 작성하는 것입니다.

아키텍처엔 무엇이 포함될까?

  • 아키텍처엔 프로그램이 어떻게 구성되어 있으며 어떻게 작동하는지에 대한 내용이 포함됩니다.
  • 당연히 프로그램을 쪼갠 구성 요소들과의 관계, 외부 환경과의 관계에 대한 내용도 포함됩니다.
  • 프레임 워크는 무엇을 사용하고 라이브러리는 무엇을 사용하는 지에 대한 고민도 포함됩니다.
  • 구현하고자 하는 목적, 각 단계의 제한상황과 극복, 각 단계에서의 최적의사결정이 반영되어야 합니다.
+ 알파
  • 아키텍처는 개발의 복잡함을 해결하기 위한 목적임으로 단순해야 하며 설명이 필요하지 않은 형태가 이상적이다.
  • 아키텍처는 불변의 개념이 아니라 시간의 흐름에 따라 요구사항 및 환경이 변해가며 수정하고 바뀌어간다.(최적의사결정의 집합)
  • 추후에 추가 기능, 수정을 위해서도 아키텍처는 중요하다. 뼈대가 부실하면 증축이 어렵다.

우리에게(= 주니어 개발자)에게 익숙한 개념은 없을까?

  • 전체 프로그램의 설계도인만큼 주니어개발자가 아키텍처 개념이 익숙하긴 어렵습니다. 그렇다고 아키텍처를 모르는 것도 말이 안됩니다.
  • 애플에서는 아키텍처로 MVC패턴을 권장합니다. (MVC 패턴이란?)

주니어개발자의 공부를 위해 작성된 내용이며 틀린 내용이나 추가할 내용이 있으면 댓글로 남겨주시며 감사하겠습니다. 내용은 추가되거나 수정될 예정입니다.