아키텍쳐

박준수·2023년 4월 17일
0

아키텍쳐란?

  • 아키텍쳐는 영어로 ‘건축학’ 이라는 뜻입니다.
  • 개발분야에서는 이 ‘건축학’을 어떻게 쓰는것일까요?
  • 두 개의 옷장을 예시로 알아보겠습니다.

https://blog.kakaocdn.net/dn/cScWgc/btrAFWhKcEL/ZdfyhKUAFPJ6uwLK54oLq1/img.jpg

https://blog.kakaocdn.net/dn/FqYEP/btrAFVwl22g/XYXGYnXIcrPStMNk1VIBHK/img.png

  • 두개의 옷장은 전부 같은 양의 옷을 보관하고 있다고 가정하겠습니다.
  • 그리고 옷은 하나의 기능, 즉 코드로 작성된 함수라고 하겠습니다.
  • 두 옷장은 같은 동작을 수행합니다.
  • 같은 양의 옷이 보관되어있고 양말을 꺼내고 싶다(input) 양말이 나온다(output)과 같은 기능을 수행할 수 있습니다.
  • 하지만 a 양말을 버려야 한다. b 티셔츠를 꺼내서 당근마켓에 올려야 한다. 라는 요청사항이 들어왔을때 어떤 옷장이 동작을 수행하기 빠를까요?
  • 아키텍쳐는 이러한 옷장과 비슷하다고 합니다.
    • 물론 옷장은 옷을 보관하는 용도만 수행하지만 아키텍쳐는 아닙니다.
    • 각 모듈들은 서로 데이터를 주고 받고 영향을 끼칠 수도 있습니다.

왜 좋은 아키텍쳐를 설계해야 할까?

소프트웨어 아키텍처는 아쉽게도 외부에 드러나지 않습니다.

같은 기능을 수행하는 a, b 프로그램이 있습니다.

a 프로그램은 잘 설계된 아키텍처를 가지고 있습니다. 가격은 200달러 입니다.

b 프로그램은 좋지 못한 아키텍처를 가지고 있습니다. 가격은 100달러 입니다.

프로그램을 구매해야 하는 사람의 입장에서 보면 a, b중 어떤 프로그램을 구매할까요?

b를 구매하는 사람이 많지 않을까 싶습니다.

우리는 물건을 구매할때 비용과 품질의 트레이드오프가 일어납니다. 아반떼와 포르쉐 카이옌의 가격은 다르고 더 좋은 품질을 비싼 가격에 기대하게 됩니다.

프로그램의 내부 아키텍처는 외부에 드러나지 않습니다. 그래서 아키텍처는 간과되기 쉽습니다.

개발자들이 아키텍처의 설계에 아무리 공을 들여도 비용을 관리하는 입장에서는 같은 동작이 수행되니 프로그램에서의 비용과 품질의 트레이드 오프를 이해할 수가 없습니다

프로그램에서의 비용과 품질의 트레이드 오프는 장기적인 관점에서 바라봐야 합니다.

잘 설계된 아키텍처는 기능의 추가와 기존 기능의 수정이 편리합니다.

  • 상단의 두 개 옷장에서 같은 옷을 꺼내야 하고 상의와 겉옷 칸의 위치를 바꿔야 한다고 생각해보세요.
  • 어떤 옷장이 수월할 까요?
  • 그래서 좋은 아키텍처를 가진 프로그램은 장기적으로 유지 보수와 기능의 추가가 상대적으로 매우매우 용이하여 결과적으로는 비용을 줄여줍니다.
  • 하지만 초기 비용은 증가합니다.
  • 옷이 적을때는 옷장을 더럽게 해도 저의 요청사항들(같은 옷을 꺼내기, 상의와 겉옷 칸의 위치를 바꾸기)들을 수행하기 쉽습니다.
  • 오히려 더 빠를 수도 있습니다.
  • 그래서 프로그램의 규모, 예산등이 고려되어야 하지 않을까 싶습니다. 그래도 경험상 무조건 좋은 아키텍쳐를 설계하고 가는 것이 좋지 않을까 생각이 듭니다
  • 옷은 서로 데이터를 주고 받지 않지만 소프트웨어의 각 모듈들은 서로 데이터를 주고 받아야 합니다.
  • 그러니 아키텍쳐를 단순히 분류를 넘어 데이터를 주고 받는 인터페이스 설계가 훨씬 더 중요하기 때문에 앞으로 나올 아키텍쳐 이야기에서는 1)분류와 2)인터페이스 관점을 둘 다 생각하고 읽어 주세요!

출처

https://velog.io/@teo/프론트엔드에서-MV-아키텍쳐란-무엇인가요#프롤로그

https://dkrnfls.tistory.com/370

profile
심플한 개발자를 향해 한걸음 더 (과거 블로그 : https://crablab.tistory.com/)

0개의 댓글