<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Blog-Tech on Mia Heidenstedt</title><link>https://heidenstedt.org/tags/blog-tech/</link><description>Recent
content
in Blog-Tech on Mia Heidenstedt</description><generator>
Hugo</generator><language>en</language><lastBuildDate>Sat, 04 Jul 2026 11:03:00 +0000</lastBuildDate><atom:link href="https://heidenstedt.org/tags/blog-tech/index.xml" rel="self" type="application/rss+xml"/><item><title>Blog Infrastructure Update 2</title><link>https://heidenstedt.org/posts/2022/blog-infrastructure-update-2/</link><pubDate>Wed, 03 Aug 2022 21:17:10 +0200</pubDate><guid>https://heidenstedt.org/posts/2022/blog-infrastructure-update-2/</guid><description><![CDATA[<p>
      <em>Best viewed on the <a href="https://heidenstedt.org/posts/2022/blog-infrastructure-update-2/">original page</a>, where extended functionality like the
    footnote helper is available.</em>
    </p><p>Sadly i did&rsquo;t saved measurements form before the migration to the new Infrastructure. I will do better next time ;)</p>
<p>My blog has experienced a major infrastructure update.<br>
Previously this blog was served by a tiny but highly optimized server at a Hetzner datacenter.<br>
Since this blog is static it was for example possible to pre-compress the files, which shaved a massive 1-0.5ms from a cold TTBF.</p>
<p>Sadly this approach was a bit flawed because outside of germany the cold TTBF times weren&rsquo;t exactly good.<br>
Surprisingly CloudFlare did nothing to these times, since the cache of CloudFlare is short lived and not prefetched.</p>
<p>My solution to this problem, to make a global low cold TTBF possible, was BunnyCDN which provides a Service that can store and server static file, these files are replicated Globally to user-selectable locations.<br>
At my case (i use all locations), the price per GB per month is 0.28$ which is very good if you consider that all content is replicated and served from SSDs in 14 locations.</p>
<p><div class="imageLoadingWrap"><img
          alt="A graph showing 14 locations of the SSDs"
          title="A graph showing 14 locations of the SSDs"
          loading="lazy"
          src="https://heidenstedt.org/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_d7e629ebf8216616.webp"
          width="1050"
          height="640"
          srcset='/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_9a021a600996c8a5.avif 100w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_e633eb4d54a03176.webp 100w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_1d478d53e9e747e9.avif 200w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_1aa6c06c37144445.webp 200w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_348e50f8ed2b8ddf.avif 300w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_320908db5073cf83.webp 300w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_8edf4168c7885001.avif 400w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_eb595935cf71ec9f.webp 400w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_a810e83baef1a3f0.avif 500w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_847f54e6d80be463.webp 500w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_dffa053f07b01eb7.avif 600w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_317f8b09d06a6f69.webp 600w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_50a1c96a3b3b6675.avif 700w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_8e734f63892166d7.webp 700w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_bb8e0c42bbdc144c.avif 800w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_ff6dbb064149642.webp 800w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_9ebe052b1c1b1dbd.avif 900w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_91dc0922c04f6415.webp 900w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_64da2fbe5dc1ef77.avif 1000w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_aedca361feff1d47.webp 1000w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_48657180e40f5837.avif 1050w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_33f97b7cd30896aa.webp 1050w
          '
          sizes="(max-width: 672px) calc(85vw - 32px), (max-width: 736px) 640px, 657px"
        ><div class="imageLoading"></div>
