Monday, November 10, 2014

Load balancing algorithm open sourced!

You probably have been wondering how jsDelivr does load balancing between CDNs. Here is a good blog post that I wrote for Mozilla that explains what happens in the backend  "jsDelivr – The advanced open source public CDN".

The only thing missing was the actual code. Well I am happy to announce that in collaboration with Cedexis we are open sourcing our DNS application and the full load balancing code.
The community is now free to read the code and purpose modifications to improve our logic and the performance of the whole CDN.
Check out jsDelivr's load balancing algorithm at Github right now.

And of course Cedexis will continue helping out and improving the code as they release new features and improvements to their platform. Performance and stability will always be our number one priorities. Its something that we have in common with all of our sponsors including Cedexis, MaxCDN and CloudFlare.

With this move we removed one of the biggest "black boxes" of jsDelivr and that's only the start. We will continue to increase our transparency to ensure the trust of our community and inspire more people to become contributors and help us out with all kinds of interesting problems that need solving.


Friday, August 1, 2014

Velocity New York 2014 - Free pass and discounts

I am happy to announce that jsDelivr is now one of the media partners of Velocity conference in New York.

The O’Reilly Velocity Conference, happening September 15-17 in New York City, is the place where DevOps, web operations, and performance professionals (from Fortune 500 companies to exciting startups) gather for a legendary learning and networking experience that explores why a faster, stronger web is no longer an option, but a necessity.

Hear from the best speakers in the industry, who'll delve into topics ranging from hardcore math and statistics to monitoring, clustering, analytics, and organizational culture.

Attend Velocity, and you’ll view your work, the technologies you use, and your organization in completely new ways. Use code JSDR20 to save 20%.

We will also be giving away 1 free two-day conference pass (excludes tutorials day – the first day of the tutorial).
To enter the contest simply tweet this blog post with the hashtag #jsdelivrvelocity and one random person will be selected.
The contest ends in August 20th and we will contact the winner with a mention in Twitter.

Saturday, June 28, 2014

Public CDN auto-updated

Introducing libgrabber!

I am happy to announce that jsDelivr is now in process of becoming fully automated.

libgrabber is an app that runs on our servers and can keep projects hosted at jsDelivr updated automatically without requiring the author or any contributors to manually process and upload the new versions.
This is very important as the repo is quite heavy and require people to download it is a bad idea.
Now our bot can take care of all the dirty work.

And it requires no modifications in the author's repo. All is needed is a valid update.json file in jsDelivr's repo inside the project that we want auto-updated.

Sources that libgrabber supports:
  • Github - Tagged versions
  • npm
  • bower
Here is an example update.json file

{
  "packageManager": "github",
  "name": "morris.js",
  "repo": "morrisjs/morris.js",
  "files": {
    "include": ["morris.css", "morris.js", "morris.min.js"]
  }
}

That's it, morris.js is now auto-updated and all future versions will be submitted automatically by our bot. The config also allows the user to configure in detail the production files by using a mix of include and exclude rules.

Here is libgrabber in action updating the project domtastic to 0.7.4.

We plan to expand libgrabber in the feature to achieve an even greater level of automation.
In the meantime you can help us develop the project or add update.json files to projects that dont have any.

Tuesday, March 18, 2014

CloudFlare joins jsDelivr

So far jsDelivr was using MaxCDN and CDN.NET to provide people with unmatched performance and uptime. Unfortunately CDN.NET decided to back out of open source sponsorship to focus on other important work they have going.
I am sad to see them leave and want to say a huge thank you for everything they did for jsDelivr!
They are really awesome guys, and one of the few companies that help and sponsor open source projects.
 
So in the last few weeks CDN.NET was be removed from load balancing. This change was  completely transparent and didn't result in any downtime whatsoever.
Smart load balancing for the win!

Now the good news are that CloudFlare agreed to sponsor jsDelivr and is now live!




MaxCDN and CloudFlare from now on become the back-bone of the infrastructure and together will be serving all of jsDelivr's traffic. Of course with some help from custom locations sponsored by hosting providers.

These 2 companies are the few that truly understand how important is the open source community and how companies should always encourage and support all open source projects. No matter how small they may look. I had almost nothing when I asked for support from MaxCDN and here we are now...
I am very proud to have 2 of the best Web Performance companies out there to forget their competition and put aside all differences and simply support an open source project that helps the web to become faster.

