 So, we have a couple minutes, but before, if you guys want to register, this is a hands-on lab if you want. If you want to register, create a Bluemix account, and then go to hubjazz.net to link it to your Bluemix account, and then we'll be, this will be the code that we'll be doing. So if you want to follow along. So we're starting in two minutes. By the way, if you have like iPads, it'll even work on an iPad. So I see you have an iPad. So what we're going to do is we're going to fork down some code, and then you'll just walk through, and everything's written for you, so it's just so you can do it. Yeah. Excuse me? We've got some guy in LA that's ready to help us out. Add some special effects. Yeah, it's a mini lab, so if you want to follow along, if not, we're going to be doing it up here so you can see what we're doing. So it's not a requirement. No, it's all web-based. It's all on Bluemix and IBM Bluemix DevOps services. So I think we want to get started. Good. All right, guys. Thank you for coming. So today what we're going to show you is we're going to show you how OpenStack, so in Bluemix we created an OpenStack service, an OpenStack Swift service that allows you to have storage and then integrate that into your Bluemix, an application written in Bluemix. And so today what we wanted to do is we wanted to show you how simple this is, how we're going to walk you through writing an application. Well, we wrote an application. You'll fork it and use these IBM web-based tools and do this demo. So I'm Manuel, this is Sean, and over here is Dan. And we work in IBM, we work in the Open Technologies team, and our job is really to work with first-of-a-kind customers and partners to do these open-cloud technologies. So our focus really has been OpenStack, Cloud Foundry, Docker. And we're trying to find new ways to leverage that, feed that information, give it back to the community, feed it to IBM. And what the effort here is, we want to show you guys what we've been doing to take these technologies and how we're making them available to the world. So what you'll learn today is, first of all, what is Bluemix, right? How does it build on OpenStack and Cloud Foundry and Docker? We'll show you what features Bluemix Object Store service provides. We'll show you how to use IBM Bluemix DevOps services to create, to version, and to deploy your applications. We'll show you how an application in Bluemix can be used to consume an external service like this OpenStack Swift service. And then we'll show you how once your application is written, you can actually add other services like Watson or analytic services or mobile services, okay? So again, like I was saying, we're gonna show you how we're gonna walk through the demo, but if you guys want to follow along, there really are three things you need. First is create an IBM Bluemix account. So if you guys have a browser, this will even work on an iPad. Go to Bluemix, create your account. Then you go to the Bluemix DevOps services. And then that's found at hub.jazz.net. And then that'll actually allow you to connect those two accounts, your Bluemix and your DevOps services account. And then if you go to this link, the bit.ly link, what that'll do is that'll actually show you the repository of the code that we created, okay? So what we're looking at, what we want to do is we want to show you guys how easy it is to create a Bluemix account. How easy it is that then have your Bluemix and your DevOps services accounts created. And then for you to write an application, in this case, a Node.js application. And then have that Node.js store data in an OpenStack Swift service that's available, okay? So what you'll do is you'll create the application. You'll fork an application that's already been created by us. And you'll do that in the DevOps services on the web. You'll provision an instance of the object store so that then you can use, we'll deploy the sample application. And at that point, it'll be actually wired and connected in ready to use your object store. We'll make some changes to the application and then we'll see how you can automatically have these redeployed. And we'll also show you, we won't go into a lot of detail this, but we'll show you how you can actually bind other services to your application. And then at the end, we hope that you'll be able to understand how the application can then, you can use the built-in capabilities to scale your application. So Bluemix is IBM's implementation of IBM's open cloud architecture. And what this is basically at the heart of it is that Bluemix is built on top of Cloud Foundry, okay? And recently we announced that we've also built on top of Docker. We've extended it, extended the solution include Docker. So with Bluemix, you can rapidly create, deploy, manage your cloud applications with containers or virtual machines. This is a platform as a service that's written for developers. So you take your application and you deploy it on the cloud. You don't worry about how the infrastructure, whether it's running on containers or virtual machines unless that's something that matters to you. Since Bluemix is based on Cloud Foundry, you can tap into the growing ecosystems of services, run times, frameworks that are available. And this also includes Docker. So you can take containers and Docker files and deploy them to the cloud. In addition, Bluemix adds some services that aren't available publicly. These include Watson, mobile, Internet of Things, and open stack components. And then finally, Bluemix provides a dashboard that allows you to create, view, and manage your application services, view log files, view status, okay? So IBM Bluemix DevOps Services, what this is, it is sort of an extension to Bluemix that allows you to, it provides a continuous delivery platform and it integrates perfectly with Bluemix. It gives you a way to develop, to track, to plan, and to deploy the software from a single interface, okay? It gives you the ability to plan through the track and plan service, right here. It gives you a web development environment that allows you to code, to edit your code, and to commit view changes, stuff like that. And then it allows you to choose what sort of source control you want. So you can have either it provides native Git or Jazz SCM, or you can connect to an external GitHub repository. And then finally, it has automated testing and publishing capabilities. So that you can have your application, once it's uploaded or a commit has been made, it can automatically send that up and deploy that in whatever your continuous tool chain. Whatever you define here, it can actually be deployed publicly, okay? So Node.js, Node.js is an open source cross-platform runtime. It's basically a JavaScript implementation that runs on a server instead of your browser, okay? It's non-blocking IOAPI and what this means is that there's really no, it's a lot different than the way Apache works. And so a lot of the vulnerabilities that exist in Apache don't exist in Node.js, so everything's put on a queue. It's based on the Google V8 JavaScript engine, and it, what else, okay? And it integrates, and it'll run on IIS or Apache, okay? And last year we announced that there's a foundation, foundation's been, we've been moving forward to create a foundation with them, okay? So the Bluemix object storage, this is an open stack implementation, and it's hosted on, on software. It's an elastic implementation that's hosted on software. It has built-in support for independent and isolated object stores. And there are two implementations of Swift. One's designed for these Bluemix applications and the other's designed for, if you have a virtual machine or a container, okay? So Bluemix has a complete catalog of over 100 additional services. You can see a couple here. You can see that we have these, these Watson services. These include like the ones that you see here. But in, in addition, you have stuff like Translate. There's a question and answer service where you ask it health questions or travel questions and it answers back. You have mobile services like push notifications and, and replication. And then you have a lot of big data, big data services. Like the, an interesting one we found is this insights for Twitter. And then you have integrated services where it integrates with other, with other clouds and other, and other resources, okay? So now we're gonna go through a, a live version of this. So let me hand it over to Dan. Okay, can you hear me? Great. Okay, so there was a couple of links earlier. Just so you are aware of those as well. Let me just pop back over to that slide. So you can follow along with the code we're gonna be looking at. Okay, so if you've already signed up, just head over to bit.ly slash ibm dash b-o-s, Bluemix object storage. Okay, so this sample application, it shows basically a simple create, update, delete, a crud application using the Swift object storage. So basically what the user can do once they've cloned the code and pushed it to Bluemix is to choose a file from their local file system. Go ahead and upload it, and then see the listing and, and just read it back out. Just a sample file that we have here with a piece of popcorn on the belt. Okay, so that's the sample application right there. Really straightforward. After you upload, you just go ahead and delete. And basically the goal is to show that you have a Node.js application that's deployed, integrated with the Swift object storage service. And you could then go ahead, and after you just forked the code, extend it, bind it to other services. For example, you may want to tie it to a download counter. So anytime people have pulled that image, you can track some information. And so the source code repository, it's in a get format. It lives out over on IBM, Bluemix DevOps Services. And essentially it's got a bunch of supporting files, but it's got your standard Node.js application structure. There's a read me here that you can use to follow along. This is the most important set of steps to go ahead and recreate the lab. So just once, you know, just get yourself familiar with that. But basically what you're going to be doing is signing up for Bluemix, creating an instance of the Bluemix object store in the Bluemix catalog. There's two versions in there. You're going to pull the first one. That's for use with Cloud Foundry applications. You'll then, with your Bluemix ID, sign into the IBM DevOps Services. Enfork this code. There's a few settings there as you go through. You can make it a public project if you want, or just leave it at a private project. We're not going to use any of the advanced track and deploy features of DevOps Services where you could create work items and tasks for a team. And we're going to make it a Bluemix project. So this ties it back to your account there. And lets you choose what sort of space within Bluemix that you want to use there. What we'll then do is once we have that source code, we're going to create a pipeline to push it out to Bluemix. So what this does is it sets up a system that every time you iterate on your application and you push code to either a branch or to the master branch. What DevOps Services is going to do is just push your application up there. So you have this very rapid application development workflow. And finally, once you deploy the application, you'll be able to track the logs in case there's a problem. If there's a typo, you'll be able to see that in UI and drill into any of the problems you may have run into. And you can, of course, browse through the UI, just similar to tools like GitHub. IBM DevOps Services lets you see diffs, lets you see formatted source code in there. And finally, once you have that code completely running, your free just after this lab, go ahead and extend it how you like to see. However you'd like to extend it, and we'll be here all week too. So if you run into any questions or have some of their opinions you want and how best to deploy applications and go forward, you can always find us. Okay, so, I have set up a demo account in Bluemix. I have my fresh account there. Okay, after creating my account, I'll log in. And this is the account I just created right before getting on stage here. So I'm following along just with you guys. And of course, got my password on, sorry, lost the username. Okay, so I've logged into Bluemix here. Let's make sure I have the UI expanded. And once you have an account, basically your resources within the interface are grouped by applications and services, which are basically the primitives you're working with in a platform as a service. And you also have the Docker-based containers and the OpenStack-based virtual machines. We're gonna focus on the CF apps, the Cloud Foundry apps right now. And the service that we want is the object storage. So I'm gonna go to catalog. You can see they're grouped by Watson, all sorts of categories here. We're interested in the data management. And we're gonna pull down, we're gonna create an instance of the object storage. I'm gonna leave it unbound for now because we're gonna fork that code and push it, but I am gonna change this to object storage. Okay, and just take the rest of the defaults. Yes, the reason that we had to name the service object-storage is the sample app is looking for that name. Okay, so I've got my account. I can now log in over at hub.jazz.net. And there's a single sign on environment between these two. So I can just pull my sample token. The first time you log into DevOps services, it may ask you for repository alias. You can just base that on your Bluemix ID without the at email address. So for this account, I just set up because my user was demo at iBluMx. I just called it demo at iBlu. Okay, so when you first log into DevOps services, you can see there's existing projects. If you have been invited to join other teams to collaborate on code, you've got invitations there. I'm gonna go, I could explore and search for projects too, but I created the short link earlier, so I'm gonna go ahead and do that. And it was bit.ly, I'm sorry, slash ibm-bos, Bluemix object storage. So this is a public project. I'm gonna create my own copy of it so I can make modifications and you can each do that by forking it. I'm okay with leaving it private, as I said. I don't need to add the scrum feature, so I'll just turn that off. And I'm gonna make it a Bluemix project, which will tie back to if I'm working with another team, within a different organization, within Bluemix, I can do that. So for my user account, by default, your space is gonna be dev whenever you create an account. So all of this, we can just take the defaults. And I just need to give it an alias, so okay. So I've got a local copy now, what I'll go ahead and do. I could edit the code if I wanted to change it before deploying. But since it's a complete sample application, I'll go straight to the build and deploy step. And what this allows me to do is set up stages. So if it's a more complex application, you can create a build step that could run some tests. You can gate it through development staging and production areas. Since it's just a sample application, I'm only gonna add one stage, and that's just gonna be a deploy stage. So that'll pull up a window here, I'll name that deploy. For the most part, we can take the defaults here. One important thing you'll need to do though, is go over to the jobs tab. But by the way, this input, what it's telling us here is that we're just pulling from the forked repository that I just created. So it'll use the URL with your alias. We will add a deploy job. And again, just take the defaults. It's just gonna deploy out to the public Bluemix, using the same information. And if you were using the command line tool, Cloud Foundry is an open source project. So there's a CLI. It's basically showing that this is a value added UI on top of those command line features. You can always change these as well, or modify your own deploy jobs. All right, I'll click save. Okay. So once I've done that, we will run the stage. So what this is gonna do is pull down the code from the source code repository. And it is then gonna run those commands. And I can kinda see the progress as it's going in the deployment job. Okay, so it's pushed the code. It's waiting for the application to start. And the sample app, just one note here. It'll create a random hostname for you at .mybluemix.net. So you can change that, the manifest file that you have in your code. You can modify that. I just did that. So we wouldn't have any namespace conflicts as you guys push. But yeah, it has some ridiculous names in here. Gypsy-ish hairbrush. Okay, in each application, that is pushed to Cloud Foundry. What it does, it combines your source code with a build pack. That build pack lets your application run independently of all other applications that are on platforms of service based on Cloud Foundry. It also means that you can scale out your application with several different instances of that. So one thing that we're not gonna cover in the demo is, but once you push an application, you can do some interesting things. If you have, for example, more than one instance running, you can do what are called blue-green deploys where if you have an existing application, you can push in a new version and slowly roll out the old version without any downtime. I only have one instance running, but that's how you would essentially do that. Great, so my application deployed. So what I can do is go back to my stage and I can see that my stage passed. This will also, over time, show you a build history and there's the URL to my application. I just click that and just like the demo, just grab the open stack logo. Great, okay. So we have about 20 minutes left of this for the next few minutes. If you guys wanna go ahead and try to repeat those steps, we'll pull up the application readme and let you guys work through that and if you have any problems with it or any questions, we'll help you through that. Oh yeah, sorry. Did you guys have any questions at this point before we move into any sort of hands-on building? Sure, there, it's right in the middle. So when you associate the application with the service, what do you get? An account, a container. What's the Swift address that you can use there? Okay, so the question is, what actually happens behind the scenes, basically what do you actually get? So the Bluemix catalog is providing an interface to the soft layer object storage service which is based on open stack Swift. So what it's doing in there, that's a large multi-tenanted cloud of services. It's creating an account for you there and it's providing the credentials to your application in the form of an environment variable. So your application can dynamically just take that and then each of you who've just signed up for it got a sub-account that does that and so you never actually need to use a username or password, it's done that transparently for you. Okay, any other questions? And just before we get to helping anybody out, we just wanted to make a couple notes too. There's some more sessions coming later at the conference. In this particular room, if you wanna stay here, we have a half day session. So there's a hybrid cloud use case with the federated identities. So during the keynotes, you'll notice this was actually a huge enterprise feature that really is important to a lot of IBM customers. We had a lot of committers to the open stack code base to enable this. And then there's going to be an open stack heat-based presentation. And there's also another high-level business focused introduction to the IBM open cloud architecture, what you've seen on the coffee cups, the open by design. What we've been doing at IBM is building all of our services and products on top of open source. So as you've seen, Bluemix was based on cloud foundry and open stack and Docker. Oh, there's gonna be a high-level presentation there. There's also a bunch of technical sessions throughout the week here. Some folks from my team actually were doing a presentation at the end of the day on how open stack Docker and cloud foundry come together, we hope to see you there. And of course, we are also hiring too. So if you have interest in committing to open stack or committing to Docker or cloud foundry, come talk to us. Anybody in the, there's Vince and Joanna in the back of the room, go talk to them if you guys are interested in being committers to open stack and being paid to do that full time. Okay, great. So let's go back to this. Or if you just want to come over and help you. So earlier you said there are two implementations of Swift within this Bluemix environment. So what are the differences between those two implementations? So they're right there. The two, the version one is if you have a cloud foundry application, that's the interface. They're basically the same backend, but different interface. That's the interface that gives you the environment variables so that your application can then just use it. It'll have automatic, like the username, password, everything configured where the location is. And then in the second one, the V2, is if you have a Docker container or a virtual machine and then you want to mount and use that storage. That's the difference. One has the required credentials and all that for the cloud foundry app and the other for the Docker or virtual machine. Sorry about the highlighting, but yeah. So if you go to the documentation two from the reading, it'll give you more details on the different versions and how you consume them. And in fact, all of the services within Bluemix that you see, the over a hundred there, each come with documentation and sample app code that you can use to go further with these things. The other thing we could show is a Bluemix, show them how the application is and then show them how we can add other services. Yeah. Yeah, that's a great idea. So why don't we dig into a little bit of the sample app while we're just going through here? Okay, as we had mentioned, the entry point for Node.js is this app.js file. So just take a look into how this actually comes together. The way cloud foundry works is that as you get those services provisioned for you, you can bind any number of services to your application. What'll happen is you'll get this VCAP services environment variable. In the form of a JSON object. So for many runtime, be it Node.js, Java, PHP, Python, Ruby and any other runtime that you bring to IBM Bluemix, you can write your own built back environment and run that on Bluemix. You'll be given this environment variable. Oops, sorry. And it will provide details about the level, the tier of the object storage. Object storage is considered a beta service right now so there's no charging, it's a free plan. Other plans that come from IBM or from providers, they might have different tiers. So for example, there's a MySQL service from a partner called ClearDB. You can buy in at different levels depending on how much storage you need. And that'll be shown in the VCAP services, you know, basically your limits there. You have some end points in which to consume it that your application can dynamically use. The username and the password is all generated on a fly. So this application stores that into a local variable that it's using, jeez, sorry. And the sample code will show you how Node.js, the Express Framework registers or just our front end application. There's a few, the way the service works, like a lot of the OpenSack services, is you log in, you get a token. The application holds onto that variable. And essentially, there's the bunch of calls to the REST API that are implemented in here. So when you first log in, you'll create the container and then all your objects within. And we have also some URL calls that basically respond to the web requests, right? Here's our entry point at line 239. And if you wanted to extend this, you basically would look for that VCAP services variable for your new service. And then you could pull into, for example, if you wanted to do the download counter, there should be a download root in here, or upload root, sorry, was it above? That's the index point. But basically any one of these roots, you would just tie in your sample code, or your brand new code to do that. Okay, anybody having any trouble right now or you guys have any other questions? I'm not sure if this is the right session, but in terms of that service and the rest of the soft layer environment, if you have workloads in the soft layer environment, how does the public Bluemix back in services like this and the soft layer sort of IaaS services, how do they integrate or do they? In terms of user accounts? Yeah, well, I just don't know if, outside of the Bluemix environment, if you have a workload somewhere else in the Bluemix cloud, whether you can leverage the Swift service, if you subscribe to it here. Yes, yes, and that's also some of the reason why there's two versions of the Swift service in there. You can, your application will be the glue between all the services you provision in Bluemix, and you don't need to have a separate account over on soft layer at all to consume them either. That's all handled directly through Bluemix and billed directly through Bluemix for all the services you consume. But you can bind as many services you want to your application and you'll be able to consume those. And there's a native soft layer object storage in addition to the Bluemix Swift. Correct, correct. And you can go straight to softlayer.com and sign up for that and use that directly, but I don't know if you can actually pull that existing service into your Bluemix application. Right, I was just wondering if there was a convergence at some point where there's just one object layer for IaaS type workloads, Docker workloads and Cloud Foundry type apps. It will be. In the end, we'll have one service and this is it. Okay, so you'll deprecate the old soft layer. No, we'll... You can just do it however you like. Deprecate the soft layer or this becomes a soft layer. This is a soft layer. Okay. But in the end, we have multiple front ways to get to it. Right. There's one physical service in the back and that's running on soft layer. Right, okay. Okay. All right guys, well thank you very much. If you have any more questions, we'll be around and again, if you see the blue shirts, we're hiring. Great, thank you very much.