SlideShare a Scribd company logo
Building your own
Desktop Cloud Environment

Gautham Pai, Founder
jnaapti
The problems we face as developers
Our development environments accumulate lots of
applications and libraries over a period of months.

We fear that we may screw up our development
environment and that means unproductive man-hours.

We are usually in the habit of installing everything in
one machine.

We forget that a multi-machine deployment is different
from a single machine deployment.

                      http://jnaapti.com/
Solution?




How about Desktop Virtualization?




            http://jnaapti.com/
Why Desktop Virtualization?
Bringing our development environment as close to the
production environment as possible.

Replicable deployment - verify everything before
deploying to staging or production.

Containerising functionality.

"Don't panic" environment for experimentation

Ease of provisioning for new employees.


                     http://jnaapti.com/
Virtualization or Cloud?
What I am talking about is closer to virtualization than
cloud computing.

For example, we are not dealing with transparent
scaling, spike load handling etc.




                     http://jnaapti.com/
Why QEMU-KVM and not Virtualbox?
KVM is part of the Linux Kernel

Virtualbox is from Oracle

KVM provides better performance




                    http://jnaapti.com/
What we want to try out
Create a development environment with functionalities
partitioned over separate VMs.

Ensure that setting up this environment is not more
than a few hours job.

Ensure that bringing up the environment does not take
more than a few minutes if not seconds.

Ensure that the environment can run in a laptop with
standard configuration.

                        http://jnaapti.com/
System Requirements
 A laptop/desktop with

    a processor that supports virtulization technology
    to use KVM

    a Debian Linux environment

    atleast 2GB of free RAM

    atleast 10G of free disk space

This will help us run as many as 5 VM images in parallel

                      http://jnaapti.com/
Demo




http://jnaapti.com/
The Approach
In this demo, I will take you through the steps to
create a multi-VM development environment

In addition to our dev environment (dev-server), we
will have a separate code-server, a web-server and a
db-server setup.

We then run it end-to-end – write some code, check it
in, pull it into the web server, deploy the code and
then test the new version of the app.

                     http://jnaapti.com/
First, a look at a few terminologies
QEMU is a generic and open source machine emulator
and virtualizer.

KVM (for Kernel-based Virtual Machine) is a full
virtualization solution for Linux on x86 hardware.

The Virtual Machine Manager application (virt-
manager for short package name) is a desktop user
interface for managing virtual machines.



                     http://jnaapti.com/
Demo




http://jnaapti.com/
The Approach
We first create a base VM and install the OS in it, using
the standard Ubuntu 10.04.2 Server ISO image

We then install a SSH server and setup passwordless
SSH access

We then clone this system to as many systems as we
need and setup various servers
(code/caching/web/etc) on them



                     http://jnaapti.com/
Installing Pre-requisites
$ sudo apt-get install virt-manager qemu-kvm




                    http://jnaapti.com/
Starting Virt Manager
$ sudo virt-manager




                  http://jnaapti.com/
Networking Requirements
Every VM should have its own IP address.

Every VM should be accessible from every other VM
and that includes host.

Every VM must be able to connect to the Internet.

Solution? Bridged Networking.




                     http://jnaapti.com/
Setting up the Bridge Network




          http://jnaapti.com/
Name your Virtual Network




        http://jnaapti.com/
Choose an IPv4 Address Space




          http://jnaapti.com/
Select DHCP Range




     http://jnaapti.com/
Setup NAT forwarding




      http://jnaapti.com/
Review and finish the wizard




          http://jnaapti.com/
Create the Base VM




     http://jnaapti.com/
Choose the Distribution to Install




            http://jnaapti.com/
Set RAM and CPUs




    http://jnaapti.com/
Set the Disk Space




     http://jnaapti.com/
Finalize the VM Creation




        http://jnaapti.com/
Install the OS in the Base VM




          http://jnaapti.com/
Select Hostname




    http://jnaapti.com/
Select Disk




 http://jnaapti.com/
Confirm Disk Format




     http://jnaapti.com/
Installation Progress




      http://jnaapti.com/
Installation Progress




      http://jnaapti.com/
