How to Design a Scalable Rate Limiting Algorithm
Disregarding the article completely, I&#x27;ll share my opinion on Kong because we use quite a bit at my workplace. We use an old version (0.9.x as of right now). The things I shared below might not be true anymore in new versions but I can&#x27;t tell and are regarding the plugin system.<p>IMO, the idea of taking things like authentication, rate limiting, etc in a proxy is a wonderful idea (<a href="https:&#x2F;&#x2F;2tjosk2rxzc21medji3nfn1g-wpengine.netdna-ssl.com&#x2F;wp-content&#x2F;uploads&#x2F;2017&#x2F;12&#x2F;illustration2.png" rel="nofollow">https:&#x2F;&#x2F;2tjosk2rxzc21medji3nfn1g-wpengine.netdna-ssl.com&#x2F;wp-...</a>). So in theory, the approach Kong takes is wonderful, but I think the implementation is not so much.<p>Kong is layer over nginx and uses lua as a scripting language to add all sorts of stuff. Quickly, you reach the limit of the plugins capability so you think, well, I will write my own plugins. Well, to me it was a very unpleasing experience. I found that the thing was hard to test and hard to maintain. Maybe my criticism is more lua than Kong but since Kong relies heavily on lua, there is not much I can do.<p>There is also magic happening. You declare a schema.lua files to configure the store to hold your data. Then automatically you&#x27;ve got a DAO interface available with a bunch of method on it to work with the store. You don&#x27;t know what methods are available or what arguments should be passed into these functions.<p>Anyway, this is my take after spending quite a few hours working on home made plugins in lua for Kong.<p>In the end, I&#x27;m glad Kong is open source and it&#x27;s a great piece of software. It helped us reduce our applications complexity but make sure you don&#x27;t start to shift to much logic into it because the plugin system can be hard to work with.