SlideShare a Scribd company logo
DEVELOPING WEB APPS
DY'S SPRINKLES
LOCAL DEVELOPMENT
LOCAL DEVELOPMENT
BUILT-IN PHP SERVER
▸ Out of the box support in PHP >= 5.4.0
▸ Designed specifically for local development
▸ Useful for testing and demos in controlled environments
▸ Never run this in production
▸ The easiest way to start modern PHP development
LOCAL DEVELOPMENT
BUILT-IN PHP SERVER
LOCAL DEVELOPMENT
BUILT-IN PHP SERVER
▸ Out of the box support in PHP >= 5.4.0
▸ Designed specifically for local development
▸ Useful for testing and demos in controlled environments
▸ Never run this in production
▸ The easiest way to start modern PHP development
▸ More info - Google “php built in server”
LOCAL DEVELOPMENT
LARAVEL VALET
▸ Mac only
▸ Very easy to get up and running (with Composer)
LOCAL DEVELOPMENT
▸ Composer is a tool for dependency management in PHP. It
allows you to declare the libraries your project depends on
and it will manage (install/update) them for you.
▸ Not a package manager. It manages dependencies on a per-
project basis, installing them in a vendor directory within
your project.
LOCAL DEVELOPMENT
LARAVEL VALET
$ composer global require laravel/valet
$ valet install
LOCAL DEVELOPMENT
LARAVEL VALET
▸ Mac only
▸ Very easy to get up and running (with Composer)
▸ Caddy server
▸ dnsmasq
LOCAL DEVELOPMENT
LARAVEL VALET - FOLDER TO DOMAIN MAPPING
LOCAL DEVELOPMENT
LARAVEL VALET - FOLDER TO DOMAIN MAPPING
/Users/michael/phpsa/Sites
$ ls
bedrock dyrynda-com-au phpsa
confomo laravel
LOCAL DEVELOPMENT
LARAVEL VALET - FOLDER TO DOMAIN MAPPING
phpsa => http: //phpsa.test
LOCAL DEVELOPMENT
LARAVEL VALET
▸ Mac only
▸ Very easy to get up and running (with Composer)
▸ Caddy server
▸ dnsmasq (valet domain, valet park)
▸ MariaDB
LOCAL DEVELOPMENT
LARAVEL VALET
$ brew install mariadb
LOCAL DEVELOPMENT
LARAVEL VALET
▸ Very easy to get up and running (with Composer)
▸ Caddy server
▸ dnsmasq (valet domain, valet park)
▸ MariaDB (brew install mariadb)
▸ Very small memory footprint (~7MB)
▸ Share your work with clients remotely
LOCAL DEVELOPMENT
LARAVEL VALET
$ valet share -region au
LOCAL DEVELOPMENT
LARAVEL VALET
$ valet share -region au
LOCAL DEVELOPMENT
LARAVEL VALET - EASY SHARING WITH NGROK
LOCAL DEVELOPMENT
LARAVEL VALET - OUT OF THE BOX SUPPORT
▸ Laravel / Lumen
▸ Symfony
▸ Zend
▸ CakePHP3
▸ WordPress / Bedrock
▸ Craft
▸ Statamic
▸ Jigsaw
▸ Static HTML
▸ Your custom driver
LOCAL DEVELOPMENT
LARAVEL VALET
▸ Mac only
▸ Very easy to get up and running (with Composer)
▸ Caddy server
▸ dnsmasq (never mess with your hosts file again!)
▸ MariaDB (brew install mariadb)
▸ Very small memory footprint (~7MB)
▸ Share your work with clients remotely
▸ More info at https://laravel.com/docs/valet
LOCAL DEVELOPMENT
LAMP / WAMP / MAMP
▸ Linux / Windows / Mac
▸ Apache
▸ MySQL
▸ PHP
▸ Installs a local server environment, it’s free, and easy to install
if you’re not familiar with the command line
▸ If you don’t need it anymore, just delete it
▸ https://www.mamp.info / http://www.wampserver.com/en
LOCAL DEVELOPMENT
LAMP / WAMP / MAMP
LOCAL DEVELOPMENT
LAMP / WAMP / MAMP
▸ Linux is a bit trickier as you need to install each component
via your distribution’s package manager
▸ Use aptitude (Debian, Ubuntu), yum (RHEL / CentOS)
LOCAL DEVELOPMENT
LAMP / WAMP / MAMP
$ sudo apt-get install nginx
$ sudo apt-add-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get install php7.0-cli php7.0-dev 
php-curl php-mysql php-mbstring php-7.0-fpm…
$ …
$ sudo apt-get install mariadb-server
VIRTUAL MACHINE
LOCAL DEVELOPMENT
VIRTUAL MACHINE
▸ VirtualBox (Free)
▸ VMWare Fusion (~$100)
▸ Parallels Desktop (~$100)
▸ VMWare Workstation (~$300)
LOCAL DEVELOPMENT
VIRTUAL MACHINE
▸ Irrespective of your virtualisation software, you get a self-
contained, full operating system
▸ Allows you to contain your LAMP install
▸ Easy to replicate your production environment
▸ Don’t install any development software on your host machine
▸ Make a mistake? Blow away the image and start over!
▸ Resource (memory, CPU, hard disk) intensive
LOCAL DEVELOPMENT
VIRTUAL MACHINE - VAGRANT
▸ Create and configure lightweight, reproducible, and portable
development environments
▸ Saves you having to run install steps manually every time
▸ Don’t worry about missing a piece of software
▸ Makes disposable or single-project machines simple
▸ Commit your Vagrantfile to version control so other
developers will have exactly the same development
environment when they checkout your code
LOCAL DEVELOPMENT
VIRTUAL MACHINE - VAGRANT
▸ You can even build your base images and reuse them over
and over again
▸ Reduces the time it takes to get up and running on new
projects
▸ Using images means you have the base image as well as one
or more instances on your machine taking up disk space
▸ More info at https://www.vagrantup.com
LOCAL DEVELOPMENT
VIRTUAL MACHINE - HOMESTEAD
▸ Another Laravel product, Homestead allows you to get up
and running with a modern, pre-packaged development
environment
▸ Ubuntu 16.04
▸ Git
▸ PHP 7
▸ Nginx
▸ MySQL / MariaDB
▸ PostgreSQL
▸ Composer
▸ Node
▸ Redis / Memcached
▸ Beanstalkd
LOCAL DEVELOPMENT
VIRTUAL MACHINE - HOMESTEAD
$ composer global require laravel/homestead
$ homestead edit
$ homestead up
LOCAL DEVELOPMENT
LAMP / WAMP / MAMP
$ sudo apt-get install nginx
$ sudo apt-add-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get install php7.0-cli php7.0-dev 
php-curl php-mysql php-mbstring php-7.0-fpm…
$ …
$ sudo apt-get install mariadb-server
LOCAL DEVELOPMENT
VIRTUAL MACHINE - HOMESTEAD
$ composer global require laravel/homestead
$ homestead edit
$ homestead up
$ homestead ssh
DOCKER
I AM NOT AN EXPERT IN
BUT I’LL TRY ANYWAY
LOCAL DEVELOPMENT
DOCKER - WHY?
▸ Faster delivery of your applications
▸ Deploying and scaling are easier
▸ Achieve higher density and run more workloads
LOCAL DEVELOPMENT
DOCKER - THREE KEY COMPONENTS
▸ Images - the build component
▸ Registries - the distribution component
▸ Containers - the run component
LOCAL DEVELOPMENT
DOCKER - HOW IS IT DIFFERENT TO VIRTUALISATION?
▸ Virtual machines include the application, the necessary
binaries and libraries, and an entire guest OS
Infrastructure
Host Operating System
Hypervisor
Guest OS
Bins / Libs
App 1
Guest OS
Bins / Libs
App 2
Guest OS
Bins / Libs
App 3
LOCAL DEVELOPMENT
DOCKER - HOW IS IT DIFFERENT TO VIRTUALISATION?
▸ Virtual machines include the application, the necessary
binaries and libraries, and an entire guest OS - tens of GBs
▸ With containers, you have a single operating system, and
each container shares the operating system kernel with other
containers
LOCAL DEVELOPMENT
DOCKER - HOW IS IT DIFFERENT TO VIRTUALISATION?
▸ Virtual machines include the application, the necessary
binaries and libraries, and an entire guest OS - tens of GBs
▸ With containers, you have a single operating system, and
each container shares the operating system kernel with other
containers - tens of MBs
▸ Because of this, a single server can host many more
containers than Virtual Machines. VMs can take several
minutes to boot, containerised apps start almost instantly
▸ Containers include the application and all of its dependencies, but
share the kernel with other containers, running as isolated processes in
user space. Docker containers are not tied to any specific infrastructure.
▸ Shared parts of the operating system are read only, while each
container has its own mount for writing.
LOCAL DEVELOPMENT
DOCKER - HOW IS IT DIFFERENT TO VIRTUALISATION?
Infrastructure
Host Operating System
Docker Engine
Bins / Libs
App 1
Bins / Libs
App 2
Bins / Libs
App 3
LOCAL DEVELOPMENT
DOCKER - HOW DOES IT WORK?
▸ Docker is written in Go and makes use of several kernel
features to deliver its functionality
▸ Namespaces
▸ Control groups
▸ Union file systems
▸ Container format
LOCAL DEVELOPMENT
DOCKER - SHARING AND COLLABORATION
▸ Storing, distributing, and managing Docker images is easy
with Docker Hub. Any updates and changes are shared with
others. History is automatically tracked.
▸ Collaborate with others simply by shipping your container. If
your frontend team needs to work with the API you’re
building, all they have to do is spin up up the Docker
container.
LOCAL DEVELOPMENT
DOCKER - SCALABILITY
▸ Because containers are lightweight, they take seconds to
spin up and down
▸ This makes it easy to scale out your application during peak
times, and scale down during quiet periods
▸ A lot of this can be automated
▸ More info at https://www.docker.com
▸ Check out my friend Chris’ Shipping Docker course at
https://shippingdocker.com
QUESTIONS?
Michael Dyrynda
@michaeldyrynda
dyrynda.com.au
North Meets South
@northsouthaudio
northmeetssouth.audio
THANK YOU!

