Taeyoung Kim

Cloud & Platform

Legacy VS Azure 아키텍처

Legacy VS Azure 아키텍처 학습 내용을 정리한 백필 노트입니다.

이 글은 2025년 학습 기록을 블로그 형식으로 정리한 백필 노트입니다.


1. Legacy (CBM, VM) 시스템 분석

  • 아키텍처 특징:
    • 배포 환경: IBM 하드웨어나 가상 머신(VM) 위에서 동작하는 온프레미스(On-premise) 방식입니다. (Cloud (X))
    • 애플리케이션 타입: 서버에서 화면을 모두 렌더링해서 내려주는 MPA (Multi-Page Application) 방식입니다. (JSP 언급)
    • 상태 관리: WAS(Web Application Server) 단에서 세션을 공유하는 Stateful 구조입니다. (Session Clustering)
  • 계층별 기술 스택 및 구성
    • 로드 밸런서 (LB): L4 스위치를 사용하여 트래픽을 분산합니다.
    • 웹 서버 (WEB): Apache, Nginx, IIS 등을 사용하여 정적 콘텐츠(HTML, CSS, JS)를 처리하고 WAS로 요청을 전달(Reverse Proxy)합니다.
    • 웹 애플리케이션 서버 (WAS):
      • Java 기반의 서버(Tomcat, Resin, WebLogic, WebSphere, Jeus 등)를 사용합니다.
      • 여러 WAS 인스턴스가 하나의 클러스터를 구성하여 세션을 공유합니다.
      • Node.js, Python 등 다른 기술도 일부 사용될 수 있음을 시사합니다.
    • 데이터베이스 (DB):
      • **Oracle RAC (Real Application Cluster)**를 사용하여 고가용성을 확보한 데이터베이스 클러스터 환경을 사용합니다.

2. Azure (MSA, Cloud Native) 시스템 분석

  • 아키텍처 특징:
    • 배포 환경: Microsoft Azure 클라우드를 사용하며, 컨테이너(Pods) 기반으로 배포됩니다.
    • 애플리케이션 타입: 브라우저(클라이언트)에서 동적으로 화면을 구성하는 SPA (Single-Page Application) 방식입니다. 프론트엔드(F/E)와 백엔드(B/E)가 명확히 분리됩니다.
    • 상태 관리: 각 서비스는 상태를 가지지 않는 Stateless 구조를 지향하며, 상태는 Redis나 DB 등 외부 저장소에서 관리합니다.
  • 계층별 기술 스택 및 구성:
    • 게이트웨이 (AGW): Azure Application Gateway (L7 로드 밸런서)를 사용하여 도메인, 경로, 헤더 등 복잡한 조건에 따라 요청을 각 마이크로서비스로 라우팅합니다.
    • 프론트엔드 (F/E): 분리된 프론트엔드 서버가 SPA의 정적 파일(HTML, CSS, JS)을 제공합니다.
    • 백엔드 (B/E - 마이크로서비스):
      • 기능별로 분리된 여러 백엔드 서비스(B/E #1, B/E #2)가 존재합니다.
      • 각 서비스는 컨테이너(Pod) 단위로 패키징되고 쿠버네티스(Kubernetes) 환경에서 관리됩니다. (Deployment, Probe, StatefulSet 등 쿠버네티스 용어 등장)
      • 서킷 브레이커(Circuit Breaker) 패턴을 언급하며, 서비스 간 장애 전파를 방지하는 설계를 고려하고 있습니다.
    • 데이터 및 메시징:
      • 데이터베이스 (DB): PaaS/DBaaS 형태의 관리형 데이터베이스(e.g., Azure SQL, Cosmos DB)를 사용합니다.
      • 메시지 큐 (Message Queue): 서비스 간 비동기 통신을 위해 Kafka Cluster 또는 Azure Service Bus 같은 메시징 시스템을 사용합니다.
      • 캐시/인메모리 저장소: Redis Cluster를 사용하여 캐시, 세션 관리 등 빠른 데이터 처리를 지원합니다.

3. 주요 비교

| 항목 | Legacy (IBM, VM) | Azure (Cloud Native, MSA) | | --- | --- | --- | | 배포 환경 | 온프레미스, 가상 머신(VM) | 클라우드 (Azure), 컨테이너 (Kubernetes) | | 아키텍처 | 모놀리식 (Monolithic), 3-Tier | 마이크로서비스 (MSA) | | 애플리케이션 | MPA (Multi-Page Application), 서버 사이드 렌더링 | SPA (Single-Page Application), 클라이언트 사이드 렌더링 | | 세션 관리 | NAS 기반 공유, Stateful (서버 세션 클러스터링) | Redis Cluster, Stateless 설계(상태는 외부 저장소에 위임) | | 트래픽 관리 | L4 로드 밸런서 (단순 분산) | L7 게이트웨이 (지능형 라우팅) + Ingress | | 데이터베이스 | 직접 설치/관리하는 Oracle RAC | 클라우드 관리형 DB (PaaS/DBaaS), Redis, Kafka | | 서비스 간 통신 | 내부 함수 호출, AJP 등 | HTTP/gRPC API 호출, 비동기 메시징 (Kafka) | | 장애 대응 | 클러스터 전체 장애 가능성 | 서비스 단위 격리, 서킷 브레이커로 장애 전파 방지 | | 확장성 | 전체 시스템 단위로 확장 (수직/수평) , 수동 Cluster 구성 | 개별 서비스 단위로 독립적인 확장 가능, Auto Scaling, Probe 기반 헬스체크 |