Created by Alexander Klizhenas / @klizhentas
Founding engineer @Mailgun by Rackspace
Voice and messaging systems since 2006
Focusing on infrastructure
Mailgun — Email Service for Developers
Solving hard problems in the email space
No scheduled maintenance windows
github.com/mailgun/flanker
github.com/mailgun/talon
github.com/mailgun/vulcand
→Evolution of the Mailgun cluster
New tools
Dynamic load balancing
We have a lots of fast-moving parts
Evolution of the Mailgun cluster
→ New tools
Dynamic load balancing
Dynamic configuration introduces new challenges
Evolution of the Mailgun cluster
New tools
→ Dynamic load balancing
Middlewares
Connection limits
Frontends and backends
Rate limits
@api("/v2/domains", methods=['GET'])
def index():
# ...
@api("/v2/domains", methods=['POST'])
def create():
# ...
GET http://vulcan1.host/v1/upstreams/u1/endpoints
{
"Endpoints":[
{
"Id":"e1",
"Url":"http://e1.host:5000",
"UpstreamId":"u1",
"Stats":{
"Counters":{
"Period":10000000000,
"NetErrors":3,
"Total":6,
...
},
GET http://vulcan1.host/v1/upstreams/u1/endpoints
{
"Verdict":{
"IsBad":true,
"Anomalies":[
{
"Code":1,
"Message":"50.00 quantile latency stands out"
}
]
}
}
PUT http://vulcan1.host/v1/middlewares/cbreaker/cb1
{
"Middleware":{
"Condition":"LatencyAtQuantileMS(50.0) > 50",
"Fallback":{
"Type":"response",
"Action":{
"StatusCode":400,
"Body":"Come back later"
}
}
}
}
github.com/mailgun/vulcand