As always jsDelivr retains its smart routing and users will be getting the faster available provider each time they request a file from jsDelivr CDN. The load balancing algorithm gets improved almost every day and I work closely with Cedexis to optimize everything we can and apply the latest improvements they announce.

No changes were made in the core infrastructure so as always even if CloudFlare goes down jsDelivr will continue to work by switching all traffic to remaining providers.

No changes in command chain too. Neither MaxCDN or CloudFlare own the project or influence it in any negative way. It is a common misunderstanding that I noticed lately. The project is fully managed by me and the community.

And if anyone wants to contribute or help in any way just visit our Github repo


Thank you



Tuesday, December 24, 2013

jsDelivr weekly news #2

Latest changelog:

  • A new load balancing algorithm was pushed to production. Its a lot smarter and makes even heavier use of RUM performance data for each provider. The whole logic was revisited and now standalone servers are no longer used by default in all cases. All sponsored CDNs from now on have higher priority and are used by default. Standalone servers are only used for individual countries. For example Finland has a rule that takes into consideration the performance for 2 additional sponsored servers on top of our CDNs. This way the speed of jsDelivr becomes even better with a lot more stability. You are encouraged to report performance issues if you experience any problems.
  • An organization account was created for jsDelivr. All jsDelivr related projects will be created under the same account
  • A CloudFlare App is under development. If anyone is interested to help please let me know. JavaScript knowledge is required.
  • It is planned to open source the jsdelivr.com website. But before that someone will have to rewrite the back-end code from scratch. At the moment most probably I will have to hire a freelancer to do that. Again if anyone is interested to help let me know
  • All .zip generation was moved to the origin. They are no longer hosted in our Github repo
  • It is now possible to load the latest version of any project by using a special URL.
  • An application to automatically fetch and upload new versions of projects is under development
  • A lot of new features are planned to be released.
  • qTip2 switched to jsDelivr as their official CDN provider!

As always you can participate and contribute to the project. Coders, designers, companies... We need everyone.
We are also interested to include even more CDNs into jsDelivr. If you know people in the CDN industry then let them know that they can help the open source community by simply sponsoring a few TBs of traffic per month.
If MaxCDN and CDN.NET could see past their differences and competition and partner up to help an open source project then anyone can.

Also in the last few months some of our providers experienced downtime. But I am pleased to say that our load balancing algorithm worked perfectly and jsDelivr uptime remained 100% without  anyone being affected.

Saturday, November 9, 2013

How jsDelivr works

I wrote a detailed article on jsDelivr and how exactly it works.

Check it out and let me know if you like it.

Load balancing multiple CDNs or how jsDelivr works

Friday, June 28, 2013

jsDelivr weekly news

Here is the new changelog:

  • Origin moved from MaxCDN push to Rackspace Cloud Files.  MaxCDN locations are now used via a Pull zone. This was done to finally allow me to enable custom HTTP headers. All CORS issues were fixed and I have now full control over HTTP headers.
  • Thanks to Cedexis a new more efficient load balancing algorithm was deployed. A bigger focus was made on uptime and failover features. If a provider goes down the switch should be almost immediate with no downtime at all.
  • A new custom location was added in Germany with 1Gbps unlimited bandwidth connection sponsored by FinnDNS.eu
  • A new project called cdnperf.com now collects uptime and performance data for jsDelivr. Make sure to check it out.
  • 2-way authentication was enabled on all jsDelivr related accounts for maximum security. (all that support this feature.)
  • alohaeditor package was removed from github because it was outdated and had more than 20000 files, most of them useless. Now the jsDelivr repo should be easier to fork and create new pull requests. No files were deleted from the CDN itself, so there will be no downtime for users that were using any of those files.


Help jsDelivr with valuable data

It doesn't matter if you are using our CDN or not, you can now help us gather valuable data and make our performance and uptime decisions even more accurate.
All you have to do is to add this script in your website just before </body>

What it does:
  • Loads in non-blocking async mode
  • After the page is done loading in the background without disturbing the user or the website in any way starts pinging jsDelivr providers.
  • It then sends back to us very useful availability and performance data.
  • Based on this data our load balancing algorithm then decides what provider is best suited for each user of jsDelivr CDN. The more users your website gets the more accurate data we will have.
  • This is very important. Currently its gets about 190k measurements per hour. Pretty good but most of those users are USA based, which means that users from other countries, like China and India could experience a slightly inaccurate decisions.
  • Please feel free to add this code in all of your blogs and websites. It helps everybody!
That's it for now, I will update this blog with more jsDelivr information as they come in.