Backing up with Laravel (india)

Backing up with Laravel (india)

A1b4b398630bbd32b77a82cbc37fae9a?s=128

Freek Van der Herten

March 19, 2017
Tweet

Transcript

  1. Backing up 
 with 
 Laravel

  2. None
  3. About me Freek Van der Herten Partner & developer at

    SPATIE @freekmurze https://murze.be
  4. About me phpantwerp.be Dries Vints @driesvints Frederick Vanbrabant @TheEdonian

  5. Since 2003 Websites, applications and webshops Team 4 developers, 1

    manager Specialization Laravel development
  6. OPEN SOURCE SOFTWARE

  7. Open source software We use a lot of it Nginx,

    Laravel, Ubuntu, Elasticsearch, Memcached, Redis, Beanstalkd, MySQL, Composer, Glide, Homestead, Flysystem, Fractal, Carbon, PHPUnit, NPM, React, jQuery, Java, SSH, Sequel Pro, BackupPC … Basically everything listed in composer.json and package.json
  8. ± 90 packages on Packagist Laravel, Framework agnostic PHP ±

    2 500 000 downloads in total, growing ±350 000 a month We create a lot of it Open source software
  9. http://github-awards.com/users?type=world&language=php Open source software

  10. Learning Forced to write documentation and tests Showing the quality

    of our work Eat our own dogfood Attracting new clients Benefits Open source software
  11. Laravel Medialibrary Dashboard Uptime monitor Fractalistic Laravel Responsecache Open source

    software
  12. Associate files with Eloquent Models Laravel Medialibrary $newsItem->addMedia($file) ->toCollection('images'); 


    $newsItem->getMedia('images')->first()->getUrl(); 
 $newsItem->getMedia('images')->first()->getUrl('thumb');
 
 $newsItem->addMedia($bigFile) ->toCollectionOnDisk('downloads', 's3');
  13. Laravel Dashboard

  14. Laravel Uptime monitor

  15. Fractalistic $books = [
 ['id' => 1, 'title' => 'Hogfather',

    'characters' => [...]],
 ['id' => 2, 'title' => 'Game Of Kill Everyone', 'characters' => [...]]
 ];
 
 $manager = new Manager();
 
 $resource = new Collection($books, new BookTransformer());
 
 $manager->parseIncludes('characters');
 
 $manager->createData($resource)->toArray();
  16. Fractal::create()
 ->collection($books)
 ->transformWith(new BookTransformer())
 ->includeCharacters()
 ->toArray();
 Fractalistic

  17. Speed up your application 
 by caching the entire response

    Laravel Responsecache RESPONSE CACHE REQUESTS APP 1 2
  18. https://spatie.be/opensource/laravel

  19. https://spatie.be/opensource/php

  20. Not free!

  21. POSTCARDWARE

  22. Spatie
 Samberstraat 69D 2060 Antwerp
 Belgium

  23. LET’S TALK BACKUPS

  24. There is no 
 one size fits all solution for

    backups
  25. Small sites Shared hosting Backups by hosting provider Did not

    do anything regarding backups ourselves Hosting Up until a few year ago
  26. Bigger applications Learned basic server management through resources like serversforhackers.com

    Digital Ocean Forge / Ansible Hosting How we are currently doing it
  27. HORROR STORIES

  28. Horror Story #1 Earlier today, our Cloud Operations team was

    alerted to some performance issues affecting the physical server that hosts your droplet. … The damage was serious enough that this droplet was lost and not able to be restored. One fine morning I got this mail from Digital Ocean Full story: https://murze.be/2016/02/today-digitalocean-lost-our-entire-server/
  29. Horror Story #2 This message is a follow-up to our

    previous emails. Despite the very best efforts of our engineering and datacenter operations teams, unfortunately the host machine that your cloud server resides on was not able to be recovered. At this point, there is complete data loss on the server. Horror can occur everywhere. A mail from Rackspace: Source: https://news.ycombinator.com/item?id=3982571
  30. Ok, I’ll just use
 the backup service 
 from my

    cloud provider
  31. Horror Story #3

  32. Horror Story #3

  33. Relying on DO backups 
 is not enough! Only weekly

    snapshots Potentially a lot of data could get lost All the backups in the same datacenter If data center is down backups can’t be accessed or restored
  34. SOLUTIONS

  35. DIY: A bash script Hosted service: https://ottomatik.io/ Open source: BackupPC,

    Bacula Solutions Do not put your eggs in one basket
  36. https://serversforhackers.com/video/backup-to-s3 interface Dumps the database with mysqldump Uploads dump +

    files using was cli tool to S3 Use cron to frequently run script Downside: no notifications when something goes wrong
 
 A bash script
  37. Backups as a service Not free Easy to use interface

    Bring your own storage Ottomatik.io
  38. Open source software Installed onto a control server SSH’s into

    servers to be backed up Uses hard links to save disk space Some system administration knowledge is required to setup up BackupPC SERVERS BackupPC SSH
  39. LARAVEL BACKUP

  40. Backup files and databases to one or more filesystems Cleanup

    old backups Sending notifications Easily installed into any Laravel application Laravel Backup
  41. None
  42. Backup files & databases FILES DATABASE SERVER S3 DROPBOX DB

    DUMP .ZIP .SQL
  43. Backups use a lot of storage Artisan task to clean

    up old backups Fully configurable Will never delete the youngest backup Grandfather-father-son rotation scheme Cleanup old backups
  44. Grandfather-father-son rotation scheme FEW TIMES A DAY DAILY (16) WEEKLY

    (8) MONTHLY (4) YEARLY(2) KEEP
 EVERYTHING KEEP DAILY BACKUPS KEEP WEEKLY BACKUPS KEEP MONTHLY BACKUPS KEEP YEARLY BACKUPS
  45. Detects when no backups were made in a certain amount

    of days Detects if there is too much storage used Fully configurable Monitor backups
  46. On (un)successful events (backup failed, youngest backup is too old,

    backup uses too much storage …) Fully configurable Mail, Slack, Telegram, Pushover, … https://github.com/laravel-notification-channels Sending notifications
  47. DEMO

  48. Your Laravel app may break Server may be down Install

    the package in a Laravel app on a separate server Monitor the backups of all your apps from there Monitoring best practices
  49. Monitoring best practices APPS BACKUPS MONITOR

  50. Install a Laravel app on the same server Point the

    configuration the the database/directories you which to backup Profit! Backing up a non Laravel app
  51. Backup to multiple filesystems Get notified when something goes wrong

    Cleans up older backups Easy installation Cost: one postcard Benefits
  52. Drawbacks Only use this for small to medium sized apps

    Can consume quite a bit a of disk space while backing up Application has credentials to access the backups No restore options
  53. https://docs.spatie.be/laravel-backup

  54. Version 4 PHP 7 / Laravel 5.3, 5.4 Laravel 5.3’s

    native notification capabilities Version 3: PHP 5.6 / Laravel 5.1, 5.2
 Custom notification system: Mail, Log, Slack, Pushover, Telegram Requirements
  55. Do not rely solely on backups of your service provider

    Take care of backups yourself as well Many options available both free and paid Laravel Backup can help you out (cost: one postcard) Summary
  56. QUESTIONS?

  57. Thank you! https://speakerdeck.com/freekmurze/backing-up-with-laravel-india https://spatie.be/opensource https://murze.be https://murze.be/newsletter/