The before code sends all requests to one service version, risking full impact of failures. The after code splits requests randomly, sending 80% to the stable version and 20% to the new version, enabling gradual rollout and testing.
### Before: No traffic splitting, all requests go to one service version
class ServiceClient:
def send_request(self, request):
# Always send to v1
return self.call_service_v1(request)
def call_service_v1(self, request):
# Call service v1 endpoint
pass
### After: Traffic splitting between v1 and v2
import random
class ServiceClient:
def send_request(self, request):
# Split traffic 80% to v1, 20% to v2
if random.random() < 0.8:
return self.call_service_v1(request)
else:
return self.call_service_v2(request)
def call_service_v1(self, request):
# Call service v1 endpoint
pass
def call_service_v2(self, request):
# Call service v2 endpoint
pass