Friday, July 23, 2010

Multi-Tenant SOA Middleware for Cloud Computing

Following are the slides for my talk on WSO2 carbon multi-tenancy architecture at Cloud 2010, two weeks back. The paper describes the WSO2 Statos multi-tenancy Architecture .

Multi-Tenant SOA Middleware for Cloud Computing


The full paper can be found here. The citation of the paper is given below.
Afkham Azeez, Srinath Perera, Dimuthu Gamage, Ruwan Linton,  Prabath Siriwardana, Dimuthu Leelaratne, Sanjiva Weerawarana, Paul Fremantle, "Multi-Tenant SOA Middleware for Cloud Computing" 3rd International Conference on Cloud Computing, Florida, 2010.
Abstract
Enterprise IT infrastructure incurs many costs ranging from hardware costs and software  licenses/maintenance costs to the costs of monitoring, managing, and maintaining IT infrastructure. The recent advent of cloud computing offers some tangible prospects of reducing some of those costs; however, abstractions provided by cloud computing are often inadequate to provide major cost savings across the IT infrastructure life-cycle. Multi-tenancy, which allows a single application to emulate multiple application instances, has been proposed as a solution to this problem. By sharing one application across many tenants, multi-tenancy attempts to replace many small application instances with one or few large instances thus bringing down the overall cost of IT infrastructure. In this paper, we present an architecture for achieving multi-tenancy at the SOA level, which enables users to run their services and other SOA artifacts in a multi-tenant SOA framework as well as provides an environment to build multi-tenant applications. We discuss architecture, design decisions, and problems encountered, together with potential solutions when applicable. Primary contributions of this paper are motivating multitenancy, and the design and implementation of a multitenant SOA platform which allows users to run their current applications in a multi-tenant environment with minimal or no modifications.

Tuesday, July 13, 2010

Towards Improved Data Dissemination of Publish-Subscribe Systems

Last week I presented the paper Towards Improved Data Dissemination of Publish-Subscribe Systems at ICWS 2010. It is based on work done with Rmaith and Dinesh on improving WS-Messenger from Indiana as a part of Open Grid Computing Environment Project.

Abstract: with the proliferation of internet technologies, publish/subscribe systems have gained wide usage as a middleware. However for this model, catering large number of publishers and subscribers while retaining acceptable performance is still a challenge. Therefore, this paper presents two parallelization strategies to improve message delivery of such systems. Furthermore, we discuss other techniques which can be adopted to increase the performance of the middleware. Finally, we conclude with an empirical study, which establishes the comparative merit of those two parallelization strategies in contrast to serial implementations.

Mainly it discusses how to implement parallel message delivery in a Pub/Sub broker while keeping the partial order of events. Slides are given below.

Wednesday, June 9, 2010

Amazon and 11 nines

Amazon has claimed 11 nines on Availability . It is very very hard feast to accomplish, and if they have done it (I would love to know how they decided on that number), that is a ground breaking achievement.

To see why, lets see what it means. Availability is measured as MTTR (Mean time to Recovery)/ MTTF (Mean time to Failure) as a percentage. In other words, it is time to recover after a failure, divided by mean time for such a failure happen. Reliability is measured in terms of number of nines in availability. So Amazon S3 will be fail for a second only for every 10^9 seconds, or 10^9/(360*24*60*60) = 32 years!!

On their seminal paper "High Availability Computer Systems", Jim Gary and Daniel Siewiorek defined availability classes, as follows

unmanaged 90.% - 50,000 mins/year downtime
managed 99.% - 5,000 mins/year downtime
well-managed 99.9% - 500 mins/year downtime
fault-tolerant 99.99% - 50 mins/year downtime
high-availability 99.999% - 5 mins/year downtime
very-high-availability 99.9999% - .5 mins/year downtime
ultra-availability 99.99999% - .05 mins/year downtime

As you will notice even they defined only 7 nines. So we do not have a name to call what Amazon has claimed.


Tuesday, June 1, 2010

WSO2 Stratos Services Released

WSO2 Stratos, which offers WSO2 SOA platform as a service, is now live, up and running. Stratos opens up a new deployment choice for our servers, by enabling them have their servers as a Service. For example, if a user need a Governance Registry, he had to either run it real hardware, run it through a Virtual Machine, or run it through Cloud. Now, there is a forth option: that is get it as a service through WSO2 Stratos. Of course there is much more to Stratos, see http://wso2.com/cloud/stratos/ and The Six Weeks and 12 People Magic for some more details.

You can find it from https://cloud.wso2.com/., and you can try it for free.



Saturday, May 29, 2010

E-Science: What and Why?

E-Science facilitates scientific research by applications of Computer Science. Although it has roots in High Performance Computing and Super Computing, which focus on number crunching, it has evolved to a general role in last few years. Since last few years, E-Science has appeared in the spotlight and has attracted significant amount of funds and able to attract researchers likes of Jim Gray.

Years ago the role of computing in Research was number crunching and help scientists to keep track of their data. However, now computing has become an indistinguishable part of scientific research, and almost all research disciplines have major dependencies on Computer Science. Let us briefly look at some of those areas and reasons why computers play such an integral role in sciences.

