This document discusses using AWS, Eucalyptus, and Chef to build an optimal hybrid cloud. It addresses problems like cloud costs getting expensive for non-production workloads, developers needing self-service infrastructure, and long provisioning times. The solutions proposed are running non-production stacks in-house on commodity hardware using Eucalyptus and Chef for faster provisioning. Case studies are provided about how Mosaik Solutions uses this approach for development/staging and solving complex geospatial problems more quickly through distributed processing across hybrid cloud resources.
4. My Background
• Software Development
• Traditional Systems Administration and datacenter design
• AWS
• DevOps / Infrastructure Engineering
• My opinions are my own and do not necessarily represent
those of my employer, Mosaik Solutions
5. About Mosaik
• Founded in 1988, creating roaming guides
• Transitioned into making “coverage map” art assets for carrier
retail locations and television
• Launched our first wireless industry intelligence web SaaS
application, WiSARD, in 1999
• We’ve built highly skilled GIS, Research, Creative, and
Development teams
• Launched MapELEMENTS in 2011, putting powerful GIS tools
into the hands of decision makers through the web browser
• Clients include Fortune 100 companies, Federal agencies, and
regional and international mobile operators
11. “The cloud” gets expensive (fast)
Requirements
We need to run an application in the cloud. It costs $5,000
per month. We also need a replica of the application stack to
stage new releases for in-house and customer testing. We
also need a replica of the application stack for development.
Problem
We just tripled the cost of our application!
Solution
Run your non-production stacks in-house on commodity
hardware.
14. Developers are Rock Stars
Requirements
Developer autonomy can often lead to new products,
increases in efficiency, and overall developer happiness.
Problem
Despite having your best interests in mind, one of your
developers accidentally left five very expensive test servers
running for two weeks.
Solution
Give your developers a sandbox that minimizes your
organizations operational expenditures.
16. Time
Developer:
“Hi sysadmin! I hope all is well with you today! Um, yeah, I
need a server with 4 cores and 16GB of memory, networking,
DNS, accounts for my entire team with public keys uploaded,
and the list of software packages listed below installed and
patched. It also needs to ship logging information to our log
collector cluster. I need five of them. I need them for a
customer demo in 30 minutes, so if you could get those
together in the next 10, that’d be great. Mkaay?”
17. Time
Systems Administrator:
“Sure, no problem! I just need to go show the sales team
how to restart their Outlook client and I’ll get right on that.
Oh, and I need to write a script to sanitize some of the data
in our CRM for marketing’s latest e-mail campaign. Uh oh, I
smell burning electronics. Also, even if I did know what you
were talking about, this is gonna take me 12 hours.”
18. Time
Solution:
Provide your developers with a self-serve cloud
infrastructure. Sometimes developers need to deploy in-
house tooling to keep the software closer to a big dataset or
for security purposes. Empowering your developers to use
the same provisioning and infrastructure engineering tools
they utilize in the public cloud on-site will give your team a
serious efficiency edge.
20. Money Money Money Money
• Time to put those Excel skills to use
• Get an idea of your overall cloud spending
• Don’t forget to investigate EC2 reserved instances, etc. as part
of your overall cloud savings plan
• Can any of my workloads by brought on-site?
• What are my capital expenditures going to be if I implement a
private cloud?
• What is the cost in man-hours of implementing my private cloud?
• Why haven’t you made a pretty graph yet of projected potential
savings over the next 36 months?
• Will you save enough money year over year for an additional
hire?
• Yes? What are you waiting for!?
21. Back to Time
• If you’re heavily entrenched in a large-scale public cloud
deployment, hopefully your team has implemented (or is in the
progress of implementing) some infrastructure management and
server provisioning tooling using Chef or Puppet.
• Pick a private cloud provider that best “synergizes” with your
public cloud in order to minimize or eliminate re-tooling of your
DevOps codebase and processes.
• Not only will this provide you with additional man-hour savings
with your initial cloud deployment, but will allow you to migrate
stateless services between the public and private cloud with little
to no re-tooling. Some call this a “hybrid cloud”
23. Development and Staging
• We host a full development and staging stack of our
MapELEMENTS cloud-based GIS software solution on-site.
• We can play with new technologies and experiment on new Chef
cookbooks without having to spin up public cloud instances.
• Anything developed, improved or updated on-site can easily be
pushed into production in the public cloud thanks to Chef
managing our servers and watching our software repositories for
new commits to “production” branches.
• All internal tooling is now developed on and deployed to our
internal infrastructure with Chef and Eucalyptus.
31. Distributed Geoprocessor
• Break the problem up into small chunks
• Fire up “worker” instances with Chef in Eucalyptus
• Workers ask a “master instance” for the next task in a work
queue
• Workers complete their jobs and ask for a new task
• This process continues until the work queue is empty
• The job is done!
• This scales linearly. Should we need the job to complete faster to
meet a client deadline, we can simply fire up more worker
instances in Eucalyptus.
• Should we exceed our on-site resources, we can continue to fire
up more worker instances in EC2.
33. Chef
Have an audit trail. You need to know when things work as
expected. More importantly, you need to know when things go
horribly wrong!
Also, prevent people from making stupid mistakes where possible.
35. Chef
One of our developers created knife-santoku, a replacement for
knife which supports callbacks and notifiers. Use it to send
messages to IRC, HipChat, etc. concerning who did what and
when. Also, have your chef clients phone home to your chat clients
as well concerning their current health, state of mind, and personal
feelings
https://github.com/knuckolls/knife-santoku/
36. I’ll share a link to these slides on my Twitter:
@dboze