Beginners guide to gateways and proxies
learncloudnative.com
learncloudnative.com
A gateway is a network device that gives access to other networks (usually the router giving you internet). A proxy is an intermediate system to access, filter and cache requests, usually HTTP requests to the internet, not to confuse with a reverse proxy / load balancer that doesn't do that.
Of course all these are related network equipments often managed by the same guys, so go figure what tickets about "device" are really about.
edit: Also, it should be returning 401 instead of 403. This reminds me I need to make a post about the good usage of 401 and 403.
Please don't be discouraged or lose hope on us, especially when our own hubris gets the better of us. We just don't know any better ... yet.
In web applications frameworks you also have a 'router' concept, which is also a network thing. It doesn't mean that because the network thing happens to route traffic around that the router in the web application can't route requests to the correct code.
I have also looked at some of the traditional egress proxies, like Apache Traffic Server. It seems like it was invented before anyone ever heard of distributed tracing or metrics, and doesn't support those. So it doesn't work for me.
My ultimate goal is to configure every application I use to make all outgoing requests through a proxy, and then use network policies to physically prevent them from talking to any namespace that isn't the egress proxy or something it's authorized to talk to. That way, there can be no unexpected (and unaudited) communication with the outside world; if some container I use starts including a coin miner or a traffic sniffer or something, I'll know about it and can shut it down. But... nobody seems to care except me. So I might have to write my own, which is a pain.
It has its quirks. I played a major role in migrating our company from ATS4 to ATS5 and then ATS6.
There are many developers eager to help, especially if you're hosting or able to show up at the ATS summits.
Envoy has native middleware support but as far as I know you have to build the middleware with the server.
With ATS, you can use TS API or atscppapi and create shared objects that are dynamically loaded middleware.
We had considered Facebook's proxygen at one point too but we already had way too many middleware targeting ATS that it didn't make much sense.
However the hooks that they provide match almost 1-to-1 so it would be not that challenging.
Even to this day, my past employer uses ATS in their PoPs. And then at the next layer of reverse proxies, and then the layer after that.
So imagine PoP (level 0) to pick the right colo -> Level 1 to pick the right service cluster -> Level 2 to front the service instances are all ATS. After that you get to the origin servers that are discovered by a service discovery plugin loaded into ATS, just like all the higher levels. Each level discovers the downstream hosts over zookeeper back then and I had migrated that system to use Consul, so Consul now.
For some context, we were probably handling 8000qps on each ATS, with extremely heavy use of middleware plugins to do everything from auth to dispatch to spam filtering with dynamic rulesets pushed from internal hosts. I benchmarked ATS with and without plugins. With no plugins, our configuration could push over 80000qps.
We had ~36 PoPs, 20-30 instances at each PoP. That's around 8.6Mqps handled with ATS. Part of this was realtime bidding for ads [0], and the rest was actual user traffic, part of it static content, part of it dynamic.
We had our own CDN but also had Akamai on the side to fallback to. AFAIK from my conversations with people in these summits, iTunes is behind ATS. Comcast also pipes your unencrypted traffic through an ATS instance of their own with some custom middleware.
[0] - https://support.google.com/google-ads/answer/6366577?hl=en
We don’t hide the ball We invest heavily in ensuring you can do everything you need to do in OSS version We ensure that there’s always an OSS way of doing things with Tyk, we don’t strong arm you into buying
We do need to feed ourselves, so for the proprietary stuff, we need to be competitive, that’s just how the market works.
The first time you run the above command, it can take a bit as Docker needs to download
"It can take a bit of time as Docker needs to download" is proper English. Also, in the title, you need an apostrophe after "Beginners."