developer nirvana with ibm bluemix™
DESCRIPTION
Building, logging, pushing, and scaling apps with Bluemix services on Cloud Foundry.TRANSCRIPT
Achieving Developer Nirvana With Codename: BlueMix
By: Ryan Baxter@ryanjbaxter
http://ryanjbaxter.com
Not The Band
2
Definition
nirvana/nərˈvänə,nir-/
In the Buddhist tradition, nirvana is described as the extinguishing of the fires that cause suffering.
3
Does This Sound Like Dev Nirvana? Install runtime, container, and all libraries
Install needed services (databases, mobile, etc)
Bind the services to the application, ports/ips/firewalls
Setup dynamic routing and load-balancer
Setup four layers of built-in High-Availability
Setup streaming logging aggregation
Setup application performance monitoring
Scale the application up to X instances
Then repeat for dev, test, and production
4
What Is BlueMix? A platform for running virtually any application in
the cloud without having to worry about the hardware, software, and networking needed to do so.
This definition is usually what we refer to as a platform-as-a-service or PaaS
BlueMix is similar to other platforms you may have heard of Heroku, Google App Engine, OpenShift, Pivotal One
5
How Everything Fits Together A PaaS is software that is
usually running on top of an IaaS and abstracts the complexities of the IaaS away BlueMix runs on top of
Softlayer
Your app runs on top of BlueMix and has no knowledge of the IaaS layer
6
IaaS (Softlayer)
PaaS (BlueMix)
Your App
Why Not Just Use IaaS? It might be just as easy to get started at the IaaS
layer if you use a prebuild image Over time though the maintenance of this image
increases the cost OS updates, security updates, new versions of libraries,
DNS and networking changes, configuration and maintenance of other services like DBs, etc
At the PaaS layer all of this cost disappears! The platform takes care of it for you!
7
Benefits Of Using BlueMix Save time by just worrying about the code and not
the infrastructure Quickly get your app in the hands of your users –
deploying your app is a matter of running a single command
Easily add functionality to your application using IBM and partner provided services
Use the languages, runtimes, and frameworks that you are most familiar with
SoftLayer
8
BlueMix Open Beta BlueMix is currently in open
beta, you need to register to get going During the beta you get 8GB
of memory to use across as many apps as you want and can provision up to 20 services
Register at bluemix.net, you need an IBM ID
9
Lets Deploy An App!
App to enable anyone to ask questions for a session…but we can make it even easier.
10
Cloud Foundry And BlueMix BlueMix is built upon an open
source project called Cloud Foundry IBM contributes to the project and
is a founding member of the Cloud Foundry Foundation
All tools, documentation, and samples for Cloud Foundry are relevant and can be used with BlueMix
Buildpacks, Services, CLI, Scaling, etc are Cloud Foundry concepts
11
Runtimes And Buildpacks One of the benefits of BlueMix is that it supports
virtually any runtime you may want to use This is accomplished a psuedo-standard called
buildpacks BlueMix has 4 built in buildpacks
Java Liberty, Node.js, Sinatra, and Ruby On Rails
If you are pushing an application using one of these languages you do not need to specify a buildpack to use, BlueMix installs it for you
Other runtimes are supported via community buildpacks
12
You Choose The Runtime!
13
Buildpack Anatomy
14
Runtime
Container Libraries
Application
Buildpack
BlueMix Services Services allow you to add
functionality to your application with minimal cost and effort Select service and plan, then
bind to your application
Once a service is bound to your application information to use the service is available in an environment variable called VCAP_SERVICES
15
The Cloud Foundry Command Line (CLI) The command line will most likely be your tool of
choice when doing anything with BlueMix Anything you will want to do in BlueMix can be
accomplished using the CLI
Pushing An Application, stopping, starting, restarting, deleting
Create, bind, and unbind services View and tail application logs Documentation:
http://docs.cloudfoundry.org/devguide/installcf/whats-new-v6.html
16
Pushing An Application You can push an application
using the cf push command What you push depends on the
runtime you will use, for Java you may push a war or jar, for Node.js you will push the app directory
cf push will push everything in the current directory unless you specify the –p option
17
Manifest Files cf push commands can become very verbose
cf push appName –p myapp.war –b https://github.com/ryanjbaxter/mybuildpack -i 5 –m 512M --no-start
To avoid having to type this you can use a manifest file When using a manifest file you just execute cf push and
the CLI will look for manifest.mf in the current directory
Manifest Generator: http://cfmanigen.ng.bluemix.net
18
Sample Manifest File Command Linecf push appName –p myapp.war –b https://github.com/ryanjbaxter/mybuildpack -i 5 –m 512M --no-start
manifest.mf File---applications:- name: appName memory: 513M instances: 5buildpack: https://github.com/ryanjbaxter/mybuildpackservices: - todo-mongo-db
19
Logging Logging is the first step in figuring out what is
wrong You application’s logs will be written to stderr.log and stdout.log
Logs can be viewed in the BlueMix UI by selecting your applications runtime
Logs can be tailed from the command line – very useful! cf logs appName
cf logs appName --recent – shows you the most recent logs
20
Scaling BlueMix allows you to scale
your application horizontally and vertically within minutes
If the load on your application increases/decreases you may want to adjust the number of instances to handle the load
If you find the resources available to your app is tight you can increase the memory
21
Dev Ops Services
22
• DevOps Solution in the cloud for building mobile and cloud applications
• Optimized for use with BlueMix
• Integrated task tracking, agile planning, source control with auto deploy
• Use your favorite tools or work from the Web IDE
• Hosted Jazz SCM or Git or link to GitHub
• Public and private projects
• Continuous Integration and Deployment with Jenkins
• Mobile quality and application performance monitoring (coming)
Resources Documentation: https://www.ng.bluemix.net/docs/
index.jsp developerWorks: http://developer.ibm.com/bluemix
Sample Apps & Tutorials: https://www.ibmdw.net/bluemix/docs/articles/, https://www.ibmdw.net/bluemix/docs/sample-code/
Developer Forum: https://www.ibmdw.net/answers/?community=bluemix
Blog: https://www.ibmdw.net/bluemix/blog/
Twitter: #BlueMix, @IBMBlueMix
24
Resources From Today Slides: http://www.slideshare.net/RyanBaxter/dev-
nirvanabluemix Code:
https://github.com/CodenameBlueMix/session-questions
25
Thank you.Join the beta at: www.bluemix.net
Backup
Creating Apps In The BlueMix UI You can create an
application in the BlueMix UI by going to the catalog and choosing a boilerplate or runtime
Boilerplate = code + service
Runtime = code
28
Using The Dashboard You will be brought
to the dashboard which will now have a tile for your app
Click the tile to see additional details about your app
29
View The Guide To Download The Source
30
Updating The Source Downloading the source code may be good for
learning but you are most likely not going to use any of it In fact it is not even necessary to create an app in the UI
first
You will want to download and install the Cloud Foundry Command Line tool in order to upload / create your application Follow the documentation here:
http://www.ng.bluemix.net/docs/BuildingWeb.jsp#install-cf
31