Magento is strongly recommending Varnish Cache for Magento 2 over the built in caching, and websites can get great performance benefits when it's utilized properly. However, often issues with the Magento codebase and incorrect headers or vary response headers can stop Varnish from working properly. It can also be difficult to check that Varnish is performing as it should and caching both static content and HTML documents, which is where Varnish's performance benefits really come into play.
In this discussion I'll go over Magento 2's default Varnish Configuration Language (VCL), how Magento 2 treats personalization differently from Magento 1, and common roadblocks we've seen when implementing Varnish Cache with Magento 2. I'll also make a few suggestions on what can be added to the default Magento 2 VCL to see an even higher cache hit rate.