아키텍처 설계

Jeong seulho·2023년 4월 26일
0

소프트웨어 공학

목록 보기
16/25

📌소프트웨어 아키텍처란(SA)

  • 소프트웨어 시스템의 청사진 : 구조, 동작, 상호작용, 비기능적 속성 등
  • 또다른 정의로는 설계시 나오는 다양한 의사결정들의 집합

📖계층 아키텍처

  • 계층 아키텍처 예시

📖컴포넌트 아키텍처

  • 컴포넌트 : 독립적으로 수행가능한 모듈 또는 클래스 or 아키텍처의 한 부품(부분)
  • 아래 예시에서는 4가지 기본 컴포넌트들을 기반으로 설계

📖아키텍처 특징

  • 아키텍처는 중요한 컴포넌트들을 강조하고 컴포넌트들 간의 관계, 네트워크를 표현해야 한다
  • 아키텍처는 실제 개발단계, 평가단계, 유지보수 등 에서 도움을 줄 수 있다
  • 아키텍처는 비기능적 요구사항에도 큰 영향을 미친다

아키텍처가 비기능적 요구사항에 미치는 영향 예시

써드파티 컴포넌트는 다른곳에서 가져온 컴포넌트 수정 불가능, C1 ~ C4는 직접 만든 컴포넌트들
써드파티 컴포넌트들 다른 컴포넌트로 교체하려한다.
이때, 왼쪽 SA는 C1 ~ C4를 모두 수정해야함 / 오른쪽은 래퍼라는 중간 미들웨어를 두어서 래퍼만 수정하면 됨
아키텍처가 비기능적 요구사항(유지보수 관점)에 미치는 영향

📌아키텍처 설계 방향

  • 성능 향상 관점 : 성능에 큰 영향을 미치는 기능(DB 등)을 하나로 모은다, 모듈간의 communication을 최소화
  • 보안 관점 : 계층 아키텍처를 사용하고 중요한 정보를 inner layers에 위치하게한다
  • 안전성(자동차 소프트웨어 등) 관점 : 안전성에 영향을 미치는 기능들을 하나로 모아서 테스트 및 검증의 코스트를 줄인다
  • availability(안정적이며 지속적으로 동작하는 능력) : redundant components(중복 구성요소)"를 구현하여 "fault tolerance mechanisms(장애 허용 메커니즘)"을 구현
    • redundant components : 발생하는 장애를 대비하기 위해 여러 개의 독립적인 구성요소를 추가로 구현하는 것, 이러한 구성요소는 서로 대체 가능하며, 하나의 구성요소에 문제가 발생하더라도 다른 구성요소가 문제를 대신 처리할 수 있도록
    • fault tolerance mechanisms : 시스템이 예상치 못한 장애 상황에서도 동작을 지속할 수 있도록 하는 방법
  • 유지보수성 : 작게 나눠라(모듈화)

📖아키텍처 개선 예시

  • 초기(이미지를 업로드하고 다운로드하는 소프트웨어)
  • 업로드 모듈과 다운로드 모듈을 분리
  • redundant components 구현
  • 지역 별로 다른 업로드/다운로드 모듈을 사용(어느 한 모듈 고장나도 대체 가능, 물리적으로 가까운 곳에 서버를 두어 빠른 반응)
  • 지역별로 DB 또는 백업 DB 하나더 사용(위의 이유와 동일)
  • 요청의 종류마다 다른 서버, DB를 사용(유료 고객은 빠르고 원활한 서버, 무료 고객은 최소한의 서버 제공 등)

0개의 댓글