Although it's difficult to fully articulate, as our traffic is basically a bell curve through the day and we auto scale between say 7 and 13 servers throughout the day... We pay about $4200/month. That includes several TB of traffic (which we gzip compress where it makes sense).
Thanks for sharing this - it's great to see this level of detail on an adtech stack. I wanted to ask a little more about the user profiles in Aerospike. What process is writing 12k profiles a sec, and what's the read path - is Aerospike e.g. wired into Nginx using https://github.com/aerospike/aerospike-mod-lua ? Any gotchas with Aerospike versus e.g. a Cassandra or DynamoDB?
We don't really use Lua: we connect to Aerospike directly, using a C driver. This saves a lot of time and allows sub-1ms responses.
I find Aerospike latency a lot more stable compared to that of Cassandra. Our use case is quite simple: we treat Aerospike as a large and fast key-value storage.
About point 4, I'm assuming you built in idempotency into your message replay system. Is your unit of idempotency, say, 1 hour or some other unit of time, or is every single message have idempotent results? Because the latter would be pretty amazing :)
Hi kumarm - Michael from AppLovin here. Thanks for the comment, it's an important concern. Here is a blog post outlining the problem and corrective actions that were taken: http://blog.applovin.com/applovin-security-notice/
We use a combination of software (ipvs, haproxy) and hardware load balancers. We plan on gradually moving away from traditional hardware load balancers.