반응형
SMALL

Architecture 8

마이크로서비스에서 SAGA 패턴 완전 정복: NestJS 실전 예제와 함께

마이크로서비스 아키텍처(MSA)에서는 여러 서비스가 각각의 데이터베이스를 가지고 독립적으로 동작합니다.이런 환경에서 “여러 서비스가 연관된 하나의 비즈니스 트랜잭션”을 어떻게 안전하게 처리할 수 있을까요?바로 SAGA 패턴이 그 해답입니다.1. SAGA 패턴이란?SAGA 패턴은 분산 트랜잭션을 관리하는 대표적인 방법입니다.각 서비스는 자신의 로컬 트랜잭션만 보장하고,전체 트랜잭션은 여러 단계로 나누어 “성공/실패 이벤트”를 주고받으며 처리합니다.Orchestration(오케스트레이션): 중앙 조정자가 각 서비스에 명령을 내림Choreography(코레오그래피): 서비스들이 이벤트를 발행/구독하며 트랜잭션을 이어감※ SAGA의 의미SAGA는 “긴 이야기”, “연속된 사건”이라는 뜻의 영어 단어입니다.분산 ..

Architecture 2025.05.07

대기열(Waiting Room) 시스템, 직접 만들까? 외부 솔루션 쓸까?

1. 대기열(Waiting Room)이란?한정판 상품 판매, 인기 콘서트 티켓팅, NFT 민팅 등에는 수만~수십만 명의 사용자가 한 번에 몰립니다.이럴 때 서버가 다운되지 않고, 사용자에게 공정한 기회를 제공하려면 어떻게 해야 할까요?바로 대기열(Waiting Room) 시스템이 필요합니다.대기열 시스템은 사용자가 몰릴 때, 일정 수 이상은 "대기실"에 머무르게 하고, 순차적으로 본 서비스(결제, 민팅 등)에 진입시키는 역할을 합니다.2. 대기열 시스템, 어떻게 구현할까?2-1. 직접 구현 (예: AWS 서버리스)AWS Lambda, API Gateway(WebSocket), DynamoDB, Step Function 등 클라우드 서비스를 조합해 직접 대기열 시스템을 만들 수 있습니다.구현 예시사용자가 ..

Architecture 2025.04.29

서버 스펙 산정

