MSA 7

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):요청을..

Aggregator (집계자) 패턴 이란 ?

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

BFF (Backend for Frontend) 패턴 이란 ?

BFF (Backend For Frontend) 패턴은 마이크로서비스 아키텍처에서 백엔드와 프론트엔드 간의 인터페이스를 효율적으로 구성하기 위해 사용하는 패턴입니다. 이 패턴은 각 클라이언트 유형(웹, 모바일 앱 등)에 특화된 백엔드 인터페이스를 제공하는 방법입니다. BFF 패턴의 주요 목표는 클라이언트별로 필요한 데이터를 최적화하여 제공함으로써 성능을 향상시키기 위하여 주로 사용됩니다. 1. BFF 패턴의 시작과 넷플릭스에서의 활용넷플릭스는 사용자 수가 폭발적으로 증가하면서, 다양한 클라이언트에 맞춘 UI와 성능 최적화가 중요해졌습니다. 예를 들어, 모바일 앱과 웹 브라우저의 요구 사항은 다르며, 동일한 백엔드 API로 모든 클라이언트를 지원하면 비효율적이거나 불필요한 데이터가 전송될 수 있었습니다.이..

Bulkhead 패턴 이란 ?

Bulkhead 패턴은 소프트웨어 설계에서 시스템의 일부 컴포넌트나 서비스를 독립된 구획으로 분리하여 하나의 컴포넌트에서 발생한 오류가 다른 부분에 영향을 미치지 않도록 하는 설계 패턴입니다. 이 패턴은 주로 마이크로서비스 아키텍처나 분산 시스템에서 사용됩니다. 1.    Bulkhead 패턴의 기원Bulkhead 패턴의 기원은 소프트웨어 개발보다는 해양 산업에서 사용된 물리적 설계 개념에서 시작되었습니다. 선박이 침몰하는 것을 방지하기 위해 내부에 여러 격벽(Bulkhead)을 두어 한 구역에 물이 들어와도 다른 구역으로 확산되지 않게 했습니다. 이 아이디어가 소프트웨어 개발로 넘어오면서 시스템 안정성을 높이는 방법으로 Bulkhead 패턴이 채택된 것입니다. 2. 소프트웨어에서의 Bulkhead 패턴..

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 패턴을 통해 서비스 호출 시 장애 전파를 막고 시스템 전체의 안정성을 유지하는 ..

CQRS (Command Query Responsibility Segregation) 패턴 이란 ?

CQRS 패턴은 마이크로소프트의 소프트웨어 아키텍트이자 소프트웨어 설계 전문가인 그레그 영(Greg Young)에 의해 제안되었습니다. CQRS 패턴은 2000년대 후반에, 정확히는 2009년경, 그가 DDD(Domain-Driven Design)와 관련된 커뮤니티와 컨퍼런스에서 CQRS 개념을 처음 설명하면서 널리 알려지기 시작했습니다.  또한, CQRS 패턴은 DDD(Domain-Driven Design) 커뮤니티에서도 널리 채택되었으며, 에릭 에반스(Eric Evans)의 DDD 철학과 밀접한 관련이 있습니다. 그레그 영은 DDD의 철학을 더욱 발전시켜 CQRS와 같은 패턴을 만들어냈으며, 그 이후 마이크로서비스 아키텍처와 이벤트 소싱 등에서도 자주 사용되며 많은 기업에서 이를 채택하고 있습니다. ..