Service Broker의 역할
Service Broker를 통해 개발자는 독립적인 여러 구성 요소가 함께 작동하여 하나의 작업을 완수할 수 있도록 느슨한 방식으로 연결된 비동기 응용 프로그램을 쉽게 구축할 수 있습니다. 이러한 응용 프로그램 구성 요소는 작업을 완료하는 데 필요한 정보가 포함된 메시지를 서로 교환합니다. 이 항목에서는 Service Broker의 다음과 같은 기본적인 부분에 대해 설명합니다.
- 대화
- 메시지 순서 지정 및 조정
- 트랜잭션 비동기 프로그래밍
- 느슨하게 연결된 응용 프로그램에 대한 지원
- Service Broker 구성 요소
대화
Service Broker는 메시지를 보내고 받는 기본적인 기능을 기반으로 설계되었습니다. 각 메시지는 안정적이고 지속적인 통신 채널인 대화의 일부분을 구성합니다. 각 메시지와 대화에는 개발자의 안정적인 응용 프로그램 작성을 돕기 위해 Service Broker가 강제 적용하는 특정 유형이 있습니다.
새 Transact-SQL 문을 통해 응용 프로그램에서 안정적으로 메시지를 보내고 받을 수 있습니다. 응용 프로그램에서는 관련된 작업 집합에 대한 이름인 서비스에 메시지를 보내고 내부 테이블 보기인 큐로부터 메시지를 받습니다.
같은 작업에 대한 메시지는 같은 대화에 속합니다. 각 대화 내에서 Service Broker는 응용 프로그램이 모든 메시지를 전송된 순서대로 각각 한 번씩만 받도록 합니다. 서비스를 구현하는 프로그램에서는 같은 서비스에 대한 관련 대화를 Service Broker의 장점에 설명된 것처럼 하나의 대화 그룹으로 연결할 수 있습니다.
인증서 기반 보안을 통해 중요한 메시지를 보호하고 서비스에 대한 액세스를 제어할 수 있습니다.
Service Broker를 우편 서비스로 생각하면 쉽게 이해할 수 있습니다. 멀리 있는 동료와 대화를 나누려면 편지를 분류 및 배달해 주는 우편 서비스를 통해 편지를 주고받으면 됩니다. 우편함에서 편지를 찾아 읽고 답장을 써서 새 편지를 보내는 과정이 대화가 끝날 때까지 양쪽에서 이루어집니다. 편지 배달은 "비동기적으로" 이루어지므로 배달되는 동안 두 사람 모두 다른 작업을 처리할 수 있습니다.
메시지는 우편 서비스에서 편지에 해당합니다. Service Broker 서비스는 우체국에서 편지를 배달하는 주소입니다. 큐는 배달된 편지가 보관되는 우편함입니다. 응용 프로그램은 메시지를 받고 메시지에 반응하고 응답을 보냅니다.
Service Broker를 사용하는 프로그램에서는 우편 배달과 비슷한 방식으로 다른 프로그램과 대화를 나눕니다.
상대방을 편지를 읽거나 답장을 쓰는 시간을 구체적으로 알 필요가 없듯이 Service Broker를 사용하는 응용 프로그램에서도 다른 서비스가 메시지를 처리하는 방법, 메시지가 배달되는 방법 또는 다른 응용 프로그램이 메시지를 처리하는 시간을 알 필요가 없습니다.
메시지 순서 지정 및 조정
Service Broker는 일반적인 데이터베이스 프로그래밍 기술인 큐를 다음과 같은 중요한 두 가지 측면에서 일반 제품과는 다르게 처리합니다.
- Service Broker 큐는 데이터베이스에 통합됩니다.
- 관련 메시지를 조정하고 순서를 지정합니다.
큐가 통합된다는 것은 일반적인 데이터베이스 유지 관리 및 운영에 Service Broker도 포함된다는 의미입니다. 대개 Service Broker에 대해서는 관리자가 일상적으로 수행해야 할 유지 관리 작업이 없습니다.
Service Broker 프레임워크는 메시지를 보내고 받기 위한 간단한 Transact-SQL 인터페이스와 메시지 배달 및 처리를 보장하는 강력한 기능 집합을 함께 제공합니다. Service Broker는 프로그램이 대화의 각 메시지를 큐에 들어온 순서가 아닌 전송된 순서대로 한 번씩만 받도록 보장합니다. 큐 기능이 있는 일반 제품에서는 큐에 들어온 순서대로 메시지를 제공하므로 응용 프로그램에서 이 순서 및 메시지의 그룹화 상태를 알아야 합니다. Service Broker에서는 두 개의 큐 판독기가 같은 대화 또는 같은 관련 대화 그룹의 메시지를 동시에 처리하지 못하도록 보장합니다.
시작 프로그램에서는 각 작업에 대한 대화를 시작한 다음 대상 서비스로 메시지를 보냅니다. 이 메시지에는 작업의 특정 단계를 수행하는 데 필요한 데이터가 들어 있습니다. 대상 서비스가 메시지를 받으면 대상 서비스의 프로그램에서 메시지를 처리한 다음 시작 서비스에 응답합니다. 이렇게 대화가 진행되고 개발자가 지정한 규칙에 따라 종료됩니다.
Service Broker는 메시징 응용 프로그램 작성에 수반되는 가장 어려운 작업을 처리합니다. 이러한 작업에는 메시지 조정, 안정적인 메시지 배달, 잠금 및 큐 판독기 시작이 포함됩니다. 따라서 데이터베이스 개발자는 비즈니스 문제를 해결하는 데 집중할 수 있습니다.
트랜잭션 비동기 프로그래밍
Service Broker 인프라에서는 응용 프로그램 간의 메시지 배달은 트랜잭션 및 비동기 방식으로 수행됩니다. Service Broker 메시징은 트랜잭션 방식이므로 트랜잭션이 롤백될 경우 트랜잭션의 모든 Service Broker 작업이 롤백됩니다. 여기에는 보내기 및 받기 작업도 포함됩니다. 비동기 배달에서는 응용 프로그램이 계속 실행되는 동안 데이터베이스 엔진 이 배달을 처리합니다. 확장성을 높이기 위해 Service Broker는 프로그램에서 수행할 유용한 작업이 있을 경우 큐를 처리하는 프로그램을 자동으로 시작하는 메커니즘을 제공합니다. 자세한 내용은 Service Broker Activation를 참조하십시오.
비동기 프로그래밍을 통해 개발자는 큐를 사용하는 응용 프로그램을 쉽게 작성할 수 있습니다. 많은 데이터베이스 응용 프로그램에는 리소스가 허용될 때 수행할 작업에 대한 큐 역할을 하는 테이블이 포함되어 있습니다. 큐를 사용하면 데이터베이스가 사용 가능한 리소스를 효율적으로 사용하면서 대화형 사용자에 대한 응답성을 유지할 수 있습니다. Service Broker는 큐를 데이터베이스 엔진의 중요한 부분으로 제공합니다.
큐를 통해 응용 프로그램은 작업을 요청한 트랜잭션과 다른 트랜잭션에서 해당 작업을 수행할 수 있습니다. Service Broker는 이러한 개념을 확장하여 응용 프로그램이 다른 인스턴스 또는 다른 컴퓨터에서도 작업을 수행할 수 있도록 합니다. Service Broker는 또한 데이터베이스에 기본 큐를 제공하고 인스턴스 간의 안정적인 트랜잭션 메시징을 제공하여 데이터베이스 개발자를 지원합니다.
느슨하게 연결된 응용 프로그램에 대한 지원
Service Broker는 느슨하게 연결된 응용 프로그램을 지원합니다. 느슨하게 연결된 응용 프로그램은 서로 독립적으로 메시지를 주고받는 여러 프로그램으로부터 구성됩니다. 이러한 응용 프로그램은 교환되는 메시지에 대해 동일한 정의를 포함하고 서비스 간의 상호 작용에 대해 전체적으로 동일한 구조를 정의해야 합니다. 그러나 응용 프로그램은 동시에 실행되거나 같은 SQL Server 인스턴스 내에서 실행되거나 구현 정보를 공유해야 할 필요는 없습니다. 응용 프로그램은 대화 내 다른 참가자의 물리적 위치 또는 구현을 알 필요가 없습니다.
Service Broker 구성 요소
Service Broker에는 세 가지 유형의 구성 요소가 있습니다.
- 대화 구성 요소 대화 그룹, 대화 및 메시지는 Service Broker 응용 프로그램의 런타임 구조를 구성합니다. 응용 프로그램은 메시지를 대화의 일부로 교환합니다. 각 대화는 하나의 대화 그룹에 포함되며 대화 그룹에는 여러 개의 대화가 포함될 수 있습니다. Service Broker 대화란 정확히 두 참가자 간의 대화입니다. 대화 구성 요소에 대한 자세한 내용은 대화(Conversation) 아키텍처를 참조하십시오.
- 서비스 정의 구성 요소 - 이 구성 요소는 응용 프로그램에서 사용하는 대화의 기본 구조를 지정하는 디자인 타임 구성 요소입니다. 응용 프로그램에 대한 메시지 유형, 대화 흐름, 데이터베이스 저장소 등을 정의합니다. 서비스 정의 구성 요소에 대한 자세한 내용은 서비스 아키텍처를 참조하십시오.
- 네트워킹 및 보안 구성 요소 이러한 구성 요소는 SQL Server 인스턴스 외부의 메시지 교환을 위한 인프라를 정의합니다. 변화하는 환경을 관리하는 데이터베이스 관리자의 작업을 돕기 위해 Service Broker는 데이터베이스 응용 프로그램 코드와 독립적으로 이러한 구성 요소를 관리자가 구성할 수 있도록 합니다. 네트워킹 및 보안 구성 요소에 대한 자세한 내용은 네트워킹 및 원격 보안을 참조하십시오.
서비스 정의 구성 요소, 네트워킹 구성 요소 및 보안 구성 요소는 데이터베이스 및 SQL Server 인스턴스에 대한 메타데이터의 일부입니다. 대화 그룹, 대화 및 메시지는 데이터베이스에 포함된 데이터의 일부입니다.
참고 항목
개념
관련 자료
Service Broker 아키텍처
Service Broker Activation
Service Broker에 대한 보안 고려 사항
Service Broker 자습서