More Related Content

PPTX
Vagrant crash course
PPTX
How To Set a Vagrant Development System
PDF
PDF
Vagrant + Docker provider [+Puppet]
PDF
Vagrant For DevOps
PDF
Optimizing Docker Images
PDF
Puppet and Vagrant in development
PDF
Provisioning your Environment with Vagrant and Ansible
Vagrant crash course
How To Set a Vagrant Development System
Vagrant + Docker provider [+Puppet]
Vagrant For DevOps
Optimizing Docker Images
Puppet and Vagrant in development
Provisioning your Environment with Vagrant and Ansible

What's hot (20)

PDF
Modern Continuous Delivery with Docker and Liferay
PDF
Docker Continuous Delivery Workshop
PPTX
Learn docker in 90 minutes
PDF
Locally it worked! virtualizing docker
PDF
Baking Docker Using Chef
PDF
SF DevOps: Introducing Vagrant
PDF
An Introduction to Vagrant and Docker
PDF
Docker for Developers
KEY
PPTX
Package Management on Windows with Chocolatey
PDF
Docker for developers
PPTX
Docker workshop
PDF
Introduction To Docker
PDF
Making Developers Productive with Vagrant, VirtualBox, and Docker
PDF
Improved development workflows using vagrant
PDF
Microservices: How loose is loosely coupled?
PDF
Codecoon - A technical Case Study
PDF
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
PDF
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
PDF
Docman - The swiss army knife for Drupal multisite docroot management and dep...
Modern Continuous Delivery with Docker and Liferay
Docker Continuous Delivery Workshop
Learn docker in 90 minutes
Locally it worked! virtualizing docker
Baking Docker Using Chef
SF DevOps: Introducing Vagrant
An Introduction to Vagrant and Docker
Docker for Developers
Package Management on Windows with Chocolatey
Docker for developers
Docker workshop
Introduction To Docker
Making Developers Productive with Vagrant, VirtualBox, and Docker
Improved development workflows using vagrant
Microservices: How loose is loosely coupled?
Codecoon - A technical Case Study
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Docman - The swiss army knife for Drupal multisite docroot management and dep...
Ad

