architecture pattern 10

Retry 패턴 이란 ?

Retry 패턴은 애플리케이션이 일시적인 오류나 실패 상황에서 요청을 반복적으로 시도함으로써 안정성과 가용성을 높이는 설계 패턴입니다. 이는 네트워크 장애, 일시적인 서비스 중단, 타이밍 문제 등과 같은 문제를 해결하는 데 유용합니다. Source : https://learn.microsoft.com/en-us/azure/architecture/patterns/retry 1.Retry 패턴의 주요 요소1) Retry 조건:재시도를 할 오류를 정의합니다.보통 일시적인 네트워크 오류나 HTTP 상태 코드(예: 500, 503, 504)와 같은 조건에서 재시도를 수행합니다.치명적인 오류(예: 400, 401)는 재시도를 하지 않도록 설정합니다. 2) Retry 횟수 (Max Retry Attempts):요청을..

Rate limiting 패턴 이란 ?

Rate Limiting은 시스템의 안정성과 보안을 보장하기 위해 단위 시간당 요청 수를 제한하는 설계 패턴입니다. 이 패턴은 클라이언트가 서버로 과도한 요청을 보내는 것을 방지하고, 서버 자원의 사용을 효율적으로 관리하며, 서비스 품질을 유지하는 데 중요한 역할을 합니다. 1.핵심 개념1) 요청 수 제한 : 클라이언트가 보낼 수 있는 요청 수를 정해진 단위 시간(초, 분, 시간, 일 등) 안에서 제한합니다.예: "1분에 최대 100개의 요청만 허용"2)제한 조건IP 주소 기반 제한 : 특정 IP에서 오는 요청만 제한사용자별 제한 : 사용자의 인증 정보(Token, API Key 등)에 기반한 요청 제한리소스별 제한 : API 엔드포인트별로 요청 제한3)정책 유형Fixed Window : 정해진 시간 간..

Proxy 패턴 이란 ?

