LowEndBox - Cheap VPS, Hosting and Dedicated Server Deals

Interview: Q&A with the Founder of jsdelivr, Dmitriy Akulov

Our LowEndBox Interview Series has featured many interesting personalities so far and today we’re excited to bring you an interview with the founder of jsdelivr, Dmitriy Akulov.  This is a very cool project which offers free CDN services to a huge array of FOSS projects.  They’re serving billions of request per month all over the globe.  I think you’ll find this interview an interesting read and case study of how a small idea can grow into massive planet-critical infrastructure.

First, who are you and where in the world are you located?

My name is Dmitriy Akulov and I live in Krakow, Poland. Originally I am from Ukraine but I grew up and went to school in Greece.

Tell us what jsdelivr is all about and what the project’s goals are.

jsDelivr is a free multi-CDN for open source projects, developers and webmasters.

Currently we proxy all of Github, npm registry and WordPress addons registry. This means we can load any file located on those services.

Developers get an easy to use method to distribute their code without having to pay for commercial CDN services or think about infrastructure management and devops.

Website owners use jsDelivr as a quick method to grab and load the libraries and files they need while at the same time optimizing the performance of their websites.

Currently we utilize Cloudflare, Fastly and Stackpath to provide the best possible performance and uptime to our users. In mainland China we have an ICP license and use Quantil to serve our content.

What inspired you to begin this project?

It was always a challenge to find the libraries you need, download them, upload them, add the correct paths… And later you would have to keep them updated by repeating the same process.

So I had the idea to build a better Google Hosted Libraries with community contributed libraries, an easy to use interface and a big focus on performance and availability.

Managing servers was always something I enjoyed, and so building the infrastructure for this was a really exciting project for me.  

You’ve been around for more than 10 years and are serving 62 billion requests a month with 1.7 Petabytes of traffic. That’s equivalent to every human being on the planet making almost 8 requests per month. Is it just me or is that amazing?

I agree, it’s really amazing. And most interestingly we keep growing fast without any active marketing or promotion. These numbers really inspire me to continue working on it and build more and more new features and improvements.

Looking at your infographic, I count almost 800 POPs. Is that number growing? Where would you like to see future POPs?

That number slowly grows as our partners add more POPs themselves. I think Latin America is somewhat underserved at the moment, as well as many parts of Asia. But slowly more and more providers are starting to invest in those locations and improving our total performance.

Your web site says you’re “faster than any other CDN”. Bold claim! How is that possible?

It is based on data from CDNPerf https://dl.dropboxusercontent.com/s/1s89aef57k0w2q5/chrome_2020-09-01_20-07-32.png

Since we combine multiple CDN providers we are able to use the best performing provider in every region separately. That really improves our performance and at the same time improves our uptime. As you might see in the news some CDN providers have outages from time to time that take down a big part of the internet. Those outages don’t have any effect on jsDelivr because we simply remove that provider from our logic and continue serving our users normally.

You must have an interesting viewpoint on Internet usage. Do you see any global-scale trends in terms of Internet usage? Is one region growing faster than another, etc.?

Make sure you follow us on Twitter because we plan to release some public stats on this exact topic and allow everyone to use jsDelivr as a data source of internet trends as well. 

How much of the code that runs jsdelivr custom-written? What languages, tools, etc. do you use for your infrastructure?

Everything is custom written from scratch. We are using node.js to serve all of our origin traffic and support all of our features like on-the-fly minimization and file combinations. 

We run the code on multiple servers in multiple regions to ensure high availability even on the origin level. 

Check out our infographic for more details: https://www.jsdelivr.com/network/infographic

You are only public CDN with a valid ICP license issued by the Chinese government. What does that mean and how did that come about?

I really wanted to offer the best CDN for everyone. That meant developers and websites in China as well. Especially them since many services are not available there or are way too slow.

I started doing some research on the topic until I found an excited jsDelivr user from China who decided to help us out. With his help we were able to set everything up and at the same time get sponsored by Quantil who offered us their huge network of POPs in mainland China.

After that we truly became a global CDN. Our users can be sure that when they use jsDelivr their files will load instantly everywhere, including China,

I just have to ask…I was playing with your network map and toggled “Other” on and off and it looks like the “Other” provider only covers Madagascar. Do you deploy a custom setup there (or elsewhere)?

We did, but not anymore unfortunately. Many years ago we had our own custom POPs complementing the sponsoring CDNs. Madagascar was one of those locations. 

But over time it became redundant as the performance difference wasn’t meaningful anymore and so the resources and time we had to spend to maintain the custom POPs wasn’t worth it anymore.

Got to update the map :)

What are the biggest headaches to running a CDN – DDOS, security, or…?

Now after 10 years we have solved most of our problems. Now the only headache is lack of resources to do everything we want.

While we are sponsored by DigitalOcean for example it’s not nearly enough to run all of our infrastructure. So I pay by myself for most of our servers running our backend and many supporting services.

That means instead of just scaling our servers we have to be clever about it and fix any high load issues using code. We have built a complex system with multi-layered caching on many different levels to lower the load on our origin servers while maintaining the best possible uptime and performance.

Many new ideas we have for cool features also require lots of CPU and RAM to work, so instead of just coding them in a week and going live we have to spend months finding ways to make them work on a 100billion requests scale while not having me go bankrupt :)

The top of your site says you’re looking for contributors. What kind of contributors are you looking for?

We are looking for all kinds of developers to help us out. From super senior node.js dev to help on the origin to students and junior devs to help us with stuff like fixing our website, building plugins and addons for CMS, integrations with IDEs and so on…

We appreciate all help!

Anything else you’d like to tell us about this awesome project?

We plan to release new and exciting features soon that will make it easier for our users to use jsDelivr for their javascript dependencies and allow them to utilize packages authored in ESM and CJS formats.

On another note, you’re launching another new project call appfleet. It looks like it’s pay-by-the-hour Docker hosting. What can you tell us about it?

appfleet aims to become 2 things. A simple to use docker hosting platform, and a flexible edge hosting provider. It will allow users to deploy containers globally to multiple regions at the same time. On top of that it will provide lots of unique features like the use of any TCP or UDP port. Making this a much more flexible alternative to current serverless solutions that focus mostly on HTTP.

Besides regular HTTP services like APIs and websites, you can also deploy DNS, distributed databases, video streaming services, and more!


No Comments

    Leave a Reply

    Some notes on commenting on LowEndBox:

    • Do not use LowEndBox for support issues. Go to your hosting provider and issue a ticket there. Coming here saying "my VPS is down, what do I do?!" will only have your comments removed.
    • Akismet is used for spam detection. Some comments may be held temporarily for manual approval.
    • Use <pre>...</pre> to quote the output from your terminal/console, or consider using a pastebin service.

    Your email address will not be published. Required fields are marked *