Viewers also liked (10)

PDF
MariaDB 10 Tutorial - 13.11.11 - Percona Live London
PDF
Le nouveau AMP : apache mariadb php
PDF
MariaDB 10: The Complete Tutorial
PDF
HTML/CSS/JS基础
PPT
Open Source Package PHP & MySQL
PPT
Php MySql For Beginners
PDF
Up to Speed on HTML 5 and CSS 3
PPTX
PPT
PPT
Introduction to html
MariaDB 10 Tutorial - 13.11.11 - Percona Live London
Le nouveau AMP : apache mariadb php
MariaDB 10: The Complete Tutorial
HTML/CSS/JS基础
Open Source Package PHP & MySQL
Php MySql For Beginners
Up to Speed on HTML 5 and CSS 3
Introduction to html
Ad

Similar to Developing web apps (20)

PPTX
Drupal 8 - Improving your development workflow
PDF
Dockerize WordPress on Mac/Windows
PDF
Building and Deploying PHP Applications, PHPTour 2016
PDF
Virtualize and automate your development environment for fun and profit
PDF
Dockerize Laravel Application
PPTX
WordPress Development Environments
PDF
How Reconnix Is Using Docker
PDF
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
PDF
Docker module 1
PDF
Docker as a Multitool: DevOps with Docker at Azure Bootcamp Linz 2017
PDF
Drupal VM for Drupal 8 Dev - Drupal Camp STL 2017
PPTX
Тарас Кирилюк — Docker basics. How-to for Drupal developers
PDF
Docker 101
PDF
The future of the php development environment
PDF
Docker for developers on mac and windows
PDF
Vagrant for local and team WordPress Development
PDF
Local development with vvv jon trujillo
PPTX
Docker In Brief
PDF
Docker 101 @KACST Saudi HPC 2016
PDF
Dockerize your Symfony application - Symfony Live NYC 2014
Drupal 8 - Improving your development workflow
Dockerize WordPress on Mac/Windows
Building and Deploying PHP Applications, PHPTour 2016
Virtualize and automate your development environment for fun and profit
Dockerize Laravel Application
WordPress Development Environments
How Reconnix Is Using Docker
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
Docker module 1
Docker as a Multitool: DevOps with Docker at Azure Bootcamp Linz 2017
Drupal VM for Drupal 8 Dev - Drupal Camp STL 2017
Тарас Кирилюк — Docker basics. How-to for Drupal developers
Docker 101
The future of the php development environment
Docker for developers on mac and windows
Vagrant for local and team WordPress Development
Local development with vvv jon trujillo
Docker In Brief
Docker 101 @KACST Saudi HPC 2016
Dockerize your Symfony application - Symfony Live NYC 2014

