기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SOAP 기반 ASP.NET 웹 서비스(ASMX)
레거시 ASP.NET 웹 서비스(ASMX)를의 REST API로 현대화하면 관련 위험으로 인해 업그레이드할 수 없고 업그레이드해서는 안 되는 종속 소비자가 AWS있을 수 있습니다. 다음 그림은 세 명의 종속 소비자가 있는 ASMX 웹 서비스를 보여줍니다.
이러한 소비자는 SOAP 프로토콜을 사용하여 ASMX 서비스를 호출하기 때문에 ASMX 서비스를 REST API로 교체하면 이러한 소비자가 중단됩니다. 또한 시스템을 모놀리식 아키텍처에서 마이크로서비스로 변환하는 동안 ASMX 서비스를 REST API로 리팩터링하려면 시스템 동작 및 도메인 모델을 리모델링해야 할 가능성이 높습니다. 이로 인해 소비자에게 추가적인 중단 변경 사항이 발생할 수 있습니다.
시스템을 점진적으로 현대화할 수 있도록 이전 서비스와의 이전 버전과의 호환성을 유지하기 위해 스트랭글러 무화과 접근 방식의 지침을 구현할 수 있습니다. 스트랭글러 무화과 접근 방식에서 중요한 레거시 시스템 현대화와 관련된 위험은 부분적으로 레거시 시스템을 새 시스템으로 점진적으로 교체하여 관리됩니다.
추상화를 통한 분기는 스트랭글러 무화과 패턴을 구현하는 효과적인 기법인 Martin Fowler가 도입한 또 다른 접근 방식입니다. 스트랭글러 무화과 접근 방식과 마찬가지로 추상화를 통한 브랜치는 주요 기능을 교체하거나 현대화해야 할 때 엔지니어가 시스템을 점진적으로 변경하는 데 도움이 됩니다. 이 접근 방식에서는 특정 기능을 구현하는 코드와 해당 기능을 사용하는 코드(즉, 클라이언트 코드) 사이에 추상화 계층이 도입됩니다. 이 추상화 계층은 구체적인 클래스에서 상속할 수 있는 추상적 유형일 필요는 없습니다. 대신 소비자와 공급자 간의 기능적 계약을 캡처하는 구현일 수 있습니다.
레거시 SOAP 기반 ASP.NET 웹 서비스의 경우 추상화 기법으로 브랜치에서 영감을 받은 접근 방식을 통해 호환성을 유지하여 서비스 소비자를 이전에서 새 로 점진적으로 마이그레이션할 수 있습니다. 그러나 SOAP 기반 ASP.NET 웹 서비스에 대한 접근 방식은 상속 대신 위임을 사용합니다. 레거시 ASMX 서비스를 리팩터링하여 구현을 새 REST API에 위임하면 ASMX 소비자와의 호환성이 달성됩니다. 다음 그림은 구현을 새 REST API에 위임하는 레거시 ASMX 서비스를 보여줍니다. 이 위임을 통해 서비스 소비자 3은 새 REST API로 업그레이드할 수 있고 서비스 소비자 1과 2는 독립적으로 업그레이드됩니다.
ASMX 서비스 리팩터링의 특성은 해당 서비스의 기능 및 비기능(교차 기능) 요구 사항에 따라 달라집니다. 경우에 따라 리팩터링에는 이전에서 새 인증 및 권한 부여 메커니즘으로 변환하고, 서비스 ASMX 페이로드를 XML에서 JSON으로 변환한 다음, 변환된 페이로드를 사용하여 REST API를 호출하는 작업이 포함될 수 있습니다. 보다 복잡한 시나리오에서는 리팩터링된 ASMX 서비스가 여러 REST APIs하고 상태를 유지해야 할 수 있습니다.
서비스 소비자를 레거시 ASMX 서비스에서 현대화된 REST API로 마이그레이션하는 프로세스는 모든 서비스 소비자가 새 API를 참조하도록 업데이트될 때까지 점진적으로 계속됩니다. 다음 그림은 모든 서비스 소비자가 REST API를 참조하고 더 이상 필요하지 않아 ASMX 서비스가 폐기된 완전히 현대화된 상태를 보여줍니다.
아키텍처 예
SOAP 기반 ASMX 서비스의 최종 상태 아키텍처는 현대화된 REST API를 사용하는 모든 서비스 소비자를 표시하므로 레거시 ASMX 웹 서비스가 폐기됩니다. 그러나이 패턴의 초점은 최종 상태 아키텍처가 아니라 마이그레이션 중에 필요한 중간 상태 아키텍처이며 소비자는 업그레이드 중입니다. 이 중간 상태는 다음 다이어그램에 나와 있습니다. 이 임시 아키텍처에서 서비스 소비자 1과 2는 구현을 현대화된 REST API에 위임하기 위해 리팩터링된 레거시 ASMX 서비스를 계속 사용하고 있습니다. 리팩터링된 Windows 서비스는 Amazon ECS에 Windows 컨테이너로 배포되고, 고가용성을 위해 세 개의 가용 영역에 구성되며, Application Load Balancer를 통해 액세스됩니다. 서비스 소비자 3이 API Gateway를 통해 직접 새 REST API를 사용하도록 업데이트되었습니다.