Create User




 http://jnaapti.com/
Set Username




  http://jnaapti.com/
Configure APT




  http://jnaapti.com/
Set Automatic Upgrades




       http://jnaapti.com/
Install Additional Software




         http://jnaapti.com/
Install Pre-defined Collections




           http://jnaapti.com/
Installation Progress




      http://jnaapti.com/
Install GRUB




  http://jnaapti.com/
Install GRUB




  http://jnaapti.com/
Installation Complete




      http://jnaapti.com/
Installation Complete




      http://jnaapti.com/
Verifying the Base VM Installation
Login to the Base VM

Install the latest updates

Make sure you can connect to the host from guest and
vice-versa

Setup password-less SSH access

(Update interface identifier)



                     http://jnaapti.com/
Cloning the Base VM
Add the DNS server that we use for guest IP allocation
to resolv.conf, so that you can address VMs using their
hostnames

Use virt-clone to clone the base VM

Start the new VM

Change the hostname of the new VM

Reboot the new VM


                     http://jnaapti.com/
Starting and Stopping the VMs
$ #Start the domains
$ virsh start webserver && virsh start dbserver &&
virsh start codeserver
$ #Destroy the domains
$ virsh destroy webserver && virsh destroy
dbserver && virsh destroy codeserver




                       http://jnaapti.com/
Where to go from here?
Setting up package mirrors

Snapshot creation on the fly

You can mimic things like S3, EBS etc




                     http://jnaapti.com/
Resources
More detailed notes here

Code is over at Github

KVM

Virtual Machine Manager

KVM Networking

QEMU Networking

QEMU Images

                    http://jnaapti.com/
Courtesy
 Server image from OpenClipArt

 CD image from pr0gr4mm3r.com



Thanks to Pradeep Kumar, Ananth M, Kiran S, Ananda M,
Madhukar Pai and Shrinivas S Kulkarni for reviewing the
        slides and providing valuable feedback




                      http://jnaapti.com/
The Jnaapti development environment is based
                on this setup




                 http://jnaapti.com/
This talk was first delivered in the “PHP Cloud” event
                 organized by HasGeek




                      http://jnaapti.com/
Thank you!
Email: gautham@jnaapti.com




        http://jnaapti.com/
Happy Hacking




  http://jnaapti.com/

More Related Content

What's hot

Puppet and Vagrant in development
Puppet and Vagrant in developmentPuppet and Vagrant in development
Puppet and Vagrant in development
Adam Culp
 
Docker workshop
Docker workshopDocker workshop
Docker workshop
Evans Ye
 
Automated Amazon EC2 Cloud deployments with openQRM
Automated Amazon EC2 Cloud deployments with openQRMAutomated Amazon EC2 Cloud deployments with openQRM
Automated Amazon EC2 Cloud deployments with openQRM
openQRM Enterprise GmbH
 
openQRM how-to: Setup UEC and openQRM cloud
openQRM how-to: Setup UEC and openQRM cloudopenQRM how-to: Setup UEC and openQRM cloud
openQRM how-to: Setup UEC and openQRM cloud
openQRM Enterprise GmbH
 
Vagrant for real
Vagrant for realVagrant for real
Vagrant for real
Michele Orselli
 
Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)
Michele Orselli
 
Automated everything - Setting up an openQRM Cloud
Automated everything - Setting up an openQRM CloudAutomated everything - Setting up an openQRM Cloud
Automated everything - Setting up an openQRM Cloud
openQRM Enterprise GmbH
 
How To Set a Vagrant Development System
How To Set a Vagrant Development SystemHow To Set a Vagrant Development System
How To Set a Vagrant Development System
Paul Bearne
 
Vagrant crash course
Vagrant crash courseVagrant crash course
Vagrant crash course
Marcus Deglos
 
Create your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and PackerCreate your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and Packer
frastel
 
A Docker-based Development Environment Even I Can Understand
A Docker-based Development Environment Even I Can UnderstandA Docker-based Development Environment Even I Can Understand
A Docker-based Development Environment Even I Can Understand
Jeremy Gimbel
 
