편집

다음을 통해 공유


뱅킹 클라우드 변환을 위한 패턴 및 구현

Azure Cosmos DB
Azure Event Hubs
Azure 기능
AKS(Azure Kubernetes Service)
Azure Pipelines

이 문서에서는 CSE(상업 소프트웨어 엔지니어) 팀이 Azure에서 은행 시스템 클라우드 변환을 만들 때 사용한 패턴과 구현을 다룹니다.

아키텍처

Saga 건축

서버리스 아키텍처의 오케스트레이션 기반 Saga

이 아키텍처의 Visio 파일을 다운로드합니다.

데이터 흐름

Contoso Bank에는 오케스트레이션 기반 Saga의 온-프레미스 구현이 있었습니다. 구현에 있어서 오케스트레이터는 FSM(Finite State Machine)입니다. CSE 팀은 아키텍처 설계에서 다음과 같은 과제를 확인했습니다.

  • 상태 관리, 시간 초과 및 실패 시나리오에서 다시 시작을 처리하기 위한 상태 저장 오케스트레이터의 구현 오버헤드 및 복잡성.

  • 트랜잭션 요청당 Saga 워크플로 상태를 추적하기 위한 가시성 메커니즘.

아래 제안된 솔루션은 Azure에서 서버리스 아키텍처를 사용하는 오케스트레이션 접근 방식을 통한 Saga 패턴 구현입니다. 다음을 사용하여 문제를 해결합니다.

자세한 내용은 Microservices.io의 패턴: Saga를 참조하세요.

Saga 패턴

Saga는 일반적으로 금융 서비스에 적용되는 분산 트랜잭션 관리에 적합한 패턴입니다. 작업이 애플리케이션과 데이터베이스에 분산되는 새로운 시나리오가 등장했습니다. 새로운 시나리오에서 고객은 금융 트랜잭션에 대한 데이터 일관성을 보장하기 위해 새로운 아키텍처와 구현 설계가 필요합니다.

기존의 ACID(원자성, 일관성, 격리 및 내구성) 속성 접근 방식은 더 이상 적합하지 않습니다. 작업 데이터가 이제 격리된 데이터베이스로 확장되기 때문입니다. Saga 패턴을 사용하면 데이터 일관성을 보장하기 위해 로컬 트랜잭션의 메시지 기반 시퀀스를 통해 워크플로를 조정하여 이 문제를 해결합니다.

KEDA 아키텍처

KEDA Kafka 토픽 트리거를 사용하여 EFT 프로세서 자동 크기 조정

이 아키텍처의 Visio 파일을 다운로드합니다.

KEDA 크기 조정기에 대한 자세한 내용은 다음 KEDA 문서를 참조하세요.

  • Azure Event Hubs 트리거: Java 애플리케이션용 Azure Blob Storage URI 읽기에 대한 호환성입니다. Event Processor Host SDK를 사용하여 Event Hubs에서 AMQP(Advanced Message Queueing Protocols) 프로토콜 메시지를 읽는 Java 소비자를 크기 조정할 수 있습니다. 이전에는 Event Hubs 크기 조정기가 Azure Functions에서만 작동했습니다.

  • Apache Kafka 항목 트리거: SASL_SSL 일반 인증을 지원하여 Event Hubs에서 Kafka 프로토콜 메시지를 읽는 Java 소비자를 확장할 수 있습니다.

워크플로

  1. CSE 팀은 AKS(Azure Kubernetes Service) 클러스터에 애플리케이션을 배포했습니다. 솔루션은 들어오는 메시지 수를 기반으로 애플리케이션을 자동으로 스케일 아웃해야 했습니다. CSE 팀은 Kafka 크기 조정기를 사용하여 솔루션이 애플리케이션 배포를 활성화 또는 비활성화해야 하는지 발견했습니다. Kafka 크기 조정기는 특정 이벤트 원본에 대한 사용자 지정 메트릭도 제공합니다. 이 예제의 이벤트 원본은 Azure 이벤트 허브입니다.

  2. Azure 이벤트 허브의 메시지 수가 임계값을 초과하면 KEDA는 Pod를 트리거하여 규모를 확장하여 애플리케이션에서 처리하는 메시지 수를 늘린다. 이벤트 원본의 메시지 수가 임계값 아래로 떨어지면 Pod의 자동 스케일 다운이 발생합니다.

  3. CSE 팀은 Apache Kafka 항목 트리거를 사용했습니다. 프로세스가 간격 내에서 소비되는 최대 메시지 수를 초과하는 경우 솔루션에 EFT 프로세서 서비스를 확장할 수 있는 기능을 제공합니다.

Java를 지원하는 KEDA

KEDA(Kubernetes 이벤트 기반 자동 확장 처리)는 솔루션이 Kubernetes 내에서 컨테이너를 크기 조정하는 방법을 결정합니다. 결정은 처리해야 하는 이벤트 수를 기반으로 합니다. 다양한 종류의 크기 조정기가 있는 KEDA는 여러 유형의 워크로드를 지원하고 Azure Functions를 지원하며 공급업체에 구애받지 않습니다. Azure Event Hubs를 사용하여 KEDA로 Java 애플리케이션 자동 크기 조정으로 이동하여 작업 샘플을 살펴봅니다.

부하 테스트 아키텍처

JMeter 및 Azure Load Testing을 사용한 부하 테스트 파이프라인

이 아키텍처의 Visio 파일을 다운로드합니다.

이 솔루션은 JMX(JMeter) 스크립트와 함께 Azure Load Testing을 사용합니다. Azure Load Testing은 대규모 부하를 생성할 수 있는 완전 관리형 부하 테스트 서비스입니다. 이 서비스는 호스팅되는 위치에 관계없이 애플리케이션에 대한 트래픽을 시뮬레이션하고 기존 JMeter 스크립트를 활용할 수 있습니다.

워크플로

Azure Load Testing을 사용하면 Azure Portal 또는 Azure CLI를 사용하여 부하 테스트를 수동으로 만들 수 있습니다. 또는 Azure Load Testing과 통합되도록 CI/CD 파이프라인을 구성할 수 있습니다. 이렇게 하면 부하 테스트를 자동화하여 CI/CD 워크플로의 일부로 애플리케이션 성능 및 안정성의 유효성을 지속적으로 검사할 수 있습니다.

  1. 부하 테스트를 만들고 실행하여 Azure Load Testing의 작동 방식을 이해합니다.
  2. 새 또는 기존 JMeter 스크립트를 사용하고 부하 테스트를 실행하기 위한 CI/CD 워크플로를 구성합니다.

시나리오 정보

이 시나리오는 클라우드로 이동할 때 은행 업계의 큰 그림 패턴과 구현을 더 잘 이해하는 데 도움이 됩니다.

다음 단계

구성 요소 기술에 대해 자세히 알아보세요.

관련 아키텍처 살펴보기: