IBM Bluemix— a key technology in the IBM Cloud environment that rolled out early in 2014 — is a single-solution environment with instant resources for developing and deploying apps quickly across multiple domains. You can use this open standards-based platform to build, run, and manage web, mobile, big data, and smart-device apps. Bluemix supports many popular programming languages and frameworks. Java™ technology, mobile back-end development support, application monitoring, open source technologies, and much more are available through an as-a-service model in the cloud.
At developerWorks, we're adding to this article to document how developers are using Bluemix to quickly and efficiently create cloud applications and deployments. For this refresh, we take you on a sample tour of some of the projects that developers built since the launch of Bluemix and then highlight some of the updates to the platform since February 2014.
WATCH:Explore IBM Bluemix
New: Explore the Bluemix projects
This list is just a taste of what a developer can do in Bluemix out of 38 projects (and growing daily) documented since the platform launched. (Use this search view to see a list of documented projects; or you can get a more annotated view.)
Jump-start your hackathon efforts with DevOps Services
Millard Ellingsworth shows you how to create a container for a perfect hackathon — a brief, intense period of collaborative development generally around a particular cause or topic — by combining components from the Hackathon Starter Project, Bluemix DevOps Services (as the collaborative on-the-web development environment and continuous delivery pipeline), and Bluemix for the cloud hosting. You see how to create new instances and how to automatically deploy them to the Bluemix PaaS after each change in coding. Explore further
Build and deploy a mobile-friendly calorie counter
Using PHP, MySQL, AngularJS, and the Nutritionix API, Vikram Vaswani demonstrates the steps to create and deploy an application on Bluemix that allows the user to:
- Search for food items by name and retrieve the results through an API to the online nutrition database Nutritionix
- Group selected food items together to create meal records
- Save these records to a MySQL database together with their calorie counts by using a PHP/AngularJS app
- Retrieve reports of total calories that are consumed for varying periods; and access the app from mobile devices.
One main concept of this instruction details how deployment to a scalable, flexible platform (Bluemix) can provide the round-the-clock access that an app like this needs to be successful. Explore further
How to quickly send a mobile push notification
Extend an iOS app so it integrates with Worklight
Salim Zeitouni and Ramakrishna Boggarapu show you how to combine Bluemix and Worklight to provide a personalized user experience in an iOS app by using authentication. They demonstrate how to extend a BlueList application that runs on iOS to use Worklight by defining an HTTP adapter that simulates authentication against a customer server that returns a user identity. The user identity personalizes the interaction with Bluemix Push, Mobile Data, and CloudCode services.
Since the BlueList application (see how to build it here) uses native APIs, Worklight can enable the native iOS application to communicate by using the Worklight native API library. You learn how to configure an iOS native API environment on the server to consume the client requests and communicate with an HTTP adapter. Explore further
Create a natural language question answering system with IBM Watson
IBM Watson might be a first real step to artificial intelligence, so it's probably a "smart" idea to start incorporating its capabilities into your development projects. For example, its natural language abilities. Swami Chandrasekaran and Carmine DiMascio want to show you how to create a natural language question answering system with IBM Watson on Bluemix. The Watson Films app is a simple demonstration of how to build an application that interacts with Watson by using the Watson QAAPI (Question and Answer API); users can ask questions about AFI films. The demo is built on Node.js with Express; you will understand the concepts to building an advanced natural language application. Explore further
Improve scalability with session caching
Abelard Chow, Paul Chen, and Brian Martin understand that a well-designed session persistence framework is required for performance and scalability, but you don't always have the time to construct one properly. So, using the Bluemix Session Cache service, they show you how to easily and quickly build such a framework into your app. You will learn about HTTP sessions and session persistence. Explore further
Enable a photo finder with location services
The team of Jay Allen, Rachel Reinitz, Srikant Varadarajan, and Robert Vila demonstrate how easy it is to use Pitney Bowes's powerful Geocoding and Validate Address services (as Bluemix services) to build an app that combines the latitude and longitude of any US street address with a media search in Instagram. You also explore creating service instances and cloning applications. Explore further
Use a custom Go buildpack with IBM Bluemix
Bluemix added the ability to bring your own buildpacks; in this article, Michele Crudele answers the question: "What if Bluemix doesn't support your preferred language and web development framework?" A buildpack is collection of scripts that implements the actions that are needed to examine the application you're deploying and to download and configure the needed dependencies. See how you can use the Bluemix PaaS pluggable model to link in support for your runtime. Explore further
What if you can't get your mobile app right?
Chris Brealey says it well: "I don't know about you, but with the exception of writing 'Hello World,' I hardly ever get my code right the first time." With that thought, he takes you on a journey to write a "bad" mobile app then shows you how the Bluemix Mobile Quality Assurance service can interact with that app and suggest fixes to make it perfect. Experience automated, interactive iterative testing. Explore further
Scalability is a Bluemix built-in service
For the last sample project in this article, we'd like to thank Ryan Baxter for reminding developers that almost regardless of what Bluemix service your application uses, scalability it built into your application. As he demonstrates how to build highly scalable applications with the Bluemix Node.js runtime and Redis service, Ryan notes that "One of the most compelling reasons to use Bluemix to run your application is its ability to quickly and easily scale your application." This is an opportunity for you to examine the scalability that is built into the Bluemix experience. Explore further
You can keep an eye on Bluemix development project documentation in this search view as the knowledge from more varied builds and deployments accumulates.
New: What's new since Bluemix launched
The Bluemix developer community blog is the best place to keep up to date on changes to the platform and services. For example:
- At the end of March, Bluemix engineers made it easier to find information. They made it easier to search the catalog for services and easier to search the Dashboard to filter the list of existing applications and service instances. You could also "star" favorite instances and apps so they'd rise to the top of your list.
- Changes to the Bluemix UI in April included simplified registration and login, support for add-ons, services now organized by category, the ability to link an app to a Git repository, and more. Also in April, the Mobile Cloud services made some changes to migration methods and introduced support for new features and new products. The Bluemix platform improved its debug logs for those applications that fail to deploy, stage, or start.
- In May, the Bluemix UI was updated: "Bring your Own Buildpack" (runtime) was added to the catalog. The Dashboard can now collapse to give developers more screen space. Handling of app-related data changes on the server improved, plus minor style iteration enhancements added clarity.
- Mobile Cloud SDK and services were upgraded in June: This includes an application secret value to allow initialization, the configuration template was merged into the SDK and can now be removed from the application, support for new methods and authentication access points, and updated samples. There is also a tutorial that shows you how to migrate the beta apps you created since the SDK APIs have changed.
From here to the end of this article, we'll give you a quick overview of Bluemix and some other technologies that make IBM Cloud a complete cloud offering.
New: Learn how to use Bluemix
As mentioned earlier, Bluemix is a single-solution, open standards-based platform environment with instant resources for developing and deploying apps quickly across multiple domains. You can use it to build, run, and manage web, mobile, big data, and smart-device applications; the platform supports many popular programming languages and frameworks. Java™ technology, mobile back-end development support, application monitoring, open source technologies, and much more are available through an as-a-service model in the cloud.
IBM Bluemix will be changing as we continually make things better and easier to use. We'll do our best to keep this article up to date, but it will not always be perfectly aligned with the current state of affairs.
The Bluemix catalog contains most of what you need to hit the ground running. Powerful boilerplates, add-ons, pre-configured sets of services, runtimes, and sample code are ready for instant use:
- Runtime environments such as Liberty for Java™, SDK for Node.js™, and Ruby Sinatra ...
- ... and if you can't find an existing runtime that suits your needs, you can bring a custom, Cloud Foundry-compatible buildpack when you deploy your application by using the cf push command.
- Mobile services such as:
- Push: Create and schedule push notifications for iOS and Android devices to engage users when they aren't using the app through user tagging.
- Mobile Quality Assurance: Lets you instrument apps to capture tester and live-user experiences, including context-aware crash logs and in-app bug reports, in-app user feedback, and insightful and streamlined quality metrics.
- Mobile Application Security: Provides a basic app security framework that lets you block access to apps on specific devices and offer containerization and control over the operational lifecycle; powered by Fiberlink MaaS 360.
- Twilio: Build apps that communicate through voice, messaging, and VoIP with your web and mobile apps.
- Web and application services such as:
- Session Cache: Improve performance and user experience of web applications by retrieving information from fast, managed, in-memory caches.
- Data Cache: Improve application resiliency via persistence, by storing session state information across many HTTP requests.
- Cloud Integration: Use patterns and custom APIs to securely connect and integrate applications and information in the cloud.
- Application Auto-Scaling: Automatically scale IBM provided runtimes based on a scaling policy that you configure.
- Travel Boundary: Generate isochrone bands around a location that is based on driving time or distance, essential for site-selection analysis, logistics planning, and supply chain management.
- Validate Address: Standardize and validate addresses, ensuring that your address data adheres to quality standards established by the postal authority to improve the deliverability of mail.
- Reverse Geocoding: Lets you look up an address for a GPS location.
- Geocoding: Helps you to find exact geographical locations by inputting an address and returning a location.
- CloudAMQP(RabbitMQ): Managed RabbitMQ servers in the cloud that let you decouple, distribute, and scale your applications with the speed of CloudAMQP.
- RedisLabs: Offers Redis Cloud, a fully managed Redis service that is infinitely scalable, highly available, top performance, with zero management.
- SendGrid: Cloud-based email solution replaces your email infrastructure so you don't need to build, scale, and maintain the system.
- RabbitMQ: Open source message broker service.
- Redis: Open source key-value store service.
- Data management services such as:
- Time Series Database: Allows you to insert and query time-based data from sensors and metering devices; based on technology from Informix.
- SQL Database: Provides a fully managed relational database for complex, intensive web and transactional workloads; powered by DB2.
- Cloudant NoSQL DB: Provides a distributed database as a service for developers of fast-growing web and mobile apps.
- ElephantSQL: Open source database service.
- MongoDB: Open source document-oriented database service.
- MySQL: Open source database service.
- PostgreSQL: Open source object-relational database service.
- MongoLab: Fully managed cloud database service that features highly available MongoDB databases, automated backups, web-based tools, 24 x 7 monitoring, and expert support.
- Big data services such as:
- Analytics Warehouse: Provides an easy-to-use and high-performance platform for data warehousing and business intelligence; powered by in-memory-optimized, column-organized BLU Acceleration technology.
- DevOps add-ons such as:
- Continuous Delivery Pipeline: Delivers automated build, test, and multi-stage deployment support.
- Agile Planning and Tracking: Gives you access to powerful IBM tooling and services for agile planning and tracking with the cloud platform.
- Git Hosting: Offers integrated git hosting with deployment via
pushand auto deployment from git repositories.
- Monitoring and Analytics: Lets you identify the root cause of application problems with code-level diagnostics and once deployed, helps you use production log files to keep tabs on performance.
- BlazeMeter: Test the performance of any mobile app, website, or API in under 10 minutes; simulate up to one million users; compatible with Apache JMeter.
- Load Impact: Load test your website, web app, mobile app, or API instantly with up to 1.2 million concurrent users.
Explore Bluemix concepts, services, and capabilities
Bluemix is an open PaaS built on Cloud Foundry open source technology. The platform is designed for developing and hosting applications while simplifying infrastructure management tasks so you can rapidly develop, deploy, and manage apps at Internet scale.
Bluemix makes it easier for you to:
- Enable applications to be rapidly and incrementally composed from services.
- Deliver application changes continuously and enable continuous availability.
- Support highly customized workload-specific programming models and services.
- Embed a high level of manageability into services and applications.
- Support optimized and elastic workloads.
Bluemix achieves these goals by abstracting and hiding most of the complexities that are usually associated with hosting and managing cloud-based applications.
Bluemix concepts in a nutshell
In Bluemix, an application is the artifact that you build — all the code (source code or runtime binary files) needed to execute or reference at runtime. For web apps, you will upload all the application code to Bluemix where it is hosted for execution. For mobile apps, you will develop the front end outside of Bluemix, using for example, iOS or Android development tools, and you will run it on mobile devices. Mobile apps, however, will be able to interact with Bluemix services through back-end application code that you can deploy on a Bluemix container.
A service is Bluemix-hosted code that offers a piece of functionality for applications to use. It can be a pre-defined service that you use directly — such as push notification for mobile and elastic caching for a web application. You can also create your own services, which can range from simple utility functions to complex business logic.
Organizations and spaces are organizational units in the infrastructure that can store and track application resources. An organization contains domains, spaces, and users. A space contains applications and services. The default spaces are Development, Production, and Staging.
For applications that require a PaaS environment, a buildpack is a collection of scripts that prepares code for execution on the target PaaS. Buildpacks, which include the runtime environment your app needs and can include specialized frameworks, help you deploy applications to the cloud more easily than when you must configure and install the runtime.
Using Bluemix services
Using services in Bluemix takes three steps:
- Indicate to Bluemix when a new instance of a service is required and tell Bluemix which particular application will use that new instance.
- Bluemix automatically provisions a new instance of the service and binds it to the app.
- The application interacts with the service.
Service bundles are collections of use-specific APIs. For example, the Mobile Services bundle includes MobileData, Cloud Code, Push, and Mobile Application Management. You can find the available services and runtimes in the Bluemix catalog. And you can register your own services.
Application deployment and management
To deploy your application, you upload it to Bluemix and indicate how many instances of it you want running, configuring Bluemix with enough information to support the application:
- For a mobile app, Bluemix contains an artifact that represents the mobile application's back end — a set of services the app uses to communicate with a server. Bluemix supports mobile application back ends that can take advantage of push notifications, mobile data services, and mobile app security services that are directly offered within Bluemix.
- For a web application, you provide Bluemix with appropriate runtime and framework information so the platform can set up the proper execution environment to run the application.
You can deploy and manage applications by using the
command line tool, the Bluemix web interface, or DevOps Services. You can also install the Bluemix
plug-in for Eclipse (described here) and deploy applications to Bluemix directly from
your Eclipse workspace.
Browser-based and mobile clients — as well as other apps deployed on Bluemix and externally executing applications — interact with the Bluemix hosted applications through REST/HTTP APIs. Each client request is routed to one of the instances of the application or its composite services. Application execution environments in Bluemix are isolated from one another even though they might reside on the same physical machine.
For application management, you can start, stop, restart, or — in the case of web apps, modify — the number of instances and the amount of memory the application uses. A key design feature of Bluemix is that it excels at hosting scalable applications and app artifacts. The platform, currently, doesn't automatically scale an application that is based on load, so you manage that process by creating or deleting instances as workload changes. For this reason, your apps should save all persistent data in outside of the application in one of the data-store services Bluemix provides. To redeploy an application after an update, you use the same process as for the initial deployment. Bluemix stops all running instances and brings up the new ones automatically.
DevOps Services for Bluemix
In DevOps Services, it takes only a few simple steps before you're collaborating with others to plan, track, and develop software in the cloud. You can use the built-in browser code editor that DevOps Services provides for application development, or you can use DevOps Services with Eclipse, VisualStudio, or Git command line to code and deploy applications to Bluemix:
- With a UI designed to help you quickly add the "who, what, and when" for your development project, it takes only a few minutes to set dates, document your first user story, assign a task or two, and dive in to the code.
- DevOps Services includes built-in source code management, both Jazz SCM and hosted Git. Each project gets its own DevOps Services repository and workspace in which project members can check in their changes, associate code changes, and view a history of recent changes. You can also create a DevOps Services project and point to your GitHub repo.
- You can easily link work items with GitHub code changes, too. Plus, you can use your existing tools to code in Git.
You can explore DevOps Services in action by participating in these interactive developerWorks exercises presented by development experts Scott Rich (IBM Distinguished Engineer, cloud architect, Rational Jazz founder)and Kevin Williams (cloud, automation, and test architect for IBM Software). You can run the resulting app and grab the code from its DevOps Services repository:
- "Build a simple notification service with Node.js and MongoDB" — Williams was in a quandary: How do you orchestrate the behavior of a growing set of disparate tools to create a larger but more comprehensible workflow organism? His answer was awareness — a notification service that supports creating, signaling, and subscribing to events. He kept it simple and built it using the Node.js runtime (it supports rapid development of HTTP servers with a REST-like API); MongoDB runs the back end (the document orientation was perfect for rapid prototyping).
See these and other interactive articles in the Docs section of the Bluemix Developers Community.
Mix it up!
- Explore developerWorks Cloud computing, where you will find valuable community discussions and learn about new technical resources that are related to the cloud.
- Visit the Bluemix Developers Community to find all the resources you need to get started coding and deploying your apps in the cloud.
- Get involved in the developerWorks community. Connect with other developerWorks users while you explore the developer-driven blogs, forums, groups, and wikis.
Dig deeper into Cloud computing on developerWorks
Get samples, articles, product docs, and community resources to help build, deploy, and manage your cloud apps.
Crazy about Cloud? Sign up for our monthly newsletter and the latest cloud news.
Software development in the cloud. Register today to create a project.
Deploy public cloud instances in as few as 5 minutes. Try the SoftLayer public cloud instance for one month.