Building (localized) Vagrant boxes with Packer
Building (localized) Vagrant boxes with PackerBuilding (localized) Vagrant boxes with Packer
Building (localized) Vagrant boxes with Packer
Cristovao G. Verstraeten
 
Forget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu Server
Forget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu ServerForget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu Server
Forget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu Server
aaroncouch
 
Virtual Infrastructure
Virtual InfrastructureVirtual Infrastructure
Virtual Infrastructure
Bryan McLellan
 
6 Years of Docker: The Good, the Bad and Python Packaging at PyCon.DE&PyData ...
6 Years of Docker: The Good, the Bad and Python Packaging at PyCon.DE&PyData ...6 Years of Docker: The Good, the Bad and Python Packaging at PyCon.DE&PyData ...
6 Years of Docker: The Good, the Bad and Python Packaging at PyCon.DE&PyData ...
Sebastian Neubauer
 
Dave Gilbert - KVM and QEMU
Dave Gilbert - KVM and QEMUDave Gilbert - KVM and QEMU
Dave Gilbert - KVM and QEMU
Danny Abukalam
 
KVM tools and enterprise usage
KVM tools and enterprise usageKVM tools and enterprise usage
KVM tools and enterprise usage
vincentvdk
 
Build a private cloud – prototype and test with open nebula
Build a private cloud – prototype and test with open nebulaBuild a private cloud – prototype and test with open nebula
Build a private cloud – prototype and test with open nebula
A B M Moniruzzaman
 
Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))
Michele Orselli
 
Virtual Machine LAMP on Windows
Virtual Machine LAMP on WindowsVirtual Machine LAMP on Windows
Virtual Machine LAMP on Windows
mikehie
 

What's hot (20)

Puppet and Vagrant in development
Puppet and Vagrant in developmentPuppet and Vagrant in development
Puppet and Vagrant in development
 
Docker workshop
Docker workshopDocker workshop
Docker workshop
 
Automated Amazon EC2 Cloud deployments with openQRM
Automated Amazon EC2 Cloud deployments with openQRMAutomated Amazon EC2 Cloud deployments with openQRM
Automated Amazon EC2 Cloud deployments with openQRM
 
openQRM how-to: Setup UEC and openQRM cloud
openQRM how-to: Setup UEC and openQRM cloudopenQRM how-to: Setup UEC and openQRM cloud
openQRM how-to: Setup UEC and openQRM cloud
 
Vagrant for real
Vagrant for realVagrant for real
Vagrant for real
 
Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)
 
Automated everything - Setting up an openQRM Cloud
Automated everything - Setting up an openQRM CloudAutomated everything - Setting up an openQRM Cloud
Automated everything - Setting up an openQRM Cloud
 
How To Set a Vagrant Development System
How To Set a Vagrant Development SystemHow To Set a Vagrant Development System
How To Set a Vagrant Development System
 
Vagrant crash course
Vagrant crash courseVagrant crash course
Vagrant crash course
 
Create your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and PackerCreate your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and Packer
 
A Docker-based Development Environment Even I Can Understand
A Docker-based Development Environment Even I Can UnderstandA Docker-based Development Environment Even I Can Understand
A Docker-based Development Environment Even I Can Understand
 
Building (localized) Vagrant boxes with Packer
Building (localized) Vagrant boxes with PackerBuilding (localized) Vagrant boxes with Packer
Building (localized) Vagrant boxes with Packer
 
Forget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu Server
Forget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu ServerForget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu Server
Forget MAMP and WAMP, Use Virtual Box to Have a Real Ubuntu Server
 
Virtual Infrastructure
Virtual InfrastructureVirtual Infrastructure
Virtual Infrastructure
 
6 Years of Docker: The Good, the Bad and Python Packaging at PyCon.DE&PyData ...
6 Years of Docker: The Good, the Bad and Python Packaging at PyCon.DE&PyData ...6 Years of Docker: The Good, the Bad and Python Packaging at PyCon.DE&PyData ...
6 Years of Docker: The Good, the Bad and Python Packaging at PyCon.DE&PyData ...
 
