Skip to main content

Command Palette

Search for a command to run...

2024.07.10 아키텍처 패턴

Published
2 min read
2024.07.10 아키텍처 패턴
T

안녕하세요! Web개발을 공부하고 있는 윤종일 입니다. 현재는 Java 백엔드 개발을 깊게 파고들고 있어요! 제 궁극적인 목표는 풀스택 개발자가 되는 것입니다. 프론트엔드와 백엔드 모두를 자유롭게 넘나들며, 사용자에게 가치를 전달할 수 있는 완성도 높은 애플리케이션을 만드는 것이 목표입니다.

소프트웨어 아키텍처 패턴

개념

  • 외부에서 인식할 수 있는 특성이 담긴 소프트웨어의 골격이 되는 기본 구조

  • 소프트웨어를 설계할 때 참조할 수 있는 전체적인 해결 방식

  • 주어진 상황에서의 소프트웨어 아키텍처에서 일반적으로 발생하는 문제들에 대한 일반화되고 재사용 가능한 솔루션

필요성

  • 상황별 패턴을 수립 적용하여, 고객과 의사소통을 통해 요구사항을 만족시키고, 생산성과 품질 확보 가능

  • 데이터 중심 아키텍처는 공유 데이터 저장소를 통해 접근자 간의 통신이 이루어지므로 각 접근자의 수정과 확장이 용이

  • 이미 검증된 구조로 개발하기 때문에 소프트웨어 개발의 안정적으로 수행이 가능

  • 시스템의 특성을 개발 전에 예측 가능

  • 비즈니스 로직만 알고 있다면 소프트웨어 아키텍처 패턴을 사용하여 소프트웨어를 쉽게 개발 가능

유형

  • 소프트웨어 아키텍처 패턴은 계층화, 클라이언트-서버, 파이프-필터, 브로커, 모델-뷰-컨트롤러, 마스터-슬레이브, SOA 패턴 등이 있다.
  1. 계층화 패턴(Layered Pattern)

    • 계층화 패턴은 시스템을 계층으로 구분하여 구성하는 패턴

    • 각 하위 모듈들은 특정한 수준의 추상화를 제공하고, 각 계층은 다음 상위 계층에 서비스를 제공

    • 계층화 패턴은 서로 마주 보는 두개의 계층 사이에서만 상호 작용이 이루어짐

  2. 클라이언트 - 서버 패턴(Client-Server Pattern)

    • 클라이언트-서버 패턴은 하나의 서버와 다수의 클라이언트로 구성된 패턴

    • 사용자가 클라이언트를 통해서 서버에 서비스를 요청하면 서버는 클라이언트에게 서비스 제공

    • 서버는 계속해서 클라이언트로부터 요청을 대기

  3. 파이프-필터 패턴(Pipe-Filter-Pattern)

    • 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 단방향 패턴

    • 서브 시스템이 입력 데이터를 받아 처리하고, 결과를 다음 서브 시스템으로 넘겨주는 과정을 반복

    • 필터 컴포넌트는 재사용성이 좋고, 추가가 쉽기 때문에 확장이 용이하나, 필터 간 데이터 이동에서 데이터 변환 오버헤드가 발생

  4. 브로커 패턴(Broker pattern)

    • 브로커 패턴은 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용된다, 원격 서비스 실행을 통해 상호작용이 가능한 패턴

    • 컴포넌트 간의 통신을 조정하는 역할 수행

    • 서버는 자신의 기능들(서비스 및 특성)을 브로커에 넘겨주며, 클라이언트가 브로커에 서비스를 요청하면 브로커는 클라이언트를 자신의 레지스트리에 있는 적합한 서비스로 리다이렉션 한다.

      • Apache Kafka, JBoss Messaging 와 같은 메시지 브로커 소프트웨어가 있다.
  5. 모델-뷰-컨트롤러 패턴 (MVC)

    • MVC 패턴이라고도 하는 이 패턴은 대화형 애플리케이션을 모델 뷰 컨트롤 3개의 서브 시스템을 구조화 하는 패턴

      • 모델 : 데이터를 저장하는 곳

      • 컨트롤러: 뷰와 모델 사이에서 요청을 받아서 처리하는 곳

      • 뷰 : 사용자에게 정보 표시하는 곳

    • 각 부분이 별도의 컴포넌트로 분리되어 있어서 서로 영향을 받지 않고 개발 작업 수행 가능

    • 컴포넌트를 분리하며 코드의 효율적인 재사용을 가능하게 하고, 여러 개의 뷰가 있어야 하는 대화형 애플리케이션 구축에 적합

  6. 마스터 - 슬레이브 패턴(Master-Slave pattern)

    • 마스터-슬래이브 패턴은 연산, 통신, 조정을 책임지는 마스터와 제어되고 동기화되는 대상인 슬레이브로 구성되는 패턴

    • 슬레이브 프로세스는 데이터 수집기능을 수행할 수 있음

    • 일반적으로 실시간 시스템에서 사용

  7. SOA패턴(Service Oriented Architecture)

    • 네트워크에서 공통의 통신 언어를 사용하는 서비스 인터페이스를 활용하여 소프트웨어 구성요소를 다시 사용할 수 있게 만드는 소프트웨어 아키텍처

