Use Case: Cross-organizational collaboration

The general idea

Cross organizational collaboration

Every organisation has to collaborate with others (suppliers, vendors, partners, customers, …) in order to be successful in todays global economy. This leads to the emergence of cross organizational business processes that need to be implemented by the different participants in the value chain. Several problems arise when trying to automate these business processes.

Either every participant automates its part of the process and the different pieces are integrate with one another afterwards. This leads to significant implementation time and associated costs, as every participant will do this at different schedules. Furthermore there is a serious loss in business agility, as for every change to the process multiple participants need to change their part of the automation.

Alternatively, one of the participants could be choosen to automate the entire process, but this leads to another slew of problems. Who will pay who?, whos is dependent on who?, what kind of guarantees does your company get? Now think about it, would you like your company to be directly dependent of a specific supplier or customer? Guess not…

Why is cloud a good solution?

Cloud computing is a good solution for this problem because it is ‘Neutral Ground’, none of the participants is solely responsible for implementing or hosting it, while at the same time every participant can provide it’s own details, or customizations, to the implementation.

What cloud offering do you need?

For ad-hoc collaborations or small automated processes the partners could use an online collaboration platform like Office 365 (former BPOS) in order to quickly set up an environment. This is especially useful when occasionally collaborating on tenders and the like.

For more complicated scenario’s, where different systems from various partners need to be brought together in order to implement end to end business processes accross the entire value chain, one should look at BPMaas vendors (like cordys.com, or ibm blueworks). Microsoft used to have such an bpm engine as well in the Azure AppFabric during the beta timeframe, but I’m not sure what today’s status is?

And obviously a platform as a service, like Azure, will prove it’s value here as well in order to implement custom business logic that is not specific to any of the partners.

Use Case : Development Environment On Demand

The general idea

Development teams need quite a lot of infrastructure in order to get their work done. They need source control systems, build systems, servers to assist them in tracking requirements and realised value, machinery for testing purposes and quality assurance, for performing proof of concepts or just as a training environment for the users of the software.

In the majority of the cases getting all of these resources in place before they are required in the development cycle can be quite a challenge,  purchasing the hardware consumes quite a lot of a project’s budget and procurement of it is often quite slow. Especially if the project is rather quite short, many project managers will not consider it an option to set up much of an environment because it weighs so heavily on their budget or the project’s delivery schedule suffers from it.

Why is cloud a good solution?

It turns out that even though development teams need quite a lot of different servers in their daily job, they only use the hardware for pretty small amounts of time.

First of all, the machines are only needed during the length of the project, which may be as small as a few months or even weeks. Furthermore, the machines are only utilized during working hours, I consider 16 hours a day to be the maximum if the team has a flexible schedule otherwise it’s probably even less. Besides that, team members aren’t doing the same job all of the time. Early in the project coding activities may be more abundant and there will be more need for source control systems and build servers than that there will be a need for testing resources for example. Further on in the project the need shifts away from these development oriented systems towards more test and quality assurance infrastructure.

Furthermore, different types of projects need different kinds of development components (like sql server, sharepoint, biztalk, etc..) depending on the architecture of the solution. Finally some resources are only used for a few hours, when you want to do a proof of concept to proof that the system scales out to a few hundred of machines for example?

So as you can clearly see, the development environment’s resources have very different usage patterns, and that is exactly where cloud computing fits in.  Cloud allows you to manage computing resources in a flexible way while you only pay for the resources effectively used.

What cloud offering do you need?

In order to set up a development environment such as described above, you need a public ‘Infrastructure As A Service’ offering where you can install and start virtual machines on demand. Examples of such offerings today are Amazon EC2, IBM’s Smart Business Development And Test Cloud, FlexiScale, GoGrid, and probably many more that I just don’t know about yet…  Microsoft has also announced, at PDC last year, that it will include this capability in it’s Azure offering, but today it isn’t available yet.

Cost Model

Now you probably wonder, what will it cost me to set up such an environment? Well that depends on your needs obviously, but let’s make a quick scenario to show you what it would cost for a small to mediums sized team with a common development environment based on Amazon’s Ec2

Imagine a development team of about 15 people delivering a product in a 6 months timeframe.

They would probably require 1 source control server to manage the created artifacts. In my view this server would have to be a ‘Large Instance’ type of machine which is used during the working hours, so that would cost about $0.48/h * 8h * 130 days = $499,2

In order to perform their builds a continuous integration approach works best in my view as the machines need to be available only when the team is operational: In order to handle the load I would probably foresee 2 continuous integration servers of the ‘Small Instance’ type. This would cost about $0.12/h * 2 * 8h * 130 days = $249,6

In order to perform integration tests of the different components of the system they will probably need something along the line of 2 development integration servers which can probably be small instances. However these machines are only required on average 1 or 2 days per week. So it would cost something in the lines of $0.12/h * 2 * 8h *  52 days = $99,84. Note :these 2 days could be spread out over the entire week when the integration tests are automated as a part of the build process, it would cost about the same if the build process turns of the instances after the tests have run.

When the developers have tested the integration of the components, the software is usually tested for functional completeness by the functional testing team. These team members aren’t performing tests all of the time either, most of their time goes to defining tests, documenting them, creating reports from the results etc. So I estimate their resource usage on about 3 days a week, for about half of the projects lifespan, which would result in $0.12/h * 2 * 8h * 39 days = $74,88

Besides the testing environments, the team usually needs a system that looks quite similar to the production environment in order to perform stress and load tests for example, or to delivery end user training etc. This environment is usually only used a couple of weeks, let’s say 4, per project. But the hardware has to resemble the production hardware, so this will probably become extra large instances, resulting in $0.96 * 2 * 8h * 20 days = $307,2

For the total sum of $1230,72, the price of about half a physical mid-range server, you could have a full development environment for a small to medium sized project. So next time you need to define a budget for a development project, think cloud !

Use cases

Cloud computing has so many different use cases, and quite a lot of those are so convenient that you probably haven’t thought of them :), therefore I decided to set up a series of blog posts in which I try to explain how the cloud can be used to improve our day to day life.

For each use case I will cover the general idea of the case, why cloud is a good solution for it, which cloud models and components you need to realize it, and what a possible cost model could be.

I can allready reveal one specific detail though, one that can be considered a general rule for all of the use cases: If you require a variable amount of computing resources over time, than cloud is the way to go!

Follow

Get every new post delivered to your Inbox.