Dave Gilbert - KVM and QEMU
Dave Gilbert - KVM and QEMUDave Gilbert - KVM and QEMU
Dave Gilbert - KVM and QEMU
 
KVM tools and enterprise usage
KVM tools and enterprise usageKVM tools and enterprise usage
KVM tools and enterprise usage
 
Build a private cloud – prototype and test with open nebula
Build a private cloud – prototype and test with open nebulaBuild a private cloud – prototype and test with open nebula
Build a private cloud – prototype and test with open nebula
 
Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))
 
Virtual Machine LAMP on Windows
Virtual Machine LAMP on WindowsVirtual Machine LAMP on Windows
Virtual Machine LAMP on Windows
 

Similar to Building your own Desktop Cloud Environment

Tech X Virtualization Tips
Tech X Virtualization TipsTech X Virtualization Tips
Tech X Virtualization Tips
Youssef EL HADJ
 
Virtualization technology "comparison vmware 9 vs virtualbox 4.2"
Virtualization  technology "comparison vmware 9 vs virtualbox 4.2"Virtualization  technology "comparison vmware 9 vs virtualbox 4.2"
Virtualization technology "comparison vmware 9 vs virtualbox 4.2"
Lagendary Sheeva
 
Ws80 using VMware
Ws80 using VMwareWs80 using VMware
Ws80 using VMware
Umesh Gupta
 
Vagrant Up in 5 Easy Steps
Vagrant Up in 5 Easy StepsVagrant Up in 5 Easy Steps
Vagrant Up in 5 Easy Steps
Trevor Roberts Jr.
 
Vagrant
VagrantVagrant
Virtualization using VMWare Workstation
Virtualization using VMWare WorkstationVirtualization using VMWare Workstation
Virtualization using VMWare Workstation
Hitesh Gupta
 
Ws90 using
Ws90 usingWs90 using
Ws90 using
kevalmahendra
 
10215 A 03
10215 A 0310215 A 03
10215 A 03
Juanchi_43
 
Sdwest2008 V101 F Dpowerpoint Final
Sdwest2008 V101 F Dpowerpoint FinalSdwest2008 V101 F Dpowerpoint Final
Sdwest2008 V101 F Dpowerpoint Final
Stephen Rose
 
Practical Introduction To Linux
Practical Introduction To LinuxPractical Introduction To Linux
Practical Introduction To Linux
Zeeshan Rizvi
 
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony AlvarezDevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
Anthony Alvarez
 
Comando kvm terminal
Comando kvm terminalComando kvm terminal
Comando kvm terminal
Carlos Eduardo
 
Vagrant - Version control your dev environment
Vagrant - Version control your dev environmentVagrant - Version control your dev environment
Vagrant - Version control your dev environment
bocribbz
 
Managing VMware with PowerShell - VMworld 2008
Managing VMware with PowerShell - VMworld 2008Managing VMware with PowerShell - VMworld 2008
Managing VMware with PowerShell - VMworld 2008
Carter Shanklin
 
Rohit yadav cloud stack internals
Rohit yadav   cloud stack internalsRohit yadav   cloud stack internals
Rohit yadav cloud stack internals
ShapeBlue
 
Node js introduction
Node js introductionNode js introduction
Node js introduction
Joseph de Castelnau
 
Virtualization for Developers
Virtualization for DevelopersVirtualization for Developers
Virtualization for Developers
John Coggeshall
 
VM201 - IdoSphere
VM201 - IdoSphereVM201 - IdoSphere
VM201 - IdoSphere
Carl Tyler
 
Virtualization for Developers
Virtualization for DevelopersVirtualization for Developers
Virtualization for Developers
John Coggeshall
 
Storage and hyper v - the choices you can make and the things you need to kno...
Storage and hyper v - the choices you can make and the things you need to kno...Storage and hyper v - the choices you can make and the things you need to kno...
Storage and hyper v - the choices you can make and the things you need to kno...
Louis Göhl
 

Similar to Building your own Desktop Cloud Environment (20)

Tech X Virtualization Tips
Tech X Virtualization TipsTech X Virtualization Tips
Tech X Virtualization Tips
 