</div></p>
<p>Here you can see where these locations are, green is the &ldquo;main storage zone&rdquo;, which is not configurable.</p>
<p>The switch to BunnyCDN gave me a immense performance boost around the world, and surprisingly also in germany.<br>
BunnyCDN dose not allow for rsync or something usable to transfer the Files to them.</p>
<p>I use <code>lftp</code> to transfer the files via FTP, which takes about 9 min each time. This is tbh shitty, and i don&rsquo;t like it a bit.</p>
<h2 id="dns-and-peering"><a href="https://heidenstedt.org/posts/2022/blog-infrastructure-update-2/#dns-and-peering">DNS and Peering</a></h2><p>Sadly BunnyCDN dose not allow to use them as a nameServer, also i have to use a c-name to hook up to their CDN.<br>
Cloudflare on the other side acts as a nameservers and returns direct IPv4s and IPv6s on the DNS-query, this will save 1 DNS-Request and is therefore faster, especially since most users using the DNS-Server from their ISP which are often very slow.</p>
<p>So i tried to put CloudFlare in front of BunnyCDN, which had a negative impact on the TTFB, although not a great one.<br>
In same cases it is faster to get a uncached page on BunnyCDN through CloudFlare because CloudFlare has a lot and very good peering to ISPs and exchanges.</p>
<p>Sadly CloudFlare TTBF behaves a unpredictable.<br>
It can be that you get in one request 20ms TTFB and the next one takes 300ms.</p>
<p>I think i will run CloudFlare anyway in front of BunnyCDN in hope to better mitigate Attacks and big page visit numbers.<br>
I hope that CloudFlare will cache such surges for me&hellip; they can become expensive.</p>
<h2 id="costs"><a href="https://heidenstedt.org/posts/2022/blog-infrastructure-update-2/#costs">Costs</a></h2><p>This entire setup cost me less then 1$ per Month (without the Domain), which is very very cheap for something this fast.<br>
I think it is amazing how cheap and easy you can distribute your ideas and thoughts today, without relining on a platform that appropriates your content.</p>
<h2 id="conclusion"><a href="https://heidenstedt.org/posts/2022/blog-infrastructure-update-2/#conclusion">Conclusion</a></h2><p>Costs less then 1$ per Month.<br>
Scales amazingly.<br>
Very fast global latency.<br>
I don&rsquo;t have to keep a server updated.</p>
]]></description><content:encoded><![CDATA[<p>
      <em>Best viewed on the <a href="https://heidenstedt.org/posts/2022/blog-infrastructure-update-2/">original page</a>, where extended functionality like the
    footnote helper is available.</em>
    </p><p>Sadly i did&rsquo;t saved measurements form before the migration to the new Infrastructure. I will do better next time ;)</p>
<p>My blog has experienced a major infrastructure update.<br>
Previously this blog was served by a tiny but highly optimized server at a Hetzner datacenter.<br>
Since this blog is static it was for example possible to pre-compress the files, which shaved a massive 1-0.5ms from a cold TTBF.</p>
<p>Sadly this approach was a bit flawed because outside of germany the cold TTBF times weren&rsquo;t exactly good.<br>
Surprisingly CloudFlare did nothing to these times, since the cache of CloudFlare is short lived and not prefetched.</p>
<p>My solution to this problem, to make a global low cold TTBF possible, was BunnyCDN which provides a Service that can store and server static file, these files are replicated Globally to user-selectable locations.<br>
At my case (i use all locations), the price per GB per month is 0.28$ which is very good if you consider that all content is replicated and served from SSDs in 14 locations.</p>
<p><div class="imageLoadingWrap"><img
          alt="A graph showing 14 locations of the SSDs"
          title="A graph showing 14 locations of the SSDs"
          loading="lazy"
          src="https://heidenstedt.org/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_d7e629ebf8216616.webp"
          width="1050"
          height="640"
          srcset='/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_9a021a600996c8a5.avif 100w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_e633eb4d54a03176.webp 100w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_1d478d53e9e747e9.avif 200w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_1aa6c06c37144445.webp 200w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_348e50f8ed2b8ddf.avif 300w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_320908db5073cf83.webp 300w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_8edf4168c7885001.avif 400w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_eb595935cf71ec9f.webp 400w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_a810e83baef1a3f0.avif 500w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_847f54e6d80be463.webp 500w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_dffa053f07b01eb7.avif 600w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_317f8b09d06a6f69.webp 600w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_50a1c96a3b3b6675.avif 700w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_8e734f63892166d7.webp 700w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_bb8e0c42bbdc144c.avif 800w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_ff6dbb064149642.webp 800w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_9ebe052b1c1b1dbd.avif 900w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_91dc0922c04f6415.webp 900w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_64da2fbe5dc1ef77.avif 1000w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_aedca361feff1d47.webp 1000w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_48657180e40f5837.avif 1050w,/posts/2022/blog-infrastructure-update-2/bunny_cdn_storage_regions_hu_33f97b7cd30896aa.webp 1050w
          '
          sizes="(max-width: 672px) calc(85vw - 32px), (max-width: 736px) 640px, 657px"
        ><div class="imageLoading"></div>
</div></p>
<p>Here you can see where these locations are, green is the &ldquo;main storage zone&rdquo;, which is not configurable.</p>
<p>The switch to BunnyCDN gave me a immense performance boost around the world, and surprisingly also in germany.<br>
BunnyCDN dose not allow for rsync or something usable to transfer the Files to them.</p>
<p>I use <code>lftp</code> to transfer the files via FTP, which takes about 9 min each time. This is tbh shitty, and i don&rsquo;t like it a bit.</p>
<h2 id="dns-and-peering"><a href="https://heidenstedt.org/posts/2022/blog-infrastructure-update-2/#dns-and-peering">DNS and Peering</a></h2><p>Sadly BunnyCDN dose not allow to use them as a nameServer, also i have to use a c-name to hook up to their CDN.<br>
Cloudflare on the other side acts as a nameservers and returns direct IPv4s and IPv6s on the DNS-query, this will save 1 DNS-Request and is therefore faster, especially since most users using the DNS-Server from their ISP which are often very slow.</p>
<p>So i tried to put CloudFlare in front of BunnyCDN, which had a negative impact on the TTFB, although not a great one.<br>
In same cases it is faster to get a uncached page on BunnyCDN through CloudFlare because CloudFlare has a lot and very good peering to ISPs and exchanges.</p>
<p>Sadly CloudFlare TTBF behaves a unpredictable.<br>
It can be that you get in one request 20ms TTFB and the next one takes 300ms.</p>
<p>I think i will run CloudFlare anyway in front of BunnyCDN in hope to better mitigate Attacks and big page visit numbers.<br>
I hope that CloudFlare will cache such surges for me&hellip; they can become expensive.</p>
<h2 id="costs"><a href="https://heidenstedt.org/posts/2022/blog-infrastructure-update-2/#costs">Costs</a></h2><p>This entire setup cost me less then 1$ per Month (without the Domain), which is very very cheap for something this fast.<br>
I think it is amazing how cheap and easy you can distribute your ideas and thoughts today, without relining on a platform that appropriates your content.</p>
<h2 id="conclusion"><a href="https://heidenstedt.org/posts/2022/blog-infrastructure-update-2/#conclusion">Conclusion</a></h2><p>Costs less then 1$ per Month.<br>
Scales amazingly.<br>
Very fast global latency.<br>
I don&rsquo;t have to keep a server updated.</p>
]]></content:encoded></item></channel></rss>