1.프록시 패턴의 시작기원 : 프록시 패턴은 1994년 GoF의 디자인 패턴 책에서 소개되었습니다. 이 책은 객체지향 소프트웨어 설계에서 공통적으로 사용되는 23가지 디자인 패턴을 정리한 첫 번째 공식 문헌입니다. 프록시 패턴은 이 책에서 구조적 패턴(Structural Pattern)으로 분류되며, 객체 간의 관계와 구조를 다루는 패턴 중 하나로 설명됩니다.사용 목적 : 컴퓨팅 자원이 제한된 환경에서, 실제 객체를 생성하거나 접근하는 과정을 제어하기 위한 필요성에서 시작되었습니다. 초기 컴퓨터 시대에는 메모리와 처리 속도에 제약이 있었기 때문에 객체의 생성 비용을 줄이고 효율성을 높이는 설계 방식이 중요했습니다. 2. 프록시 패턴의 사용 사례1) 초기 컴퓨터 네트워크 :원격 호출(Remote Metho..

Aggregator (집계자) 패턴 이란 ?

Aggregator 패턴은 소프트웨어 디자인 패턴 중 하나로, 여러 소스의 데이터를 통합하거나 집계하는 역할을 수행하는 데 사용됩니다. 이 패턴은 특히 데이터의 중앙 집중화와 단순화된 인터페이스 제공에 중점을 둡니다. Aggregator는 일반적으로 여러 개의 독립된 객체, 서비스, 또는 데이터 소스를 수집하고 이 데이터를 클라이언트가 사용하기 쉽도록 조작하거나 처리합니다.1.Aggregator 패턴의 탄생Aggregator 패턴의 기원과 사용 시점은 특정 시기나 인물로 명확히 정의되지 않습니다. 이는 시스템 구축 프로젝트의 거대화 및 소프트웨어 공학과 디자인 패턴의 발전 과정에서 자연스럽게 등장한 개념 중 하나입니다. Aggregator 패턴은 데이터 통합과 시스템 설계의 요구로 인해 유기적으로 발전해..

Sidecar 패턴 이란 ?

Sidecar 패턴은 마이크로서비스 아키텍처에서 보조 기능을 담당하는 프로세스를 주 애플리케이션과 분리하여 독립적인 프로세스로 실행하는 방법입니다. 이 패턴은 주로 애플리케이션의 주요 기능과 관계없이 추가적인 기능을 제공하는 데 활용됩니다. Sidecar는 '옆에 붙어 다니는 차'라는 뜻으로, 주 프로세스와 함께 배포되지만 별도의 컨테이너나 프로세스로 동작합니다. 주로 Kubernetes 환경에서 자주 사용되며, 이 패턴을 통해 애플리케이션의 확장성과 관리성을 높일 수 있습니다.Source : https://learn.microsoft.com/en-us/azure/architecture/patterns/sidecar 1. Sidecar 패턴의 발전Sidecar 패턴은 마이크로서비스 아키텍처가 확산되면서 ..

Strangler Pattern 이란 ?

1.개요Strangler 패턴은 소프트웨어 아키텍트 **마틴 파울러(Martin Fowler)**가 처음 제안한 개념입니다. 그는 2004년에 자신의 블로그를 통해 Strangler 패턴의 개념을 발표했으며, 기존 시스템을 새로운 시스템으로 점진적으로 전환하는 방식의 유용성을 강조했습니다. 마틴 파울러는 호주에서 자생하는 "strangler fig" 식물이 기존 나무를 서서히 감싸고 대체하는 생장 방식에서 이 아이디어를 얻었습니다.이 패턴을 통해 기존 시스템을 점진적으로 대체할 수 있는 방법을 설명하면서, 특히 시스템 운영 중에도 리스크를 최소화하며 새로운 기능을 도입할 수 있는 점을 장점으로 언급했습니다. 이는 레거시 시스템을 모던한 아키텍처로 전환하는 과정에서 매우 유용한 접근 방식으로, 이후 다양한..

Circuit Breaker 패턴 이란 ?

I. 개요Circuit Breaker 패턴은 소프트웨어 아키텍트이자 마이크로서비스와 관련된 주요 개념들을 소개한 마틴 파울러(Martin Fowler)와 그의 동료 마이클 네이거(Michael Nygard)가 발전시킨 패턴입니다. 이 패턴은 네트워크와 외부 시스템의 의존성이 커지면서 장애가 연쇄적으로 발생할 가능성이 높아지는 상황에서 안정성을 유지하기 위해 소개되었습니다. 마이클 네이거는 그의 저서 **"Release It!"** (2007년 출판)에서 Circuit Breaker 패턴을 구체적으로 설명했습니다. 이 책은 분산 시스템에서 안정성을 높이기 위한 다양한 패턴과 기법들을 다루고 있으며, Circuit Breaker 패턴을 통해 서비스 호출 시 장애 전파를 막고 시스템 전체의 안정성을 유지하는 ..

Saga 패턴 이란 ?

Saga 패턴은 1987년에 Hector Garcia-Molina와 Kenneth Salem이 발표했습니다. 이들은 논문 "Sagas"를 통해, 긴 트랜잭션을 효율적으로 처리하기 위한 방법으로 Saga 패턴을 제안했습니다. 이 패턴은 주로 분산 시스템의 트랜잭션 관리에서 사용되며, 트랜잭션을 여러 개의 작은 작업으로 나누고, 실패 시 이를 복구할 수 있는 보상 동작을 사용해 시스템의 일관성을 유지하는 방법을 설명합니다. Garcia-Molina와 Salem의 연구는 데이터베이스 및 분산 시스템의 안정성을 확보하는 방안으로 큰 영향을 미쳤으며, 이후 마이크로서비스 아키텍처가 대두되면서 Saga 패턴이 더욱 주목받게 되었습니다. SAGA 패턴이란 마이크로서비스들끼리 이벤트를 주고 받아 특정 마이크로서비스에서..

PoEAA를 적용한 실제 프로젝트 구축 사례

PoEAA(Patterns of Enterprise Application Architecture)를 적용한 실제 프로젝트 구축 사례는 주로 대규모 엔터프라이즈 애플리케이션이나 복잡한 비즈니스 로직을 처리하는 시스템에서 흔히 볼 수 있습니다. 다음은 PoEAA 패턴을 활용하여 성공적으로 구축된 몇 가지 프로젝트 사례입니다. 1. 온라인 은행 시스템프로젝트 설명: 은행의 온라인 뱅킹 플랫폼은 복잡한 금융 거래와 사용자 관리 기능을 지원해야 하는 중요한 시스템입니다. 고객은 자신의 계좌 정보를 확인하고, 자금을 이체하며, 대출 신청 및 기타 금융 서비스를 이용할 수 있어야 합니다.적용 패턴:Service Layer (서비스 레이어): 은행의 다양한 비즈니스 로직(이체, 대출 신청, 계좌 관리 등)은 서비스 레..

POSA I Architecture Pattern

POSA I (Pattern-Oriented Software Architecture, Volume 1)에서 제안하는 주요 아키텍처 패턴들은 아래와 같음Layers (계층) 패턴:시스템을 계층으로 구성하여 각 계층이 특정 수준의 추상화를 제공합니다.상위 계층은 하위 계층의 서비스를 사용하며, 각 계층은 독립적으로 개발 및 수정할 수 있습니다.예: OSI 네트워크 모델, 웹 애플리케이션의 프레젠테이션-비즈니스-데이터 계층Pipes and Filters (파이프와 필터) 패턴:데이터 스트림 처리 작업을 여러 독립적인 처리 단계(필터)로 나눕니다.각 필터는 입력을 받아 처리하고 출력을 다음 필터로 전달합니다.예: UNIX 쉘 명령어 파이프라인, 컴파일러의 처리 단계Blackboard (블랙보드) 패턴:복잡한 문..