Virtualization technology "comparison vmware 9 vs virtualbox 4.2"
Virtualization  technology "comparison vmware 9 vs virtualbox 4.2"Virtualization  technology "comparison vmware 9 vs virtualbox 4.2"
Virtualization technology "comparison vmware 9 vs virtualbox 4.2"
 
Ws80 using VMware
Ws80 using VMwareWs80 using VMware
Ws80 using VMware
 
Vagrant Up in 5 Easy Steps
Vagrant Up in 5 Easy StepsVagrant Up in 5 Easy Steps
Vagrant Up in 5 Easy Steps
 
Vagrant
VagrantVagrant
Vagrant
 
Virtualization using VMWare Workstation
Virtualization using VMWare WorkstationVirtualization using VMWare Workstation
Virtualization using VMWare Workstation
 
Ws90 using
Ws90 usingWs90 using
Ws90 using
 
10215 A 03
10215 A 0310215 A 03
10215 A 03
 
Sdwest2008 V101 F Dpowerpoint Final
Sdwest2008 V101 F Dpowerpoint FinalSdwest2008 V101 F Dpowerpoint Final
Sdwest2008 V101 F Dpowerpoint Final
 
Practical Introduction To Linux
Practical Introduction To LinuxPractical Introduction To Linux
Practical Introduction To Linux
 
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony AlvarezDevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
DevOps Camp 2017 NYC Local Development using Vagrant by Anthony Alvarez
 
Comando kvm terminal
Comando kvm terminalComando kvm terminal
Comando kvm terminal
 
Vagrant - Version control your dev environment
Vagrant - Version control your dev environmentVagrant - Version control your dev environment
Vagrant - Version control your dev environment
 
Managing VMware with PowerShell - VMworld 2008
Managing VMware with PowerShell - VMworld 2008Managing VMware with PowerShell - VMworld 2008
Managing VMware with PowerShell - VMworld 2008
 
Rohit yadav cloud stack internals
Rohit yadav   cloud stack internalsRohit yadav   cloud stack internals
Rohit yadav cloud stack internals
 
Node js introduction
Node js introductionNode js introduction
Node js introduction
 
Virtualization for Developers
Virtualization for DevelopersVirtualization for Developers
Virtualization for Developers
 
VM201 - IdoSphere
VM201 - IdoSphereVM201 - IdoSphere
VM201 - IdoSphere
 
Virtualization for Developers
Virtualization for DevelopersVirtualization for Developers
Virtualization for Developers
 
Storage and hyper v - the choices you can make and the things you need to kno...
Storage and hyper v - the choices you can make and the things you need to kno...Storage and hyper v - the choices you can make and the things you need to kno...
Storage and hyper v - the choices you can make and the things you need to kno...
 

More from Jnaapti

Jnaapti - Who we are and What we do
Jnaapti - Who we are and What we doJnaapti - Who we are and What we do
Jnaapti - Who we are and What we do
Jnaapti
 
The Virtual Coach Platform - powered by jnaapti
The Virtual Coach Platform - powered by jnaaptiThe Virtual Coach Platform - powered by jnaapti
The Virtual Coach Platform - powered by jnaapti
Jnaapti
 
Jnaapti Training Process
Jnaapti Training ProcessJnaapti Training Process
Jnaapti Training Process
Jnaapti
 
The Jnaapti Virtual Coach Platform
The Jnaapti Virtual Coach PlatformThe Jnaapti Virtual Coach Platform
The Jnaapti Virtual Coach Platform
Jnaapti
 
I AM STARTING UP - HOW DO I START CODING?
I AM STARTING UP - HOW DO I START CODING?I AM STARTING UP - HOW DO I START CODING?
I AM STARTING UP - HOW DO I START CODING?
Jnaapti
 
jnaapti's Pitch at Startup Saturday - Apr 12th 2014
jnaapti's Pitch at Startup Saturday - Apr 12th 2014jnaapti's Pitch at Startup Saturday - Apr 12th 2014
jnaapti's Pitch at Startup Saturday - Apr 12th 2014
Jnaapti
 