Recently uploaded (20)

PPTX
Introuction about WHO-FIC in ICD-10.pptx
PDF
Triggering QUIC, presented by Geoff Huston at IETF 123
PPTX
522797556-Unit-2-Temperature-measurement-1-1.pptx
PDF
Cloud-Scale Log Monitoring _ Datadog.pdf
PPTX
artificial intelligence overview of it and more
PDF
Slides PDF The World Game (s) Eco Economic Epochs.pdf
PPTX
Funds Management Learning Material for Beg
PDF
An introduction to the IFRS (ISSB) Stndards.pdf
PDF
Tenda Login Guide: Access Your Router in 5 Easy Steps
PPT
Design_with_Watersergyerge45hrbgre4top (1).ppt
PPTX
Job_Card_System_Styled_lorem_ipsum_.pptx
PPTX
innovation process that make everything different.pptx
PDF
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
PPTX
QR Codes Qr codecodecodecodecocodedecodecode
PPTX
Introduction about ICD -10 and ICD11 on 5.8.25.pptx
PPTX
Module 1 - Cyber Law and Ethics 101.pptx
PDF
RPKI Status Update, presented by Makito Lay at IDNOG 10
PDF
Testing WebRTC applications at scale.pdf
PDF
Sims 4 Historia para lo sims 4 para jugar
PDF
Paper PDF World Game (s) Great Redesign.pdf
Introuction about WHO-FIC in ICD-10.pptx
Triggering QUIC, presented by Geoff Huston at IETF 123
522797556-Unit-2-Temperature-measurement-1-1.pptx
Cloud-Scale Log Monitoring _ Datadog.pdf
artificial intelligence overview of it and more
Slides PDF The World Game (s) Eco Economic Epochs.pdf
Funds Management Learning Material for Beg
An introduction to the IFRS (ISSB) Stndards.pdf
Tenda Login Guide: Access Your Router in 5 Easy Steps
Design_with_Watersergyerge45hrbgre4top (1).ppt
Job_Card_System_Styled_lorem_ipsum_.pptx
innovation process that make everything different.pptx
Automated vs Manual WooCommerce to Shopify Migration_ Pros & Cons.pdf
QR Codes Qr codecodecodecodecocodedecodecode
Introduction about ICD -10 and ICD11 on 5.8.25.pptx
Module 1 - Cyber Law and Ethics 101.pptx
RPKI Status Update, presented by Makito Lay at IDNOG 10
Testing WebRTC applications at scale.pdf
Sims 4 Historia para lo sims 4 para jugar
Paper PDF World Game (s) Great Redesign.pdf

