Archive

Tag Archives: cloud

I finally sat down and really started to take a stab at Cloud Foundry Bosh. Here’s the quick lowdown on installing the necessary bits and getting an initial environment built. Big thanks out to Dr Nic @drnic, Luke Bakken & Brain McClain @brianmmcclain for initial pointers to where the good content is. With their guidance and help I’ve put together this how-to. Enjoy…  boshing.

Prerequisites

Step: Get an instance/machine up and running.

To make sure I had a totally clean starting point I started out with an AWS EC2 Instance to work from. I chose a micro instance loaded with Ubuntu. You can use your local workstation if you want to or whatever, it really doesn’t matter. The one catch, of course is you’ll have to have a supported *nix based operating system.

Step: Get things updated for Ubuntu.

sudo apt-get update

Step: Get cURL to make life easy.

sudo apt-get install curl

Step: Get Ruby, in a proper way.

\curl -L https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
rvm autolibs enable
rvm requirements

Enabling autolibs sets up so that rvm will install all the requirements with the ‘rvm requirements’ command. It used to just show you what you needed, then you’d have to go through and install them. This requirements phase includes some specifics, such as git, gcc, sqlite, and other tools needed to build, execute and work with Ruby via rvm. Really helpful things overall, which will come in handy later when using this instance for whatever purposes.

Finish up the Ruby install and set it as our default ruby to use.

rvm install 1.9.3
rvm use 1.9.3 --default
rvm rubygems current

Step: Get bosh-bootstrap.

bosh-bootstrap is the easiest way to get started with a sample bosh deployment. For more information check out Dr Nic’s Stark and Wayne repo on Github. (also check out the Cloud Foundry Bosh repo.)

gem install bosh-bootstrap
gem update --system

Git was installed a little earlier in the process, so now set the default user name and email so that when we use bosh it will know what to use for cloning repositories it uses.

git config --global user.name "Adron Hall"
git config --global user.email plzdont@spamme.bro

Step: Launch a bosh deploy with the bootstrap.

bosh-bootstrap deploy

You’ll receive a prompt, and here’s what to hit to get a good first deploy.

Stage 1: I select AWS, simply as I’ve no OpenStack environment. One day maybe I can try out the other option. Until then I went with the tried and true AWS. Here you’ll need to enter your access & secret key from the AWS security settings for your AWS account.

For the region, I selected #7, which is west 2. That translates to the data center in Oregon. Why did I select Oregon? Because I live in Portland and that data center is about 50 miles away. Otherwise it doesn’t matter which region you select, any region can spool up almost any type of bosh environment.

Stage 2: In this stage, select default by hitting enter. This will choose the default bosh settings. The default uses a medium instance to spool up a good default Cloud Foundry environment. It also sets up a security group specifically for Cloud Foundry.

Stage 3: At this point you’ll be prompted to select what to do, choose to create an inception virtual machine. After a while, sometimes a few minutes, sometimes an hour or two – depending on internal and external connections – you should receive the “Stage 6: Setup bosh” results.

Stage 6: Setup bosh

setup bosh user
uploading /tmp/remote_script_setup_bosh_user to Inception VM
Initially targeting micro-bosh…
Target set to `microbosh-aws-us-west-2′
Creating initial user adron…
Logged in as `admin’
User `adron’ has been created
Login as adron…
Logged in as `adron’
Successfully setup bosh user
cleanup permissions
uploading /tmp/remote_script_cleanup_permissions to Inception VM
Successfully cleanup permissions
Locally targeting and login to new BOSH…
bosh -u adron -p cheesewhiz target 54.214.0.15
Target set to `microbosh-aws-us-west-2′
bosh login adron cheesewhiz
Logged in as `adron’
Confirming: You are now targeting and logged in to your BOSH

ubuntu@ip-yz-xyz-xx-yy:~$

If you look in your AWS Console you should also see a box with a key pair named “inception” and one that is under the “microbosh-aws-us-west-2″ name. The inception instance is a m1.small while the microbosh instance is an m1.medium.