Science said to be stand on two pillars: empirical methods and analytical methods. In the first, scientists uses data collected over sufficient period of time to find new trends and patterns of the nature. In the second, based on formal models of world and current knowledge, they try to derive new results through formal logic. More often than not, these two methods have been used in tandem, one helping the other. However, with the advent of computers, a third pillar--computations-- has arrived. Since many results derived from empirical and analytical results do not have closed from answers, scientists often solve such problems through simulations. For example, PDEs (partial Deferential Equations), which often resulting from many real life calculations, often do not have a closed from answers. Therefore, they had to be solved through numerical analysis. For example, the state of art weather models predict weather by simulating a model rather than solving them. There are such examples in all filed of engineering and physical sciences. This aspect covers most hpc use cases of E-Science.

On the other hand, most of scientific calculations are easily beyond single computers. For an example, high resolution weather predations can easily use 1000 CPUs, and space telescopes can easily generate tera bytes of data in relatively short time. Handling such problems require multiple computers and distributed system knowledge. Also, building efficient solutions and exploiting the parallel nature need high performance computing (HPC) and Parallel computing.

Furthermore, the reliance of computer science has forced scientists and graduate students from Sciences to learn computer science. Although some of those scientists have made significant contributions to computer science, often that is road block for many scientists to adopt IT in the fullest extent in their research. Consequently, making computing transparent, or in other words, building tools that allow scientists to perform sciences with minimal Computer knowledge, is another interesting challenge being tackled by e-science.

Moreover, efficient scientific research requires a high level of communications and collaboration among scientists. Although IT plays a significant role in that arena even now, there is a greater potential role which it can play. For example, IT has greatly simplified dissemination of scientific research, and has significantly reduce the time and effort required to conduct a literature survey. However, we still lack infrastructure to collaborate in ongoing basis, which allow scientists to collaboratively perform large experiments. More an more grand challenges require collaboration across multiple disciplines, and that increases the importance of such collaborations and consequently the importance of tools to enable such collaborations.

Finally, given the reduced cost of sensors and ubiquity of information technology, there are vast amount of data available to a researcher from the natural world. However, one of the challenges of our time is to learn how to make sense of that data, which is more or less the goal of science itself. In the world we live in, it is much easier to obtain data, but it is much harder to make sense of that data. Therefore, computer science can play a major role in enabling and streamlining the process of getting from data to knowledge, which include collecting raw data, generating meta data, archiving, searching, visualizing, generate information by processing, deriving knowledge from information, and preserving data for the future.

Current E-science includes traditional computational topics like Building Super computing, High Performance computing, Parallel programming, multi core and GPU programming, as well as more general topics like data intensive computing, processing systems like workflow systems, and large scale data storage systems. In general, E-Science tries to facilitate scientific discovery through applications of computer science, and it tries to do that in transparent manner as possible hiding details about CS as much as possible from the end users.

Given the significant interested by system researchers to in E-Science, it is interesting to inquire the reasons. The answer is two fold. On one hand, the amount funding available to pure computer science has greatly reduced, while the funding allocated for national wide cyberinfrastructures has greatly increased. On the other hand, E-Science brings in to focus very large scales, in terms of both computations and data. The resulting problems are challenging even to computer scientists, and the tools and systems we have are often inadequate handle such problems. Therefore, E-Science has continue to push boundaries of computer science.

There are multiple E-Science initiates both at U.S., as well as UK and Europe, each receiving millions of dollars and attracting top scientists. Furthermore, Microsoft research has made significant investments and have a major presence in E-Science. Furthermore, IEEE E-Science Conference will be holding its 6th annual conference this year. Among some of the venues are Annual IEEE E-Science Conference, Annual Super Computing Conference, Annual Teragrid conference, and Annual Microsoft E-Science workshop.

To summarize, computing has the potential to facilitate conduct of scientific research enabling humans to take giant leaps, and the E-Science is a filed of study whose goal is to make that a reality. It has attracted scientists from both sciences and computer science, has receives millions of dollars in funding, and currently running many multi-disciplinary research projects to build next generation research infrastructure.




Friday, May 28, 2010

Paul on getting maximum out of Cloud:Cloud Native

Paul has written a nice blog on cloud nativity.

Well what is it? When a new technology come around, you can use it, but it is possible that you are only using it to handle your old usecase. Often, new technologies comes with new strengths and powerful features. To get best out of it, you should be using all its strengths, not just implementing your old scenario.

Lets try to be concrete. With cloud, you can move your apps to the cloud, and you might get some benefits through economic's of scale as your computing provider might be able to give you computing power cheaper than you running your servers. But still there may be lot of other potential benefits of the cloud you are not getting, like elasticity etc. It is like, if I buy a iPhone and only use it to make calls, even though it is cools and it covers my old usecase---making calls---I am getting only 10% of what iPhone can give me. So in the same way, if you are going to use the cloud, you have to look beyond your current usecase and be aware of wonderful new scenarios cloud can enable. On the flip side, if you go around telling "I brought a iPhone, but call quality is the same", obviously you are off the mark by a lot.

On his blog Paul is trying to define some of features required by middleware if it is to exact the best out of cloud on your behalf. They are Distributed / dynamically wired, Elastic, Multi-tenant, Self-service, Granularly metered and billed, and Incrementally deployed and tested. Refer to Paul's blog for more details.