Wednesday, November 12, 2014

My weekend getaway with IBM Bluemix – A cloud platform providing PaaS with DevOps

As my usual ritual of going through technology tweets over the weekend, I got interested in exploring IBM Bluemix (which is based on Cloud Foundry) and decided to have first-hand experience of the same.
For those who do not have context of IBM Bluemix, a very short description is – Bluemix is implementation of IBM's Open Cloud Architecture, built on Cloud Foundry, which enables rapid development, deployment and management of cloud applications.

4 Key Takeaways  - I have summarized key takeaways based on my experience with Bluemix:

Takeaway # 1 – A complete lifecycle for cloud-based software development
  • Bluemix does not provide only PAAS but also integrates seamlessly with IBM DevOps Services (which is completely cloud-based for continuous delivery).
  • Bluemix can support web application, mobile application, middle-tier services (e.g. cache service) and backend services (e.g. IBM Watson for Cognitive Applications) or system-of-record (e.g. NoSQL database like Mongo or MySQL)


Takeaway # 2 – A seamless integration of Paas & DevOps
  • DevOps in true sense -  It facilitates you to code online, track & plan and build & deploy applications completely on cloud platform. Also, it helps to automate unit testing & configure any build tool (Maven, Ant, Grunt, Gradle, npm, shell script) in few steps.
  • Workflow driven (aka delivery pipeline) to automatically control build & deploy your application to single/multiple cloud-based environments.


Takeaway # 3 – An open-source based platform to avoid vendor lock-in
  • Bluemix is an implementation of IBM's Open Cloud Architecture based on Cloud Foundry, an open source platform as a service (PaaS). Cloud Foundry is not vendor specific & does not lock you into any proprietary or custom cloud implementation.
  • You can choose to run Cloud Foundry in Public, Private, VMWare & OpenStack based clouds.

Takeaway # 4 – A future-ready extensible enterprise-level platform for Mobile, Big Data & IoT
  • Quickly scale-up like any cloud platform for your tenth or millionth user leveraging cloud services 
  • Provides ready-made templates (aka boilerplates), which provides configured runtime environment & predefined services for mobile apps & web apps. Also, scripts (aka buildpacks) available to support targeted PaaS (e.g. Java, Node.js) 
  • Can be extended to leverage current & future trends like Mobile, Cognitive Apps, Big Data & IoT (Internet-of-things) based applications.

For people interested in getting their hands dirty, here are detailed set of instructions to experience a sample web application using data cache service:

Step 1 – Get registered on IBM Bluemix & IBM DevOps Services
  • I got registered with IBM Bluemix (trial account for 30 days) at https://ace.ng.bluemix.net
  • I got registered on IBM DevOps (use existing IBM id or you can link different userid) at https://hub.jazz.net/
  • You can explore Bluemix dashboard, which is very user friendly and I liked the UX (though at times, it tends to respond slowly).
 Step 2 – Add DataCache Service using Bluemix Dashboard
  • Click on “Add A Service”
  • Choose “Web And Application” category from left-hand pane
  • Click on “Create”. You can notice that it is free service with terms & conditions (100 MB usage is free).
  • Data Cache dashboard is up & running now


Step 3 – Create & Deploy Web Application in Bluemix

  • Deploy WAR using following commands:
o   Connect to IBM Cloud: cf api https://api.ng.bluemix.net
o   Login to IBM Cloud: cf login
o   Deploy your app: cf push mycachewebbeta -p target\mycachewebbeta-0.0.1-SNAPSHOT.war
o   Access your app: http://mycachewebbeta.mybluemix.net

  • Bluemix dashboard gets updated with new application:


Step 5 – Bind Web Application & Bind Service
  • Click on “mycachewebbeta” web application on dashboard 
  • Click on “Bind A Service” link 
  • Choose previously created data service

Step 6 – Test the web application for Cache Put/Get
References
Disclaimer:
All data and information provided on this site is for informational purposes only. This site makes no representations as to accuracy, completeness, correctness, suitability, or validity of any information on this site and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.This is a personal weblog. The opinions expressed here represent my own and not those of my employer or any other organization.