Developing web apps

  • 3. LOCAL DEVELOPMENT BUILT-IN PHP SERVER ▸ Out of the box support in PHP >= 5.4.0 ▸ Designed specifically for local development ▸ Useful for testing and demos in controlled environments ▸ Never run this in production ▸ The easiest way to start modern PHP development
  • 5. LOCAL DEVELOPMENT BUILT-IN PHP SERVER ▸ Out of the box support in PHP >= 5.4.0 ▸ Designed specifically for local development ▸ Useful for testing and demos in controlled environments ▸ Never run this in production ▸ The easiest way to start modern PHP development ▸ More info - Google “php built in server”
  • 6. LOCAL DEVELOPMENT LARAVEL VALET ▸ Mac only ▸ Very easy to get up and running (with Composer)
  • 7. LOCAL DEVELOPMENT ▸ Composer is a tool for dependency management in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you. ▸ Not a package manager. It manages dependencies on a per- project basis, installing them in a vendor directory within your project.
  • 8. LOCAL DEVELOPMENT LARAVEL VALET $ composer global require laravel/valet $ valet install
  • 9. LOCAL DEVELOPMENT LARAVEL VALET ▸ Mac only ▸ Very easy to get up and running (with Composer) ▸ Caddy server ▸ dnsmasq
  • 10. LOCAL DEVELOPMENT LARAVEL VALET - FOLDER TO DOMAIN MAPPING
  • 11. LOCAL DEVELOPMENT LARAVEL VALET - FOLDER TO DOMAIN MAPPING /Users/michael/phpsa/Sites $ ls bedrock dyrynda-com-au phpsa confomo laravel
  • 12. LOCAL DEVELOPMENT LARAVEL VALET - FOLDER TO DOMAIN MAPPING phpsa => http: //phpsa.test
  • 13. LOCAL DEVELOPMENT LARAVEL VALET ▸ Mac only ▸ Very easy to get up and running (with Composer) ▸ Caddy server ▸ dnsmasq (valet domain, valet park) ▸ MariaDB
  • 14. LOCAL DEVELOPMENT LARAVEL VALET $ brew install mariadb
  • 15. LOCAL DEVELOPMENT LARAVEL VALET ▸ Very easy to get up and running (with Composer) ▸ Caddy server ▸ dnsmasq (valet domain, valet park) ▸ MariaDB (brew install mariadb) ▸ Very small memory footprint (~7MB) ▸ Share your work with clients remotely
  • 16. LOCAL DEVELOPMENT LARAVEL VALET $ valet share -region au
  • 17. LOCAL DEVELOPMENT LARAVEL VALET $ valet share -region au
  • 18. LOCAL DEVELOPMENT LARAVEL VALET - EASY SHARING WITH NGROK
  • 19. LOCAL DEVELOPMENT LARAVEL VALET - OUT OF THE BOX SUPPORT ▸ Laravel / Lumen ▸ Symfony ▸ Zend ▸ CakePHP3 ▸ WordPress / Bedrock ▸ Craft ▸ Statamic ▸ Jigsaw ▸ Static HTML ▸ Your custom driver
  • 20. LOCAL DEVELOPMENT LARAVEL VALET ▸ Mac only ▸ Very easy to get up and running (with Composer) ▸ Caddy server ▸ dnsmasq (never mess with your hosts file again!) ▸ MariaDB (brew install mariadb) ▸ Very small memory footprint (~7MB) ▸ Share your work with clients remotely ▸ More info at https://laravel.com/docs/valet
  • 21. LOCAL DEVELOPMENT LAMP / WAMP / MAMP ▸ Linux / Windows / Mac ▸ Apache ▸ MySQL ▸ PHP ▸ Installs a local server environment, it’s free, and easy to install if you’re not familiar with the command line ▸ If you don’t need it anymore, just delete it ▸ https://www.mamp.info / http://www.wampserver.com/en
  • 23. LOCAL DEVELOPMENT LAMP / WAMP / MAMP ▸ Linux is a bit trickier as you need to install each component via your distribution’s package manager ▸ Use aptitude (Debian, Ubuntu), yum (RHEL / CentOS)
  • 24. LOCAL DEVELOPMENT LAMP / WAMP / MAMP $ sudo apt-get install nginx $ sudo apt-add-repository ppa:ondrej/php $ sudo apt-get update $ sudo apt-get install php7.0-cli php7.0-dev php-curl php-mysql php-mbstring php-7.0-fpm… $ … $ sudo apt-get install mariadb-server
  • 26. LOCAL DEVELOPMENT VIRTUAL MACHINE ▸ VirtualBox (Free) ▸ VMWare Fusion (~$100) ▸ Parallels Desktop (~$100) ▸ VMWare Workstation (~$300)
  • 27. LOCAL DEVELOPMENT VIRTUAL MACHINE ▸ Irrespective of your virtualisation software, you get a self- contained, full operating system ▸ Allows you to contain your LAMP install ▸ Easy to replicate your production environment ▸ Don’t install any development software on your host machine ▸ Make a mistake? Blow away the image and start over! ▸ Resource (memory, CPU, hard disk) intensive
  • 28. LOCAL DEVELOPMENT VIRTUAL MACHINE - VAGRANT ▸ Create and configure lightweight, reproducible, and portable development environments ▸ Saves you having to run install steps manually every time ▸ Don’t worry about missing a piece of software ▸ Makes disposable or single-project machines simple ▸ Commit your Vagrantfile to version control so other developers will have exactly the same development environment when they checkout your code
  • 29. LOCAL DEVELOPMENT VIRTUAL MACHINE - VAGRANT ▸ You can even build your base images and reuse them over and over again ▸ Reduces the time it takes to get up and running on new projects ▸ Using images means you have the base image as well as one or more instances on your machine taking up disk space ▸ More info at https://www.vagrantup.com
  • 30. LOCAL DEVELOPMENT VIRTUAL MACHINE - HOMESTEAD ▸ Another Laravel product, Homestead allows you to get up and running with a modern, pre-packaged development environment ▸ Ubuntu 16.04 ▸ Git ▸ PHP 7 ▸ Nginx ▸ MySQL / MariaDB ▸ PostgreSQL ▸ Composer ▸ Node ▸ Redis / Memcached ▸ Beanstalkd
  • 31. LOCAL DEVELOPMENT VIRTUAL MACHINE - HOMESTEAD $ composer global require laravel/homestead $ homestead edit $ homestead up
  • 32. LOCAL DEVELOPMENT LAMP / WAMP / MAMP $ sudo apt-get install nginx $ sudo apt-add-repository ppa:ondrej/php $ sudo apt-get update $ sudo apt-get install php7.0-cli php7.0-dev php-curl php-mysql php-mbstring php-7.0-fpm… $ … $ sudo apt-get install mariadb-server
  • 33. LOCAL DEVELOPMENT VIRTUAL MACHINE - HOMESTEAD $ composer global require laravel/homestead $ homestead edit $ homestead up $ homestead ssh
  • 34. DOCKER I AM NOT AN EXPERT IN BUT I’LL TRY ANYWAY
  • 35. LOCAL DEVELOPMENT DOCKER - WHY? ▸ Faster delivery of your applications ▸ Deploying and scaling are easier ▸ Achieve higher density and run more workloads
  • 36. LOCAL DEVELOPMENT DOCKER - THREE KEY COMPONENTS ▸ Images - the build component ▸ Registries - the distribution component ▸ Containers - the run component
  • 37. LOCAL DEVELOPMENT DOCKER - HOW IS IT DIFFERENT TO VIRTUALISATION? ▸ Virtual machines include the application, the necessary binaries and libraries, and an entire guest OS Infrastructure Host Operating System Hypervisor Guest OS Bins / Libs App 1 Guest OS Bins / Libs App 2 Guest OS Bins / Libs App 3
  • 38. LOCAL DEVELOPMENT DOCKER - HOW IS IT DIFFERENT TO VIRTUALISATION? ▸ Virtual machines include the application, the necessary binaries and libraries, and an entire guest OS - tens of GBs ▸ With containers, you have a single operating system, and each container shares the operating system kernel with other containers
  • 39. LOCAL DEVELOPMENT DOCKER - HOW IS IT DIFFERENT TO VIRTUALISATION? ▸ Virtual machines include the application, the necessary binaries and libraries, and an entire guest OS - tens of GBs ▸ With containers, you have a single operating system, and each container shares the operating system kernel with other containers - tens of MBs ▸ Because of this, a single server can host many more containers than Virtual Machines. VMs can take several minutes to boot, containerised apps start almost instantly
  • 40. ▸ Containers include the application and all of its dependencies, but share the kernel with other containers, running as isolated processes in user space. Docker containers are not tied to any specific infrastructure. ▸ Shared parts of the operating system are read only, while each container has its own mount for writing. LOCAL DEVELOPMENT DOCKER - HOW IS IT DIFFERENT TO VIRTUALISATION? Infrastructure Host Operating System Docker Engine Bins / Libs App 1 Bins / Libs App 2 Bins / Libs App 3
  • 41. LOCAL DEVELOPMENT DOCKER - HOW DOES IT WORK? ▸ Docker is written in Go and makes use of several kernel features to deliver its functionality ▸ Namespaces ▸ Control groups ▸ Union file systems ▸ Container format
  • 42. LOCAL DEVELOPMENT DOCKER - SHARING AND COLLABORATION ▸ Storing, distributing, and managing Docker images is easy with Docker Hub. Any updates and changes are shared with others. History is automatically tracked. ▸ Collaborate with others simply by shipping your container. If your frontend team needs to work with the API you’re building, all they have to do is spin up up the Docker container.
  • 43. LOCAL DEVELOPMENT DOCKER - SCALABILITY ▸ Because containers are lightweight, they take seconds to spin up and down ▸ This makes it easy to scale out your application during peak times, and scale down during quiet periods ▸ A lot of this can be automated ▸ More info at https://www.docker.com ▸ Check out my friend Chris’ Shipping Docker course at https://shippingdocker.com
  • 45. Michael Dyrynda @michaeldyrynda dyrynda.com.au North Meets South @northsouthaudio northmeetssouth.audio THANK YOU!