Cloud Native 14 min read

DNS Universal Addressing Scheme for Service Mesh Integration of Legacy SOA Applications

This article presents a DNS‑based universal addressing solution that enables traditional SOA applications using interfaces such as Dubbo, HSF, and SOFA to run on a Service Mesh without code changes, by mapping interface names to Kubernetes ClusterIP through CoreDNS and leveraging Istio’s routing mechanisms.

AntTech
AntTech
AntTech
DNS Universal Addressing Scheme for Service Mesh Integration of Legacy SOA Applications

In early 2018 Ant Financial built SOFAMesh, a custom Service Mesh based on Istio, and introduced the x‑protocol solution to address practical challenges when migrating legacy SOA applications to a Service Mesh.

The x‑protocol aims to provide a cloud‑native, high‑performance, low‑intrusion universal Service Mesh solution that runs on Kubernetes, supports multiple private RPC protocols, improves performance, remains compatible with existing SOA systems, and requires no code modifications.

Key problems include supporting many communication protocols, achieving high performance, maintaining compatibility with existing SOA registration/discovery (interface‑based registration), and handling interface names containing special characters such as dots.

Traditional SOA applications follow a “single‑process‑multiple‑interfaces” model, which conflicts with the microservice “single‑process‑single‑service” model used by Kubernetes. This mismatch prevents direct migration to Service Mesh.

The article explains Kubernetes DNS addressing: a service name resolves to a ClusterIP, kube‑proxy rewrites packets, and the client only sees the service name. Istio replicates this flow with sidecar proxies, preserving the original destination IP in TCP options.

To bridge the gap, the proposed solution registers each SOA interface as a DNS record that points to the same ClusterIP of the underlying application. By modifying CoreDNS records (via a Register Agent), interface names like com.alipay.demo.interface‑1 resolve to the application’s ClusterIP, allowing sidecars to perform standard Istio routing.

This approach solves the “single‑process‑multiple‑interfaces” issue: the application registers as a normal Kubernetes Service, while all its interfaces share the same ClusterIP via DNS, making the client’s interface‑based calls transparent to the mesh.

However, because the application remains a single process, service‑governance granularity stays at the application level; fine‑grained interface‑level routing is not possible without refactoring the code into separate microservices.

In summary, the DNS universal addressing scheme provides a simple, language‑agnostic way to migrate Dubbo/HSF/SOFA and even HTTP/REST legacy services to a Service Mesh, leveraging existing Kubernetes and Istio mechanisms while requiring only DNS record updates.

microservicesKubernetesIstioService MeshDNSSOACoreDNS
AntTech
Written by

AntTech

Technology is the core driver of Ant's future creation.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.