Dealing with web scale data
Dealing with web scale dataDealing with web scale data
Dealing with web scale data
Jnaapti
 

More from Jnaapti (7)

Jnaapti - Who we are and What we do
Jnaapti - Who we are and What we doJnaapti - Who we are and What we do
Jnaapti - Who we are and What we do
 
The Virtual Coach Platform - powered by jnaapti
The Virtual Coach Platform - powered by jnaaptiThe Virtual Coach Platform - powered by jnaapti
The Virtual Coach Platform - powered by jnaapti
 
Jnaapti Training Process
Jnaapti Training ProcessJnaapti Training Process
Jnaapti Training Process
 
The Jnaapti Virtual Coach Platform
The Jnaapti Virtual Coach PlatformThe Jnaapti Virtual Coach Platform
The Jnaapti Virtual Coach Platform
 
I AM STARTING UP - HOW DO I START CODING?
I AM STARTING UP - HOW DO I START CODING?I AM STARTING UP - HOW DO I START CODING?
I AM STARTING UP - HOW DO I START CODING?
 
jnaapti's Pitch at Startup Saturday - Apr 12th 2014
jnaapti's Pitch at Startup Saturday - Apr 12th 2014jnaapti's Pitch at Startup Saturday - Apr 12th 2014
jnaapti's Pitch at Startup Saturday - Apr 12th 2014
 
Dealing with web scale data
Dealing with web scale dataDealing with web scale data
Dealing with web scale data
 

Recently uploaded

The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
DanBrown980551
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
Fwdays
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
christinelarrosa
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
DianaGray10
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
ScyllaDB
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
christinelarrosa
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
BibashShahi
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
Fwdays
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
Enterprise Knowledge
 

Recently uploaded (20)

The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
What is an RPA CoE? Session 2 – CoE Roles
What is an RPA CoE?  Session 2 – CoE RolesWhat is an RPA CoE?  Session 2 – CoE Roles
What is an RPA CoE? Session 2 – CoE Roles
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
 
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba"NATO Hackathon Winner: AI-Powered Drug Search",  Taras Kloba
"NATO Hackathon Winner: AI-Powered Drug Search", Taras Kloba
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
 

