A B Testing Workflow
This workflow models comparing two versions to see which performs better.
This workflow models preventing too many requests from being processed.
Copy and paste the following FlowZap code into a project in your FlowZap account to see this template diagram.
Client { # Client
n1: circle label:"Start"
n2: rectangle label:"Send API request"
n3: rectangle label:"Receive response"
n4: circle label:"End"
n1.handle(right) -> n2.handle(left)
n2.handle(bottom) -> RateLimiter.n5.handle(top) [label="Request"]
n3.handle(right) -> n4.handle(left)
}
RateLimiter { # Rate Limiter
n5: rectangle label:"Extract client identifier"
n6: rectangle label:"Get current window count"
n7: diamond label:"Within rate limit?"
n8: rectangle label:"Increment request count"
n9: rectangle label:"Return 429 Too Many Requests"
n10: diamond label:"Algorithm type?"
n11: rectangle label:"Token bucket check"
n12: rectangle label:"Sliding window check"
n5.handle(right) -> n6.handle(left)
n6.handle(right) -> n10.handle(left)
n10.handle(right) -> n11.handle(left) [label="Token bucket"]
n10.handle(bottom) -> n12.handle(top) [label="Sliding window"]
n11.handle(right) -> n7.handle(left)
n12.handle(right) -> n7.handle(top)
n7.handle(right) -> n8.handle(left) [label="Yes"]
n7.handle(bottom) -> n9.handle(top) [label="No"]
n8.handle(bottom) -> Backend.n13.handle(top) [label="Allow"]
n9.handle(top) -> Client.n3.handle(bottom) [label="Rejected"]
}
Backend { # Backend Service
n13: rectangle label:"Process request"
n14: rectangle label:"Execute business logic"
n15: diamond label:"Request successful?"
n16: rectangle label:"Return 200 OK"
n17: rectangle label:"Return error response"
n18: rectangle label:"Add rate limit headers"
n13.handle(right) -> n14.handle(left)
n14.handle(right) -> n15.handle(left)
n15.handle(right) -> n16.handle(left) [label="Yes"]
n15.handle(bottom) -> n17.handle(top) [label="No"]
n16.handle(right) -> n18.handle(left)
n17.handle(right) -> n18.handle(top)
n18.handle(top) -> Client.n3.handle(bottom) [label="Response"]
}
This workflow models comparing two versions to see which performs better.
This workflow models checking user permissions before actions run.
This workflow models an async operation that notifies a callback when done.
This workflow models keeping large payloads external and only passing references.
This workflow models rolling back work when a later step fails.