惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
Recent Announcements
Recent Announcements
H
Help Net Security
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
小众软件
小众软件
Last Week in AI
Last Week in AI
U
Unit 42
Google DeepMind News
Google DeepMind News
博客园 - 司徒正美
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
Microsoft Security Blog
Microsoft Security Blog
G
Google Developers Blog
N
Netflix TechBlog - Medium
Blog — PlanetScale
Blog — PlanetScale
云风的 BLOG
云风的 BLOG
V
V2EX
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
爱范儿
爱范儿

CloudCannon Blog

Building with AI: Git-based vs headless vs traditional CMS CloudCannon + Astro: performance meets powerful content management Introducing the Astro Component Starter Introducing Jetstream — built on the Astro Component Starter Why we switched to the system font stack Redesigning CloudCannon’s docs with Diátaxis, Lume, and Pagefind Make content editing more visual: upgraded Editable Regions How Configuration Mode makes building editing interfaces easy Your hosting just got an upgrade (and a price cut) Custom testing domains for professional branding Keep your content consistent with input validation Managing multilingual content in CloudCannon Simplify team publishing with conflict resolution and domain tools Open Beta: Publishing Conflict Resolution Getting started with CloudCannon and Astro: Bookshop, components, and live editing Welcome to the CloudCannon Community! Omnichannel delivery is just marketing spin from API-based CMS companies Getting started with CloudCannon and Astro: Snippets and Collections Managing digital assets in CloudCannon: a guide to smart asset storage Understanding CloudCannon's branching workflows and Projects: a complete guide What is a static website? CloudCannon’s 2024 wrapped Getting started with CloudCannon and Astro: WYSIWYG blogging Jamstack vs. WordPress: reasons to make the change The top five static site generators for 2025 (and when to use them!) Free Jekyll themes for 2025: ten great community options Eleventy (11ty) vs. Hugo How to set up WYSIWYG editing with MkDocs Material The rise of static-first websites: why major brands are making the switch Watching your Core Web Vitals on Jamstack
Maintenance Debrief
2018-11-15 · via CloudCannon Blog

We have successfully completed our Scheduled Maintenance. During this time we allocated two hours and completed the migration in just over three hours. During the update we had the following successes:

  1. Upgraded our Postgres database four major versions
  2. Added a set of other security improvements
  3. Achieved zero downtime on sites

How we communicated the downtime Direct link to this section

To communicate in our app, we use Intercom. Intercom offers us a way to send a message to all active users. The logged in users were sent a message and then again once it was completed.

On our marketing sites we added a banner that linked to our blog. To do this we updated a data file in our jekyll theme called _data/banner_notification.yml. This file looks like:

enabled: true
text: Scheduled Maintanence today at 5:00pm NZDT
url: https://cloudcannon.com/operations/2018/11/13/scheduled-maintenance/

This file tells our default layout to add a clickable banner on the top of all pages:

{% if site.data.banner_notification.enabled %}
<div class="banner-notification">
<p>
<a href="{{ site.data.banner_notification.url }}">
{{ site.data.banner_notification.text }}
</a>
</p>
</div>
{% endif %}

Our sites are built using CloudCannon suite, to build our sites locally we run gulp dev. Using iterm2 we build all of our sites simultaneously and the suite even watches the local Jekyll Theme repository.

Once built we can see that the banner is live on all sites.

To get this live we push the updated Gemfile.lock to master and publish to production via CloudCannon.

Improvements for next time Direct link to this section

Here are the updates we are going to make the next time we schedule maintenance:

  • Inform earlier
  • Update our status page and integrate this with our app
  • Integrate our change log in the app

Why three hours not two? Direct link to this section

Once we completed the database upgrades with 15 minutes to spare. We turned the app back on to point at the new database and the performance was abysmal. We needed to run the SQL command VACUUM ANALYZE on our database. This solved all of our issues but took some time. A nasty surprise at the end of a fairly seamless migration.