아키텍처 유형들

Jeong seulho·2023년 4월 27일
0

소프트웨어 공학

목록 보기
18/25

📌Layered architecture

  • 계층적인 아키텍처

📖Layered architecture 특징

  • 각 계층은 그 위 계층에 서버스를 제공한다
  • 이미 있는 시스템 위에 새로운 기능을 쌓을 때 사용
  • 여러 팀이 각 기능 계층을 하나씩 맡아 개발할 때 사용
  • 보안성을 강화해야할 때(보안해야할 계층을 아래에 두어서 보안강화)
  • 인터페이스를 동일하게 유지하면 하나의 계층을 새로운 구현으로 만들 수 있다
    • 밑의 예에서 A운영체제의 상위 계층들을 인터페이스를 유지한채로(연결 선 5개) B운영체제(B운영체제에서 해당 인터페이스들을 지원한다면)로 그대로 옮겨서 사용 가능(새롭게 만든 구현)
  • 각 계층에 중복되는 기능을 추가하여 신뢰성 높임(여러번 검사해서 보안성 강화느낌)
  • 계층적으로 명백히 구분하는 작업이 어렵다
  • 2계층이상 건너뛰어 인터페이스 연결할 수 없어서 성능문제 발생 가능

📌Client-server architecture

  • 여러 각 서버에 역할을 나누어 클라이언트는 필요한 서버들만 조합하여 사용하는 아키텍처

📖Client-server architecture 특징

  • 여러 지역에서 공유 DB를 사용할 때 사용
  • 시스템 부하가 가변적일때 사용
  • 네트워크로 서버들을 분산 배치할 수 있다
  • DDOS공격, 서버 다운에 취약
  • 성능이 컴퓨터 시스템 뿐만 아니라 네트워크에도 의존
  • 여러 서비스들이 서로 의존관계(연동)가 있을때 관리 문제 발생

📌Model-View-Controller(MVC)

  • Model : 비즈니스 로직 수행 및 DB관리
  • View : 사용자에게 보여지는 부분
  • Controller : Model과 View를 조합하여 사용자 입력을 처리

📖MVC 특징

  • 데이터를 보여주는 것과 처리하는 것을 분리
  • 데이터를 여러방식으로 보여주고 싶을 때 사용(한가지 데이터(Model)로 표, 원형차트, 막대차트(View) 등으로 보여주고 싶음 => Model은 그대로 View만 변경)

📌이벤트 주도 아키텍처

  • sub-system1이 sub-system2를 사용하고자 한다면 핸들러에게 텍스트를 전달(이벤트 발생), sub-system2이 동작
  • 이벤트를 이용하여 서로 상호작용

📖이벤트 주도 아키텍처 특징

  • 네트워크 상에 서로 다른 컴퓨터에 분산된 컴포넌트를 통합
  • 시스템 추가, 수정, 변경등이 쉽다
  • 한 시스템에서 발생한 이벤트가 언제 처리될지 모름

📌Repository 아키텍처

  • 공유 Repository를 두고 서로 상호작용
  • 각 언어 에디터에서 코드 작성 Repository에 공유 => code generator는 공유 repo에 코드를 컴파일

📖Repository 아키텍처 특징

  • 새로운 데이터를 중앙 repo에 추가하면 어떤 액션이나 도구를 실행하게 되는 시스템에서 사용
  • 각 컴포넌트들은 독립적
  • 중앙 repo의 데이터를 일관성있게 관리
  • 중앙 repo에 문제가 있으면 전체 시스템에 영향을 준다
  • 속도측면에서 느릴 수 있다.

📌Pipe and Filter 아키텍처

  • 아래는 실제코드를 컴퓨터가 이해하는 문자로 변환하고 실행하는 예시

📖Pipe and Filter 아키텍처 특징

  • 한 컴포넌트가 출력한 데이터를 다른 컴포넌트의 입력이 됨
  • 이해하기 쉽고, 재사용이 쉬움
  • 변환, 수정이 쉽다
  • 서로 인접한 컴포넌트들 간의 데이터 형식을 미리 정해두어야함
  • 아웃풋을 인풋으로 하기위한 자료구조 변환이 생기는 부하 늘어남

0개의 댓글