More from this blog

서브넷 이해하기

서브넷 IPv4 IPv4로 보자면 데이터 전송 방식은 유니캐스트 멀티캐스트 브로드 캐스트다. 32bit 숫자로 구성되어 있다. 일반적으로 4개의 10진수로 표현된다. 데이터 전송 방식 데이터 전송 방식설명 유니캐스트한 대의 컴퓨터가 다른 한 대의 컴퓨터에게 데이터를 보내는 방식 멀티캐스트한 대의 컴ㅂ퓨터가 특정 그룹에 속한 여러 컴퓨터에게 ㄷ이터를 보내는 방식 브로드캐스트한 대의 컴퓨터가 같은 네트워크에 있는 모든 컴퓨터...

Aug 5, 20242 min read3
서브넷 이해하기

네트워크 계층

네트워크 계층 네트워크는 원하는 정보를 원하는 수신자 또는 기기에 정확하게 전송하기 위한 기반 인프라이다. OSI 7계층 (지겹지만 반복) OSI 7계층은 국제 표준화 기구인 ISO(International Standardization Organization)에서 개발한 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 개방형 시스템 상호 연결 모델이다. 각 계층은 서로 독립적으로 구성되어 있고, 각 계층은 하위 계층의 기...

Jul 29, 20243 min read3
네트워크 계층

메모리 단편화

메모리 단편화 메모리 단편화란 분할된 주기억장치에 프로세스를 할당, 반납 과정에서 사용되지 못하고 낭비되는 기억장치가 발생하는 현상이다. 유형으로는 내부 단편화와 외부 단편화가 있다. 내부 단편화 내부 단편화 개념 내부 단편화는 분할된 공간에 프로세스를 적재한 후 남은 공간이다. 내부 단편화는 고정 분할 할당 방식 또는 페이징 기법 사용 시 발생하는 메모리 단편화다. 해결 방안설명 슬랩 할당자 (Slab Allocator)페...

Jul 20, 20241 min read

2024.07.13 애플리케이션 테스트 수행

애플리케이션 테스트 수행 IDE 도구 개념 IDE(Integrated Development Environment) 도구는 코딩, 디버그, 컴파일, 배포 등 프로그램 개발과 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어이다. 기존에는 컴파일러, 텍스트 편집기, 디버거를 따로 사용했으나 통합 개발환경을 통해 하나로 묶은 대화형 인터페이스를 제공한다. IDE 도구의 기능 IDE 도구는 다양한 기능을 통합한 형태...

Jul 12, 20242 min read2
2024.07.13 애플리케이션 테스트 수행
J

Java 백엔드 및 풀스택 개발

111 posts

안녕하세요! Web개발을 공부하고 있는 윤종일 입니다. 현재는 Java 백엔드 개발을 깊게 파고들고 있어요! 제 궁극적인 목표는 풀스택 개발자가 되는 것입니다. 프론트엔드와 백엔드 모두를 자유롭게 넘나들며, 사용자에게 가치를 전달할 수 있는 완성도 높은 애플리케이션을 만드는 것이 목표입니다.

E-Mail : ji4971@naver.com