1. 서버 스펙 산정의 기본 프로세스1) 요구사항/트래픽 예측동시 접속자 수(Concurrent Users)초당 요청 수(RPS, Requests Per Second)1일/1개월 총 트래픽API별 평균/최대 응답시간데이터베이스/캐시/파일 저장소 등 부가 리소스2) 서비스 특성 분석CPU 바운드(연산 많음) vs IO 바운드(네트워크/DB/파일 입출력 많음)실시간성/지연 허용 여부배치/스케줄러 등 부가 작업3) 성능 테스트(부하 테스트)실제 코드/아키텍처로 JMeter, k6, Artillery 등으로 부하 테스트1코어/1GB/1Pod에서 RPS, 평균/최대 응답시간, 메모리 사용량 측정4) 산정 공식필요 서버 수 = (예상 최대 RPS) / (서버 1대가 감당 가능한 RPS)필요 메모리 = (최대 동시 ..

Architecture 2025.04.28

MVC vs CQRS: 무엇이 다르고 언제 써야 할까?

소프트웨어 설계를 공부하다 보면 MVC와 CQRS라는 단어를 자주 접하게 됩니다. 겉으로 보기엔 비슷해 보이지만, 두 아키텍처는 적용 목적, 범위, 복잡성이 완전히 다릅니다.이 글에서는 MVC와 CQRS의 차이, 언제 어떤 아키텍처를 선택해야 할지 명확히 정리해봅니다.1. 정의부터 짚고 가자✅ MVC (Model-View-Controller)전통적인 UI 중심 애플리케이션 아키텍처 패턴목적: 사용자 인터페이스를 역할에 따라 분리구성:Model: 데이터와 비즈니스 로직View: 사용자 인터페이스Controller: 사용자 입력 처리 및 흐름 제어흔히 웹 프레임워크(Spring MVC, Ruby on Rails, ASP.NET MVC 등)에서 사용✅ CQRS (Command Query Responsibili..

Architecture 2025.04.16

도메인 중심 설계의 정석: Hexagonal Architecture + DDD + CQRS 아키텍처 통합 정리

현대의 백엔드 시스템은 복잡한 도메인 로직, 다양한 외부 인터페이스, 그리고 높은 변경 요구사항을 수용해야 합니다. 이런 복잡성을 견고하게 다루기 위해 자주 언급되는 세 가지 개념이 있습니다:Hexagonal Architecture (육각형 아키텍처)DDD (Domain-Driven Design)CQRS (Command Query Responsibility Segregation)이 글에서는 이 세 가지를 어떻게 함께 결합하여 클린하고 유연한 아키텍처를 구성할 수 있는지 정리해보겠습니다.1. Hexagonal Architecture (포트 & 어댑터 아키텍처)핵심 아이디어"도메인 로직은 외부 세계와 분리되어야 한다."핵심 도메인 로직을 중심(안쪽)에 두고, 외부와의 상호작용을 "포트(Ports)"와 "어댑..

Architecture 2025.04.09

쿠버네티스 클러스터 프로비저닝 도구 알아보기

쿠버네티스 클러스터 프로비저닝 도구는 쿠버네티스 클러스터를 설정하고 관리하는 데 필요한 자동화된 프로세스를 제공합니다. 각각의 도구는 다른 기능과 접근 방식을 제공하며, 특정 요구 사항에 따라 장단점이 있습니다. 주요 쿠버네티스 클러스터 프로비저너를 비교해보겠습니다.kops (Kubernetes Operations)설명: AWS, GCP, OpenStack 등 여러 클라우드 환경에서 쿠버네티스 클러스터를 프로비저닝하는 데 사용됩니다. 특히 AWS에서 매우 잘 지원되며, 클러스터 설치, 업그레이드, 관리에 유용합니다.장점:AWS에서의 긴밀한 통합.기존 클러스터의 업그레이드 및 유지보수가 편리.커스텀 설정이 용이.단점:AWS 외의 환경에서는 설정이 복잡할 수 있음.설치 및 설정 과정이 다소 복잡할 수 있음...

Architecture 2024.10.19

IAM(Identity and Access Management) 알아보기

IAM(Identity and Access Management)IAM(Identity and Access Management) 솔루션은 사용자 인증, 권한 관리, 역할 기반 접근 제어(RBAC), SSO(Single Sign-On) 등을 통해 조직의 보안을 강화하고 관리 복잡성을 줄이는 데 중점을 둡니다. 이러한 솔루션은 기업 내에서 사용자의 접근 권한을 중앙에서 관리하고, 필요한 보안 정책을 적용할 수 있도록 합니다.주요 IAM 솔루션Auth0타입: 클라우드 기반, 상용특징: 클라우드 기반 IAM 플랫폼으로, OAuth2, OpenID Connect, SAML을 지원하며 사용자 인증, 권한 부여, 멀티팩터 인증(MFA) 등 다양한 기능을 제공합니다. 손쉬운 통합과 사용성을 장점으로 많은 기업이 채택하고..

Architecture 2024.10.07

서비스 프록시(Service Proxy) 알아보기

서비스 프록시(Service Proxy)네트워크 상에서 클라이언트와 서버 간의 통신을 중재하는 역할을 하는 중개자로, 클라이언트는 프록시를 통해 서비스를 요청하고, 프록시는 이 요청을 실제 서버로 전달한 후 서버의 응답을 다시 클라이언트에게 반환하는 방식으로 동작합니다.역할서비스 프록시는 다음과 같은 역할을 합니다.트래픽 라우팅: 클라이언트의 요청을 적절한 서버나 서비스로 라우팅합니다. 이를 통해 여러 서비스 간의 요청 분배 및 로드 밸런싱을 수행할 수 있습니다.보안 강화: 클라이언트가 직접 서버에 접근하지 않도록 하여 보안 위험을 줄일 수 있습니다. 인증, 권한 부여, SSL/TLS 암호화 등을 프록시에서 처리할 수 있습니다.로깅 및 모니터링: 서비스 프록시는 클라이언트와 서버 간의 모든 트래픽을 기록..

Architecture 2024.10.04
반응형
LIST