server check.in case study - drupal and node.js
DESCRIPTION
Server Check.in is a simple, inexpensive website and server monitor. See how Server Check.in was built, and how it uses Drupal and Node.js together to build an easy-to-use and powerful web application. See more at https://servercheck.in/TRANSCRIPT
Server Check.inCase Study by Jeff Geerling
Jeff Geerling
• jeffgeerling.com / geerlingguy • Senior Application Developer, Mercy • Owner, Midwestern Mac, LLC
Agenda
• About the service
• How Drupal is used
• How Node.js is used
• Notes on Hosting and Marketing
• Q&A
Why build another uptime monitor?
Server Check.in
• Dogfood project
• Simple, cheap, reliable service
• Notify me when my servers are down
• Launched December, 2012
https://servercheck.in @servercheckin
Demo
External Services
• Twilio
• Stripe
• Disqus
External Services
• Twilio
• Stripe
• Disqus
(for sms notifications)
External Services
• Twilio
• Stripe
• Disqus
(for sms notifications)
(for payment processing)
External Services
• Twilio
• Stripe
• Disqus
(for sms notifications)
(for payment processing)
(for comments)
External Code/Libraries• Flot (jQuery graphing library)
!
!
• MailChimp email templates
!
And, of course…
And, of course…
Drupal Notes• Custom theme (with parent “MM base” theme)
• Four custom modules:
• base
• billing
• notifications
• check server management
Modules
• Views
• Elysia Cron
• Disqus
• Boost
• Honeypot
Modules
• Views
• Elysia Cron
• Disqus
• Boost
• Honeypot
(for content listings)
Modules
• Views
• Elysia Cron
• Disqus
• Boost
• Honeypot
(for content listings)
(for periodic tasks and scalability)
Modules
• Views
• Elysia Cron
• Disqus
• Boost
• Honeypot
(for content listings)
(for periodic tasks and scalability)
(for easy comment moderation)
Modules
• Views
• Elysia Cron
• Disqus
• Boost
• Honeypot
(for content listings)
(for periodic tasks and scalability)
(for easy comment moderation)
(for scalability)
Modules
• Views
• Elysia Cron
• Disqus
• Boost
• Honeypot
(for content listings)
(for periodic tasks and scalability)
(for easy comment moderation)
(for scalability)
(because I hate spam)
Server Checking
• Originally: Drupal’s Queue API + cron batch
• Problems:
• Wasn’t scaling with growth
• Servers were being checked one by one
• 10 min interval maximum
Server Checking
Source: https://servercheck.in/blog/moving-functionality-nodejs-increased-server
Server Checking
• Now: External Node.js application
• Allows:
• Scalability, geographically-diverse checking
• Servers are checked asynchronously
• 1 minute check intervals for everyone (yay!)
Hosting on the Cheap• Cheap “Low End Box” servers (~$15/year VPS)
• Infrastructure managed with Ansible
• (aside: check out Ansible for DevOps)
• Cheap service + cheap servers + frequent changes == 99.9% uptime?
• (testing + automation == reliability)
Launch / Marketing• Some things I’ve tried:
• Drupal.org case study
• Hacker News post
• Sponsoring blogs
• Blogging (servercheck.in/blog)
• Keep trying new things!
Summary
• Drupal is great for user-centric apps (and integrates with almost anything)
• Sometimes, Drupal/PHP gets in the way (use the right tool for the job)
• You can do a lot with a little (hosting and marketing)
Questions
(Use coupon code STL14 for 20% off!)