Building your own Desktop Cloud Environment

  • 1. Building your own Desktop Cloud Environment Gautham Pai, Founder jnaapti
  • 2. The problems we face as developers Our development environments accumulate lots of applications and libraries over a period of months. We fear that we may screw up our development environment and that means unproductive man-hours. We are usually in the habit of installing everything in one machine. We forget that a multi-machine deployment is different from a single machine deployment. http://jnaapti.com/
  • 3. Solution? How about Desktop Virtualization? http://jnaapti.com/
  • 4. Why Desktop Virtualization? Bringing our development environment as close to the production environment as possible. Replicable deployment - verify everything before deploying to staging or production. Containerising functionality. "Don't panic" environment for experimentation Ease of provisioning for new employees. http://jnaapti.com/
  • 5. Virtualization or Cloud? What I am talking about is closer to virtualization than cloud computing. For example, we are not dealing with transparent scaling, spike load handling etc. http://jnaapti.com/
  • 6. Why QEMU-KVM and not Virtualbox? KVM is part of the Linux Kernel Virtualbox is from Oracle KVM provides better performance http://jnaapti.com/
  • 7. What we want to try out Create a development environment with functionalities partitioned over separate VMs. Ensure that setting up this environment is not more than a few hours job. Ensure that bringing up the environment does not take more than a few minutes if not seconds. Ensure that the environment can run in a laptop with standard configuration. http://jnaapti.com/
  • 8. System Requirements A laptop/desktop with a processor that supports virtulization technology to use KVM a Debian Linux environment atleast 2GB of free RAM atleast 10G of free disk space This will help us run as many as 5 VM images in parallel http://jnaapti.com/
  • 10. The Approach In this demo, I will take you through the steps to create a multi-VM development environment In addition to our dev environment (dev-server), we will have a separate code-server, a web-server and a db-server setup. We then run it end-to-end – write some code, check it in, pull it into the web server, deploy the code and then test the new version of the app. http://jnaapti.com/
  • 11. First, a look at a few terminologies QEMU is a generic and open source machine emulator and virtualizer. KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware. The Virtual Machine Manager application (virt- manager for short package name) is a desktop user interface for managing virtual machines. http://jnaapti.com/
  • 13. The Approach We first create a base VM and install the OS in it, using the standard Ubuntu 10.04.2 Server ISO image We then install a SSH server and setup passwordless SSH access We then clone this system to as many systems as we need and setup various servers (code/caching/web/etc) on them http://jnaapti.com/
  • 14. Installing Pre-requisites $ sudo apt-get install virt-manager qemu-kvm http://jnaapti.com/
  • 15. Starting Virt Manager $ sudo virt-manager http://jnaapti.com/
  • 16. Networking Requirements Every VM should have its own IP address. Every VM should be accessible from every other VM and that includes host. Every VM must be able to connect to the Internet. Solution? Bridged Networking. http://jnaapti.com/
  • 17. Setting up the Bridge Network http://jnaapti.com/
  • 18. Name your Virtual Network http://jnaapti.com/
  • 19. Choose an IPv4 Address Space http://jnaapti.com/
  • 20. Select DHCP Range http://jnaapti.com/
  • 21. Setup NAT forwarding http://jnaapti.com/
  • 22. Review and finish the wizard http://jnaapti.com/
  • 23. Create the Base VM http://jnaapti.com/
  • 24. Choose the Distribution to Install http://jnaapti.com/
  • 25. Set RAM and CPUs http://jnaapti.com/
  • 26. Set the Disk Space http://jnaapti.com/
  • 27. Finalize the VM Creation http://jnaapti.com/
  • 28. Install the OS in the Base VM http://jnaapti.com/
  • 29. Select Hostname http://jnaapti.com/
  • 31. Confirm Disk Format http://jnaapti.com/
  • 32. Installation Progress http://jnaapti.com/
  • 33. Installation Progress http://jnaapti.com/
  • 35. Set Username http://jnaapti.com/
  • 36. Configure APT http://jnaapti.com/
  • 37. Set Automatic Upgrades http://jnaapti.com/
  • 38. Install Additional Software http://jnaapti.com/
  • 39. Install Pre-defined Collections http://jnaapti.com/
  • 40. Installation Progress http://jnaapti.com/
  • 41. Install GRUB http://jnaapti.com/
  • 42. Install GRUB http://jnaapti.com/
  • 43. Installation Complete http://jnaapti.com/
  • 44. Installation Complete http://jnaapti.com/
  • 45. Verifying the Base VM Installation Login to the Base VM Install the latest updates Make sure you can connect to the host from guest and vice-versa Setup password-less SSH access (Update interface identifier) http://jnaapti.com/
  • 46. Cloning the Base VM Add the DNS server that we use for guest IP allocation to resolv.conf, so that you can address VMs using their hostnames Use virt-clone to clone the base VM Start the new VM Change the hostname of the new VM Reboot the new VM http://jnaapti.com/
  • 47. Starting and Stopping the VMs $ #Start the domains $ virsh start webserver && virsh start dbserver && virsh start codeserver $ #Destroy the domains $ virsh destroy webserver && virsh destroy dbserver && virsh destroy codeserver http://jnaapti.com/
  • 48. Where to go from here? Setting up package mirrors Snapshot creation on the fly You can mimic things like S3, EBS etc http://jnaapti.com/
  • 49. Resources More detailed notes here Code is over at Github KVM Virtual Machine Manager KVM Networking QEMU Networking QEMU Images http://jnaapti.com/
  • 50. Courtesy Server image from OpenClipArt CD image from pr0gr4mm3r.com Thanks to Pradeep Kumar, Ananth M, Kiran S, Ananda M, Madhukar Pai and Shrinivas S Kulkarni for reviewing the slides and providing valuable feedback http://jnaapti.com/
  • 51. The Jnaapti development environment is based on this setup http://jnaapti.com/
  • 52. This talk was first delivered in the “PHP Cloud” event organized by HasGeek http://jnaapti.com/
  • 54. Happy Hacking http://jnaapti.com/