OK, this is by no ways a very informed answer and it's not particularly my field... but during the Customer Test Program phase of Microsoft Azure coming into being I created an account and had a play. During that time I could immediately see some obvious applications, and recently when I was looking at actual enterprises that have gone with Azure some were very much along the lines of what had gone through my mind. By the way, why Azure and not some other solution would almost certainly have to do with whether ones's business was already aligned to MS technologies, such as .NET development. Writing apps for Azure is not significantly different to writing any other .NET applications.
One application for example was an event ticketing site (if that is the right term.. ticketing of sports events, concerts etc).
That specific application has certain aspects that might suggest the cloud as a very cost-effective solution. It is likely idle for much of the time, but could have extreme demands at others... thousands of people trying to snap up concert tickets in a few minutes. To maintain one's own infrastructure to support this application would not be trivial! And it's definitely not something that you plop onto a typical web-hosting site, it would break in a minute flat. But the underlying Azure platform takes care of the scaling of that workload (e.g. creating new VM instances for large volumes of workflows), and the cost is basically "pay for what you use". Your infrastructure cost is, crudely speaking, proportionate to use (and we presume that during that use you are making money).
Without getting into it, I was also intrigued by the service bus component of Azure. Again, pretty crude playing, but it seemed relatively easy to host aplications on my machine that were exposing WCF service endpoints on the worldwide web (Azure) to other networks. I could immediately think of some possibilities for "out of the box" apps communicating with other business entities.. perhaps exchanging EDI documents as an example. Of course there would be other ways of doing that, but I could see some definite uses for Azure to (I think) greatly simplify some things. Remember, I am a .NET developer so Azure made sense to me. I doubt that what they offer is really unique, it is MS particular cloud solution.
This is just one example, and I have not really defined "what is the cloud?" to which you will get a million different answers. Whether an application is suited to cloud hosting gets down to a lot of factors and would require a great deal of analysis and cost analysis.
And like you, I have really only investigated this stuff a bit... you would probably get a thousand conflicting opinions and many of them by more informed people. But I think platforms such as Azure definitely have their place.
I have my own feelings on the Cloud computing movement, but I have to earnestly research it as a fiscally pleasing alternative to a hardware purchase needed for a large database solution I am developing. Amazon's AWS is the suggested service.
After researching the pricing of the service, it appears that it may quickly become costly for a server that must remain up 24/7/365 and is constantly updated in batches of 10-100k rows per second. The kicker is that this database server is for internal use only so if we hosted it in our network, it would not increase our in/outbound bandwidth, however if hosted in the cloud, it would, and we would also get charged for this from AWS's side.
According to their site, storage costs are:
Amazon EBS Volumes
• $0.10 per GB-month of provisioned storage
• $0.10 per 1 million I/O requests
While data transfers are:
Data Transfer In US EU Regions APAC Region
All Data Transfer $0.10 per GB $0.10 per GB
Data Transfer Out US EU Regions APAC Region
First 1 GB per Month $0.00 per GB $0.00 per GB
Up to 10 TB per Month $0.15 per GB $0.19 per GB
Next 40 TB per Month $0.11 per GB $0.15 per GB
Next 100 TB per Month $0.09 per GB $0.13 per GB
Over 150 TB per Month $0.08 per GB $0.12 per GB
Also, I won't be able to accurately estimate volume usage, IO's or data transfers until the system were to go into production. However, it can't go into production until I have chosen a hardware solution. The cloud's pricing system is making it more difficult because I could end up racking up huge bills once it goes prod.
My question is: Is it possible to make the decision to go with a cloud service for a new system? Or is it only viable for systems where X, Y and Z are known? And if this is the case, why not just stay with the current physical hardware?
Azure is based on Windows, so you can write applications in the same programming languages you’ve used for Windows apps: Visual Basic, C++, C#, etc. You can also use familiar tools such as Visual Studio, along with ASP.NET and other familiar Windows technologies. This makes it easy for organizations to find developers who already have the skills to create applications for the Azure platform. And because the Azure environment is much like the standard Windows environment, it’s easier to create a cloud version of an existing Windows application.
2: 64-bit Windows VMs
Applications running on Azure run in virtual machines, with each instance of the app running in its own VM on the 64-bit Windows Server 2008 operating system. The hypervisor on which they run is designed specifically for the cloud. You don’t have to supply your own VMs or deal with managing and maintaining the OS because apps are developed using Web role instances or worker role instances that run in their own VMs. The apps interoperate with other Azure components through a Windows Azure agent that runs in each VM. With Azure, you can focus on the code and don’t have to worry about the hardware.
3: Azure SDK
Microsoft provides the Windows Azure software development kit (SDK), which includes a version of the Azure environment you can run on your own computer. It’s called the Windows Azure Development Fabric, and it includes the Azure agent and storage. You can work locally when developing and debugging an application and then move it to the cloud. You can download the tools for Vista Studio 2008 and 2010, along with the SDK, from Microsoft.
4: Scalability and flexibility
Using Azure, you can easily create applications that run reliably and scale from 10 to 10 thousand or even 10 million users — without any additional coding. Azure Storage provides scalable, secure, performance-efficient storage services in the cloud.
After you create a Web app, you can specify the number of processors for the application to use. If the application needs to scale up to meet growing demand, it’s easy to change the settings to use more processors. The “pay as you go/pay as you grow” approach lets you bring your new apps to market sooner and respond more quickly to changes in your customers’ needs.
5: Cost benefits and pricing model
Taking advantage of resources in the cloud allows you to decrease your costs for building and expanding your on-premises resources. You can also reduce the cost of IT administration because the hardware is being taken care of for you, off-premises. The cost of creating, testing, debugging, and distributing Web-based applications goes down because you have to pay only for the computer processing time and storage space you need at a given time.
Windows Azure pricing will be based on consumption, with a per-hour fee that’s dependent on the size of the instance for Azure computing services and per-month or per-transaction fees for Azure storage services based on data size. For pricing details, see the Microsoft Web site.
6: Data center in the cloud
SQL Azure provides organizations with all the benefits of an enterprise-class data center without the hassle, headaches, and cost of maintaining such an entity. You get high availability and reliability with redundant copies of your data and automatic failover. No more worries about backing up data yourself.
It’s a relational database model that stores data in the same manner as SQL Server (tables, indexes, views) and thus will be familiar to Windows DBAs, but your SQL Azure Server is spread across multiple physical computers for more flexibility. For information about the differences between SQL Azure and SQL Server, see Similarities and Differences - SQL Azure vs. SQL Server.
7: Support resources
Because Azure uses the same familiar tools and technologies as other Windows platforms, you can take advantage of the well-established support structure within Microsoft and company-provided resources, such as TechNet and MSDN, along with the huge ecosystem of Windows developers outside the company. There will always be someone to turn to when you have questions or problems.
With Azure, you can develop hybrid applications that allow your on-premises applications to use cloud services, such as the cloud database and storage services. Communications services work between on-premises applications and the cloud, as well as mobile devices.
Azure supports open standards and Internet protocols, such as HTTP, XML, SOAP, and REST. There are SDKs for Java, PHP, and Ruby, for applications written in those languages, and Azure tools for Eclipse.
Knowing that security is one of the biggest concerns for companies considering a move to the cloud, Microsoft designed Azure with security in mind. The .NET Access Control Service provides a way to integrate identities, and Security Assertion Markup Language (SAML) tokens are used by applications to determine whether a user is allowed access. Microsoft has designed its compliance framework to meet regulatory requirements. For more details, see my article Microsoft Azure: Security in the Cloud.
10: Something for everyone
Windows Azure can benefit hosting providers, ISVs, systems integrators, and custom software developers. Hosting providers can expand their services to areas where they don’t have existing infrastructure and add new services without more infrastructure investment. ISVs can use Azure to create, deploy, and manage Web apps and SaaS without large capital expenditures, and they can scale those applications more quickly and cost effectively. Systems integrators can take advantage of Azure’s ability to work with existing on-premise infrastructures. Custom software developers can create software solutions for customers who can’t afford the costs of in-house development, including hardware costs, and they can deliver their applications to customers as services without building and maintaining an expensive data center.
I'm having real difficulty figuring out whether this is the next big thing or the next big flash in the pan. I'm also unclear on the (nebulous you might say...) concept, papers on the subject don't really carify it for me.
My questions are specifically:
Software as Service: How is this really different from a well designed SOA archtecture over, say, WCF, other than where the code runs
Who owns the code?
Who writes the code?
Where does your code reside and how do you test it? How "transportable" is the code?
Are you locked into a vendor? If so, the dangers this raises surely outweigh than any efficiency gains you might find.
How are security concerns addressed?
Is this really different than outsourcing a company's hardware function (other than the frameworks involved?)
# Software as Service: How is this really different from a well designed SOA archtecture over, say, WCF, other than where the code runs
# Who owns the code?
# Who writes the code?
# Where does your code reside and how do you test it? How "transportable" is the code?
# Are you locked into a vendor? If so, the dangers this raises surely outweigh than any efficiency gains you might find.
# How are security concerns addressed?
# Is this really different than outsourcing a company's hardware function (other than the frameworks involved?)
I don't think it is.
On Microsoft Servers as I understand it. Published I believe via VS2010.
Not very well last time I read about it. They're addressing it, but it still needs work.
I don't think it is. The idea is that Microsoft takes care of all that stuff for you. You buy the level of service you need and the number of instances you want. It gets very contractual. Think their licensing agreements.
I've stayed away from it for the time being because I can't see any sizable company wanting to allow Microsoft to have control and hostage taking power over their data and livelihood. It sounds like a real downer.
That's called seagull management (or sometimes pigeon management)... Fly in, flap your arms and squawk a lot, crap all over everything and fly out again... by _Damian S_
Thanks for the reply, after one week, an answer! This isn't meant as a criticism of you, it just screams volumes about the amount of work going on in the cloud I think.
People keep screaming "next big thing" on the cloud, but when I look at it, the security concerns and the "ransom effect" will prevent business such as banks (who tend to be the drivers on such things) from ever using it. I hadn't considered Miscrosoft's Byzantine pricing structure, even for something as "simple" as VS2010 we had to get an external consultancy in to find the best deal for our company.Their cloud pricing must be horrific. Some people are really fired up about this, and I've been wrong about technologies in the past (Windows devs are resisting WPF, which I think far superior to traditional Winforms), but I think this is a dud, at least in the medium term. My post was really a last-gasp should I take a look at this tech, or should I do something else question.
Cloud Computing might have a use for SMEs though: the security provided will probably be better than can be acheived in-house,but I suspect Google is a better option.
I was having a beer with one of the MS technical reps for cloud computing in SE Asia a couple of months ago, and asked him this exact question. And you are right the primary target is the SME exactly b/c of the security that MS can bring to the service.
Apparently they have some extraordinary service agreements designed to reassure SME's their data is safe and remains theirs. He did admit that the big end of town were not prospects and banks won't touch it, they have enough trouble controlling their (our) environment without more vapourware thank you.
There you go - 2 replies.
Never underestimate the power of human stupidity
I am a student doing masters in computer science engineering.I wish to develop a Multitenant data analytical application in java.Could any one suggest me the procedure to develop a simple multitenant application.. Or else please suggest me any useful links to proceed further.
I have decided to develop the application using Netbeans..
I wish to develop a Multitenant data analytical application in java.Could any one suggest me the procedure to develop a simple multitenant application.
If you do not know the procedure ho do you expect to develop it? I would suggest you try something more suited to your skills, or do some research into the subject you wish to work on. Google is always a good place to start, or possibly your University library.
Just say 'NO' to evaluated arguments for diadic functions! Ash
I find it disturbing that you feel the need to specify the language here. I get the feeling that you have chosen the language first, and the problem second. This is not a good way to do things; I appreciate that you may well be jazzed up about Java, and fairplay to you but you really need to stop and consider what the problem is that you are trying to sort out first.
The first thing that you need to do is to gather your requirements. Work out what you are trying to do; what problem you expect to solve. Talk to people who are doing the task that you are trying to do and find out how they do it. Where possible, you should always try and model your software after the process it is imitating.
Finally, good luck. I look forward to you passing your course, and entering the world of professional development.
I have CDO, it's OCD with the letters in the right order; just as they ruddy well should be
Cloud computing is where the program that an end user wants to run is kept on a company's server. Steam is cloud enabled. For example COD6 had the ability to dl it from steam if you bought it. You can then play the game just as if you had it on a disk. I suppose its kinda like that. Maybe you could define it as a web page too tho...
Well I was drinking with a guy who works for MS here in Singapore, job is to sell cloud/azure services. As I work for a bank he didn't bother pushing it, banks are just not potential customers.
His line went something like, we set up a very secure flexible platform supplying all the dev and office tools you need on a subscription basis. You (as a SME, his target market) cannot afford to implement and support the same level of security MS supplies. It was a good line and he believed it so I didn't have the heart to try and pick it apart (besides I was well into my cups at that stage).
Like most tools it has it's application, it is not the panacea the evangelists claim but has it's uses I guess.
My problem, beside the connectivity nightmare, is that everything is via a browser. I know it's getting better but it is still a pretty crappy interface (this from the guy dragging himself kicking and screaming into Silverlight).
Never underestimate the power of human stupidity
No it isn't. Cloud computing is about having access to resources (compute power, memory, perstistent storage) on an ad-hoc basis, with no practical limits to those resources, at a lower cost than you could supply yourself. It has almost nothing to do with web browsers.
Mycroft mentioned some of the tools built on the platform, but from a development standpoint the way I look at it, cloud computing is a suite of development tools built around making scaling an application out the primary optimization.
That's why many of the cloud platforms have things like NOSQL databases and are web based. Relational databases with strong transactional support are notoriously difficult to distribute so there are many different new models of data storage each of which optimizes a different aspect of the whole scale out problem. There are also different constraints on code management and optimization when it is designed to run as efficiently on one system or one thousand. There are also tools that run horribly on anything under 10 systems but awesome on large clusters.
To further muddy things, Amazon, google and microsoft are selling cloud services based on their particular platforms. But if you have a bunch of systems lying around you can set up your own cloud stack. Some of the systems management for the large installations are mind boggling, with setups of cargo containers full of hardware. They leave the container plugged in and wait for a percentage of the systems to fail in the container and just send the whole thing back to the factory to be rebuilt.