4 ms·
This is information I would never accept an external dependency on. There are not too many IP ranges around, so this information can easily be stored somewhere
by pilif 11y ago
This is information I would never accept an external dependency on. There are not too many IP ranges around, so this information can easily be stored somewhere and used without the need to query an external service.
Having the data locally allows for potentially synchronous lookups, or at least for lookups with an availability guarantee which makes your code much simpler to reason about.
Plus, you are guaranteed to get the information, independent of the availability of a third party.
And finally for $100 per month I get access to a weekly updated locally available database (that's what Maxmind charges for the city-level database) no matter how many queries I'm going to issue locally.
Flat-fee access to a local database would even allow to bulk post-process web server log files (yeah - they still exist and don't come with the usual privacy issues surrounding third-party analytics providers) within a reasonable time- and cost frame.
Not everything that can be an external service has to be an external service and for geolocation I definitely cannot see any advantage to not having this data stored locally.
This isn't big-data and will easily fit any amount of RAM (if it even needs to), this doesn't require a costly sys-admin team, this doesn't require any hardware knowledge. This is about fetching a file and putting it somewhere on the server. You are doing this daily with your daily web-browsing.
Now, to OP, I'm very happy for you and I appreciate the service you are offering and I'm very happy that you are solving an issue some people are having. I don't want to belittle this at all.
I'm just saying that while I might personally err a bit too much on "doing it on my own", I absolutely cannot see any justification to do IP geolocation with an external dependency.
- toomuchtodo 11y agoI could see the value of having this as a docker container to run internally as a microservice, but agree I would never rely on an external service for this.
- azylman 11y agoWe've done this at Clever, if you're interested: https://github.com/Clever/resolve-ip https://github.com/Clever/resolve-ip We use the same dataset that IP info started with (from MaxMind), although it sounds like they have many different sources now. It's worked fine for us, matches over 99% of the IP addresses we look up, and generally responds in less than 5 milliseconds - basically only limited by network latency. Right now this is published to a private Docker hub repository, for no good reason, but if people would find it useful we can make it public.
- deleted 11y ago[deleted]