Duplicative work is never a good idea. Especially not if your job is to ensure that your organization delivers content as fast, efficiently and securely as possible. If you are using Akamai and Varnish in combination for this purpose, your days of being frustrated by the fact that you have to manage your cache in two places (e.g. when changing your cache TTLs and purge settings) are over.
The Varnish Configuration Language (VCL) is a small domain-specific language designed to be used to define request handling within Varnish. It is extremely flexible and allows you to let Varnish do exactly whatever you want or need it to do.
If I were to ask you what is so great about Varnish, you'd probably answer: "the VCL, duh!". And you would be right, but maybe not for the same reason I'm loving it: the Varnish Configuration Language shifts the traditional declarative mindset of configuration to an imperative state.
It gives you great control, allowing you to actually write your policies, but beyond this, it means that plugins (or VMODs) are super easy to write. Because the VCL is imperative, plugins don't have to register themselves, care about hooks, or worry about execution order, making them a library that you can write in a matter of minutes.
And that's what we are going to explain here, step by step. A moderate knowledge of C and usual development tools (git, autotools, etc.) is expected, but nothing crazy, don't worry.
VCL, which stands for Varnish Configuration Language, is used to define your own caching policies in Varnish Cache and Varnish Cache Plus. It is a real programming language whose syntax can in some cases be the same as the C language.