That should get you going with bosh. In my next entry around bosh I’ll dive into some of Dr Nic & Brian McClain’s work before diving into what exactly Bosh actually is. As one may expect, from Stark & Wayne we can expect some pretty cool stuff, so keep an eye over there on Stark & Wayne.

NOTE: All of this code is available at my Github Project “Remembering” (https://github.com/Adron/Remembering). Feel free to fork it, share it, or send me corrections or pull requests.

While working on the Thor Project there have been numerous situations where I need to fire off an asynchronous callback in C# while maintaining good responsiveness in the actual user interface. Benjamin (@bvanderveen) has been using Reactive Extensions with subscriptions to do this in the Objective-C code for the Cocoa based OS-X Thor user interface. See my previous blog entry for an example of what he’s doing.

For a good example of asynchronous calls against Cloud Foundry I setup the following project using the Iron Foundry Project VCAP Client Library. The first thing I setup was a static class with a few constants to use across the examples for the URI, username and password for the Cloud Foundry Account.

public static class YourSecrets
{
    public const string Username = "youremail@someplace.com";
    public const string Password = "AnAwesom3HardPassw0rd!";
    public const string Uri = "http://api.yourpaas.com";
}

Next step was to setup the delegate and method I’d use for calling out to the Cloud Foundry environment and retrieving data in parallel to my active console or user interface. That code snippet looked like this. I also added a private variable _finished for use in tracking when the request was completed in the begin and end invoke example below.

private bool _finished;

IEnumerable TheMethodToConnectThatWillTakeLongTime(string uri)
{
    var client = new VcapClient(uri);
    client.Login(TheSecretBits.YourSecrets.Username, TheSecretBits.YourSecrets.Password);

    _finished = false;

    return client.GetApplications();
}

delegate IEnumerable MethodDelegate(string uri);

Once I had that setup I was ready to create my baseline method that would make a synchronous call. A synchronous call is one that makes the call as if it just called the method directly. There’s no real reason to create one like I’ve done here, but I was just using it to provide a basic example of calling the delegate.

public void SynchronousCall()
{
    var starting = DateTime.Now.ToLongTimeString();

    var delegateMethod = new MethodDelegate(TheMethodToConnectThatWillTakeLongTime);
    var returnedBits = delegateMethod(TheSecretBits.YourSecrets.Uri);

    var ending = DateTime.Now.ToLongTimeString();

    Console.WriteLine(string.Format("The delegate call returned \n\n{0}\n\nstarting at {1} and

ending at {2} which takes a while of waiting.",
        returnedBits, starting, ending));

    _finished = false;
}

That gets us a baseline. If you run a synchronous call against anything with a console application or a windows app, WPF or whatever it will lock up the calling thread while it is waiting for a response. In any type of user interface that is unacceptable. One of the best options is to fire of an asynchronous callback. The way I did this, which is an ideal way to make calls with the Iron Foundry Client Library against a Cloud Foundry Environment, is shown below.

This is my asynchronous call.

public void DemoCall()
{
    Console.WriteLine("Callback:");
    var delegateMethod = new MethodDelegate(TheMethodToConnectThatWillTakeLongTime);

    var callbackDelegate = new AsyncCallback(MyAsyncCallback);

    Console.WriteLine(" starting...{0}", DateTime.Now.ToLongTimeString());
    delegateMethod.BeginInvoke(TheSecretBits.YourSecrets.Uri, callbackDelegate, delegateMethod);
    Console.WriteLine(" ending...{0}", DateTime.Now.ToLongTimeString());
}

Now the simple callback.

public void MyAsyncCallback(IAsyncResult ar)
{
    Console.WriteLine("Things happening, async state calling.");

    var delegateMethod = (MethodDelegate)ar.AsyncState;

    Console.WriteLine(" called...{0}", DateTime.Now.ToLongTimeString());

    var returnedBits = delegateMethod.EndInvoke(ar);

    Console.WriteLine(" end invoked...{0}", DateTime.Now.ToLongTimeString());

    foreach (Application application in returnedBits)
    {
        Console.WriteLine("Application {0} is in {1} state...",
            application.Name, application.State);
        Console.WriteLine(" with {0} running instances, {1} memory per instance, {2} disk allocated...",
            application.RunningInstances, application.Resources.Memory, application.Resources.Disk);
        Console.Write(" hosted at ");
        foreach (var uri in application.Uris)
        {
            Console.Write(uri + " ");
        }
        Console.WriteLine(".");
    }
}

That’ll get the call running on a parallel thread and when it is wrapped up it returns the data.

The User Interface Interaction Issue

This is all fine and dandy for the command console. But if you want to give control back to the UI thread in a UI application and make sure that the background thread can actually update a control when fired off, do the same thing as I’ve discussed here except set the control up to invoke the dispatcher, so that the “threads don’t cross” when trying to return information to a control that needs updated. In order to do this take the control that needs updated and set the Dispatcher Invoke method as shown below.

private void Write(string updateText)
{
    UpdatingTextBlock.Dispatcher.Invoke(
    System.Windows.Threading.DispatcherPriority.Normal,
        new Action(delegate
    {
        UpdatingTextBlock.Text += updateText;
    }
    ));
}

For more on the Iron Foundry Project and the library I’ve used here, check out the Iron Foundry Blog & Site. For more information on Thor and to follow or get involved check out the Thor Project Site (Hosted with Cloud Foundry at Tier 3!).

All of this code is available in my Github Project “Remembering” (https://github.com/Adron/Remembering). Feel free to fork it, share it, or send me corrections or pull requests.

Dan (he’s a good guy, check him out on Twitter @dturkenk), your “East Coast vs West Coast PaaS Psychology. And Why It Matters.” is great write up. Loved it! I’ve got to say, I’m pretty much in agreement with almost every single thing you’ve written here. Matter of fact I’m staunchly in agreement with a lot of it. There’s a few other abstractions I’d like to add, that makes the reality of east coast and west coast PaaS what it is, and why some of these things are like this.

You write,

“While the West Coast conception of PaaS is an appealing vision, (and may well be the answer for many smaller companies and start ups)…”

which I agree with whole heartedly. The fast, agile, and lean companies of tomorrow need this type of technology today. They can’t survive trying to throw together traditional environments. They need PaaS like people need food and water. However you also write on the end of that statement,

“it doesn’t really mesh with today’s enterprise reality.”

which I know is true, sometimes. There are however many enterprises out there that do indeed want to and are starting to move over completely. These enterprises see the value add and are not waiting around. They’re not going halfway with a hybrid solution, they’re moving full bore and realizing economies of scale that internal IT shops will not and cannot realize.

This type of enterprise, is where a lot of the west coast and east coast mentality is realized. There is a risk aversion on the east coast, rightfully so with such things as financial institutions and Government being a dominent presence on the east coast. On the west coast though, the enterprises operate under a very different cultural perspective, they attempt to realize the advantages – competitive and disruptive that they are – of startups and small business. It’s as much a competitive survival for the west coast enterprise as it is for the startups and small business. Thus, we get some of the differentiators not just in technology, but in the enterprises themselves. This is the core of this psychological difference, not something that was born from a PaaS psychology, but for the ore business itself. Being that PaaS technology and its origins are from the west coast, it becomes obvious why most are focused on public or privately accessible public infrastructure.

Overall, the culture expands into all those sectors in the east and west, and starts to stand out when we look at different approaches to doing business and competing. Regardless of these minor differences and the associated differences in doing business, we both agree on one thing regardless of which coast we’re on.

The applications and application developers is where the value is for enterprises, mid-size, and small businesses, and startups.

Without doubt, PaaS technology is focused on that core value. Enabling developers to build applications in an easier, faster, scalable and more reliable way. So far, all the platforms are doing a damn good job helping us developers do just that.

Tuesday night, as usual ended with great technical conversation at Bailey’s Taproom. Bailey’s is basically the epicenter of the Portland tech scene. Almost every programmer, devops, or technical person either goes about once a month or has this establishment as a regular watering hole! It’s great, the atmosphere is chill, the beer is SUPERB, the beer menu kicks ass (see: Beer Dashboard Kick’s Ass) and the list of fun cool things just continues on and on.

This week of course OSCON adds a little spice to the regular roll call at Bailey’s. There were a number of conversations that broke out, which I’ve broken out the key topics below:

vert.x => To summarize as is written on the site itself, “Write your application components in JavaScript, Ruby, Groovy or Java. Or mix and match several programming languages in a single application. Create real, scalable applications in just a few lines of code. No sprawling xml config. Scale using messaging passing and immutable shared data to efficiently utilise your server cores. Super-simple concurrency model frees you from the hassles of traditional multi-threaded programming.

Here’s an example from the site in a few of the languages:

Java

import org.vertx.java.core.Handler;
import org.vertx.java.core.http.HttpServerRequest;
import org.vertx.java.deploy.Verticle;

public class Server extends Verticle {
    public void start() {
        vertx.createHttpServer().requestHandler(new Handler() {
            public void handle(HttpServerRequest req) {
                String file = req.path.equals("/") ? "index.html" : req.path;
                req.response.sendFile("webroot/" + file);
            }
        }).listen(8080);
    }
}

JavaScript

load('vertx.js')

vertx.createHttpServer().requestHandler(function(req) {
    var file = req.path === '/' ? 'index.html' : req.path;
    req.response.sendFile('webroot/' + file);
}).listen(8080)

Ruby

require "vertx"

Vertx::HttpServer.new.request_handler do |req|
    file = req.uri == "/" ? "index.html" : req.uri
    req.response.send_file "webroot/#{file}"
end.listen(8080)

Wednesday Roughness

I felt beat up a bit start Wednesday, but rolled into it after a short while. Needless to say, the intensity of conversations (and maybe a few of those rounds of beer) and number of ideas, new things to check out and fitting it all in can wear one out.

The morning sessions were solid, I attended most of “Comparing Open Source Private Cloud Platforms“. Lance did a solid job of laying out the tooling, virtualization software and where these things come together to form a number of OSS options for cloud computing. Check out more from Lance on his @ramereth, his blog Lance Albertson, or check out his band he’s in “The Infallible Collective“.

Wednesday, Thursday and Friday Meets

I met a ton of people. All of whom I must say, I hope to get to talk to again, work with on projects, or just sling some code sometime. Absolutely great people, friendly, intelligent and highly motivated. Some of these people I met included:

Andy Piper (@andypiper) – Part of Great Britain’s contingent of VMware Cloud Foundry advocates and such. We got to hang out and talk about a zillion different topics at a number of events. Andy was kind enough to show me a few tips and tricks he’s been using with Cloud Foundry, the VMC, and in general working with the platform.

Josh Long (@starbuxman) – I met Josh once before on the Cloud Foundry open tour, where he brought COBOL programming… oh no wait, he brought some great Sprint Java samples and such to demo on the Cloud Foundry Platform. I fulfilled Josh’s dreams by telling him that COBOL, could indeed run on Cloud Foundry thanks to the .NET capabilities of Iron Foundry! (ya know, if anybody is into that type of thing)

Erica Brescia (@ericabrescia) – I finally got to meet Erica in person, after chit chatting on Twitter about all the great applications her company Bitnami helps to deploy in the cloud. There are some really great deployment hosting solutions from them, check them out if you’re looking for some streamlined deployment practices. She also mentioned I need to meet…

Jono Bacon (@jonobacon) – I managed to meet Jono by randomness. He’s, well, let’s say he does some absolutely great work in the tech industry for Canonical and in the open source universe. In addition Jono has some superb tastes in music.  \m/  \m/  Check out some of his work:  Blog, personal site, and you can probably google him too. Do it, he’s got a lot of great material out there.

As I was saying, these aren’t the only people that I met. To all those people I didn’t mention, it was awesome hanging out, catching up and hearing about what everyone is working on and creating.

PaaS, IaaS and The Driving Open Source Coders

On the topic of PaaS, it continues to expand into new realms of publicly (or privately) run services. PaaS is quickly expanding past mere framework services around .NET, PHP, Rails, Sinatra and such and moving into the realm of databases, services buses, and other capabilities as a service. As laid out with the SOA mindset. Even though enterprises failed to bring SOAP to an effective worldwide use, RESTful services are expanding rapidly. *aaS is pushing those even further, to do what the enterprise had wanted but failed to do. Creating a universal acceptance of scalable, powerful, expandable and extensible services through APIs.

As more services are extended we’ll start seeing a lot of offerings around truly scalable databases with various feature sets around those databases offered as a key service. Examples would include “atomic database as a service”, “transactional data store as a service”, or “document store as a service”. In the end it will include the amount of usefulness for the services while eliminating a need to know each in intimate detail. Knowing the core capabilities of an option and just using the service will grossly outpace the attempt to implement these services internally.

So keep watching PaaS to grow in many various ways. Consuming the service being the driver over attempting to build the service. Of course, if the service doesn’t exist, get on that it’s business opportunity!

Random OSCON Diversions

I had a great time visiting with family while at OSCON also. To whom they all send a hello and horns up, thrash on salute to the coders of the world!

Voodoo Donut Break with Florida Family Contingent

Voodoo Donut Break with Florida Family Contingent.

My brother Adam, the IT Department

My brother Adam, the IT Department

My Brother Runs an IT Shop of One…

…thanks to cloud computing capabilities.

This kind of blew my mind. I sort of of knew what he did, but it didn’t hit me how close our professional lives are until this trip. He’s just recently moved several hundred miles away from the main office, but still manages the entire company.

One of the unique happenstances is, my brother (the guy next to the bald guy that is me, he’s wearing a Tesla t-shirt) is the top IT guy for a little billion dollar a year company. Which, in this case, he’s proven the power of cloud computing. Why do I say this? Because traditionally this organization would have needed an army of PC techs, network knob fiddlers, and such. But with the advantages of cloud computing, both on premise and off premise, and have a DevOps Guy that knows what he’s doing they are able to efficiently run their entire company with one single guy.

Needless to say, with the synergy of OSCON we had more than a few conversations around tech. Some of those included the replacement of PCs with mobile devices, such as iPads or smart phones. Another was the mix of on-premise data that couldn’t easily be transferred or utilized form cloud services. These are just a few fo the things that have helped him to run the show, the entire show.

Summary

OSCON was awesome. Next time I will be taking off a day or two before and a day or two afterwards so that I can do an even more elaborate write up of the event. My aim is to have interviews, video and otherwise, and really step it up in relation to providing an eye into the event from a developer’s point of view.

OSCON 2012 Opening Doors

OSCON 2012 Opening Doors

Today kicked off with a monster Reggie Biscuit from Pine State Biscuits. If you live in Portland or are visiting just for the conference and like soul food of the tastiest nature, check it out.

My first day ended up not as planned. Instead of attending sessions I ended up meeting a number of people and discussing the future of Cloud Foundry, where it is headed and in general, the direction of PaaS Technologies. I met Andy Piper (@andypiper) and Raja Rao (@rajaraodv) and discussed Node.js and Cloud Foundry specifically. We then dove into trying out some of the CLI features in the latest VMC builds.

After that I met Mark Atwood for a brief few moments. As always, Mark’s a friendly guy, and might I add pretty smart too. I’ve enjoyed our conversations in the past during the AWS Meetups in Seattle too. He’s always got interesting thoughts and perspectives on open source, linux and now on PaaS Technology too. Ya see, Mark has become the Red Hat OpenShift Advocate. It’s a perfect fit, as Mark loves this stuff!

Ignite!  ….or Bailey’s for more tech talk and #nodejs discussions.

After all of this I almost, and had planned, to attend the Ignite Presentations after OSCON, but instead ended up heading over to talk with some Node.js & JavaScript Coders about some of our latest efforts around getting concrete performance benchmarks for Node.js and some of the various libraries in use.

That brings us to Tuesday…

Tuesday brought forth a super busy, exciting and educational day. I headed straight to OSCON for the OpenShift Workshop with Mark Atwood & Krishna Raman (Mark’s Twitter is @fallenpegasus). The session was great and they hit on a lot of hugely important topics. Let’s go through each of these real quick, as this is where more than just the tech bits were involved.

OpenShift is Truly Open Source Software

Mark & Krishna made a strong point to outline and show how and why OpenShift is open source. For instance, they are following the original precepts of a particular guy named Stallman (http://stallman.org/ if you’re unfamiliar with Richard, he’s the guy who got GNU happening and a major originating advocate of open source software). Mark pointed out that Red Hat is open to keeping the governance of the project completely open, would even cede it to another governance entity when it grows beyond just Red Hat, and they intend to keep all the communication very open and public, as intended with open source projects.

Another thing that Mark and Krishna pointed out, was that the software is on github, and not just in a psuedo “read-only” state, but in an actively useful way, with interactions and tracking on github. The point being that there is no hidden processing of the code or private repositories of code. What you see is what you get in this regard. In addition all of the code that is available, is the exact code that Red Hat is using to actually host the OpenShift PaaS that they provide for testing and demoes. Simply, it is all there available in a completely open, contribution based, interactive, and publicly accessible way.

So far this is even more evident if you do a google search or even trace the twitter activity. They definitely have the search engines working in their favor with all of that searchable content publicly available.

Cloud Foundry & OpenShift

I’m still a huge Cloud Foundry fan, the team and effort and product is getting to be in pretty solid shape. However OpenShift is definitely here to provide some competitive interest. In the end, I’m a fan of PaaS Technology and what it can do for software developers and what we’re trying to achieve on a daily basis. The potential of PaaS to improve, dramatically, the software development lifecycle while reducing the overhead cost is pretty huge. The key is, people have to be aware of and start utilizing the technology well. Just implementing it and saying “I have PaaS” is one thing, but improving your software development process to use PaaS technologies well is where the seriously powerful advantage is.

I’m looking forward to seeing the market unfold and start making progress with these technologies. On that note, day #1 and #2 are finished for me. Cheers!

Metal Cactus

Just another WordPress.com weblog

ChaniBlog

Code, cooking, and randomness.

plain old objects

the building blocks of software

midnight mystery ride

at midnight, we ride.

Riding on Roadways

Writing on Riding on Roadways

Not Rich Yet

It's going to happen. Gotta find something to do until then.

craftedincarhartt

Carhartt Women's Blog

heydev

For the love of code

Nathan Evans' Nemesis of the Moment

My nemesis of the moment

Open Source Bridge: Presentation Proposals

Snippets, software architecture, lean, agile, management, and leadership bits.

Captured Refractions

A collection of my latest adventures, past reflections and other photos.

for the love of Nike

for the love of Nike

The Cloud Dev

Developing {for/ on/ the} Cloud...

Project Manager in a Cloudy IT World

Thoughts, comments and ideas from experiences as a Project Manager in IT

iBikeuBike

If I can bike... So can you!

MAX FAQs

Portland Light Rail

UX Success

User Experience Design, Agile Development, Lean UX, Start Up

The lost outpost

a weblog by Andy Piper about technology, photography, and life

SaintGimp

Agile development, software craftsmanship, continuous improvement - Eric Lee's blog

Clang and Clamour

pardon the construction noises while we build the internet

Follow

Get every new post delivered to your Inbox.

Join 5,548 other followers

%d bloggers like this: