소프트웨어 아키텍처?

Server_side·2023년 12월 30일
1
post-custom-banner

소프트웨어 아키텍처

  • 소프트웨어의 구성요소와 구성요소들 간의 관계를 표현한 시스템의 구조( = 골격/뼈대 라고 생각하면 좋을 듯)
  • 장점
    - 개발자간의 의사소통 원활
    - 유지보수성, 재사용성, 확장성 등 향상

소프트웨어 아키텍처 패턴

  • 소프트웨어 아키텍처를 표준화하여 상황에 맞게 적용 가능하게 만든 것
  • 여러가지 패턴들이 있지만 아래 2가지 패턴에 대해 간단하게 알아보자
  • 몇가지 패턴을 보기좋게 만든 글

1. Event-Driven(이벤트 드리븐)

  • 이벤트(키보드/마우스 클릭, 스크린 터치 등)가 발생하면 구독 시스템에게 전송하여 이벤트를 처리하는 방식

  • 느슨한 결합을 위해 비동기 방식으로 메시지를 전달

  • 구성 요소: Event Generator(이벤트 생성), Event Channel(이벤트 전달), Event Processing Engine(이벤트 처리)

  • 동작 방식
    1. 이벤트 발생
    2. 구독한 시스템에 이벤트 전달(구독 시스템: 발생한 이벤트를 처리해야하는 시스템을 말함)
    3. 구독한 시스템에서 이벤트 처리

  • 장점
    - 시스템간 느슨한 결합
    - 확장성, 탄력성이 좋음

  • 단점
    - 메시지 브로커(이벤트 전달 매개체)가 다운되면 전체 시스템 다운

2. Model-View-Controller(모델-뷰-컨트롤러)

  • 모델, 뷰, 컨트롤러로 구성요소를 나누어 역할을 구분한 패턴

  • 모델(Model)
    - 데이터 부분을 담당
    - 컨트롤러에게 받은 데이터를 가공/저장하는 역할

  • 뷰(View)
    - 화면을 담당
    - 컨트롤러를 통해 받은 데이터를 시각적으로 표현하는 역할

  • 컨트롤러(Controller)
    - 모델과 뷰 사이를 제어하는 역할(중재자)
    - 즉, 데이터를 전달하는 역할

  • 동작 방식
    1. 유저가 특정 데이터 요청
    2. 컨트롤러는 해당 요청을 모델에게 전달
    3. 모델은 로직을 통해 데이터를 가공하고 결과를 반환
    4. 반환된 데이터를 컨트롤러가 뷰로 전달
    5. 뷰에서 해당 데이터를 웹페이지에 렌더링

  • 장점
    - 각 역할로 분리되어 있기 때문에 결합도가 낮음
    - 코드의 재사용성/확장성 향상

  • 단점
    - 대규모 소프트웨어의 경우, 컨트롤러의 부담이 높아져 재사용성/확장성/유지보수성이 저하될 수 있음 (Massive-View-Controller)


마치며

소프트웨어 아키텍처 패턴은 매우 다양하며 요구사항과 개발 목적/특성 등에 따라 적절한 패턴 적용이 중요하다고 생각된다.
또한, 적용할/적용될 패턴에 대해서 공부하고 깊은 이해를 통해 적절한 개발/유지보수 등을 하는 것이 성능 향상에 도움이 될 것이라고 본다.
그리고.. 글을 다쓰고 포스팅을 하려던 순간.. 글이 다 사라지는 매직을 경험하였다..
이후 다시 쓰다보니 이전보다 정성스럽게는 쓰지못한거 같다..
하지만 다시한번 내용을 작성하면서 복기할 수 있었다고 위안을 삼는다.. ㅠ

profile
아마도 난 백엔드 style?
post-custom-banner

0개의 댓글