Writing the glue code required to manage transactions across multiple servers is one of the more common challenges developers face when trying to scale .NET applications. Some of these multi-server setups are beginning to go by the name 'Cloud computing.'
Service providers like Amazon with EC2 have been doing this for awhile in the Linux space. More recently, vendors like ServePath with GoGrid and RackLabs with Mosso are rolling out a similar service for .NET developers. These Cloud-based platforms allow developers to write applications with scalability built into the underlying infrastructure.
For example, Saastek is running a custom designed .Net application on GoGrid. Enda Madden, a lead developer for Saastek said, "Scalability was one of the main reasons we decided to develop on the Cloud as opposed to a dedicated server, or VM. The system was initially being tested with a small number of users." Based on a positive user feedback, this was to scale rapidly to a few hundred up to 3,000 users within the next 18 months. It was expected to scale up to as many as 3,000 users over time.
Said Madden: "The Cloud architecture is ideal for a company such as ours that is interested in spending money on development and innovation rather than metal boxes.
Despite benefits, application may need reworking in the Cloud environment.
Josh Odom, Senior Software Developer at Mosso, said, "From the developer's point of view, one of the differentiators lies in trying to keep the development experience as close to developing for a dedicated server. We want to give you the opportunity to deploy on the Mosso platform without having to jump through a lot of hoops."
Chris Sackmann, Systems Architect RackLabs, pointed out that while serialized data is fairly easy to manage across multiple servers, one slight challenge lies in saving binary session state data.
Sam Charington, vice president of product management and marketing at Appistry, said that one of the distinctions that gets missed a lot is that people confuse scalability with performance. On paper, it looks like the organization is paying for bandwidth, storage and processing power. However, the real benefit of the Cloud is that it enables a more reliable infrastructure that can overcome the failures of an individual machine. None of this reliability comes from the fact that you are paying by the hour rather than for a dedicated machine.
For example, on the application execution side, Appistry includes functionality for application-level fault tolerance. This replicated the state information for the application across multiple machines; so that if the code on one machine fails, the Cloud can continue to run without a hitch.
An additional consideration for .NET Cloud developers to think about is how to componentize their applications, Charington said. "Multicore developers need to think in terms of smaller units of code built around a task model," he explained. "In a lot of ways it is an extension of what people have been doing with SOA, in terms of creating modular services and then orchestrating them to create a business process."
Another key difference is that developers need to put more thought into state. "In a Cloud-based model, you shoot yourself in the foot if you rely heavily on local state information," Charington said. "If you are relying on a VM and it crashes, how do you recover from that?"
He believes that developers also need to think more about monitoring. "If your app is running on lots of machines and you don't know exactly where a particular execution is taking place, it is important to have monitoring for problem resolution and capacity planning," he said.
Although many companies are starting to develop their own internal Cloud architectures, the security systems are not yet ready for the many enterprise applications, according to Charington. He said, "The majority of our customers, either for compliance, security or policy reasons, are not ready to move to public Clouds. They buy into the promise of Cloud computing but then opt for the security of using their own machines in their own data centers in private Clouds."
Madden noted, "One problem we have is deploying one of our medical systems in Regulatory Compliance. For some patient data records there is no getting around the system residing on a dedicated server located in the country the application users are residing in."
Michael Sheehan, technology evangelist at Servepath/GoGrid, said, "The public Cloud market is not quite ready for applications that require PCI or HIPPA compliance. But, it is changing quickly and there are lots of new companies getting into the mix."
Compute Intensive Clouds
Another class of Cloud frameworks is designed for computer intensive applications, which perform tasks like financial analysis. Dan Ciruli, product manager at Digipede, said, "Our software lets you write a .NET application and run it across many machines. For example, if you were doing analysis that would take 1,000 hours on one machine, you could run it in a single hour by using a Cloud with 1,000 machines. For companies doing financial analysis, the results are very time critical. But, the developers are more familiar with .NET rather than supercomputers."
Digipede can take a .NET class and run it on a remote server without the developer worrying about which machines are installed. They can then bring back the results to a single application. In effect, Developers can use the Digipede toolset to create a Cloud on a box, and then deploy this across a Cloud once the bugs have been ironed out.
For instance, Intuitive Analytics is using Digipede to help solve challenging financial optimization problems. Apparently, they are able to use the same architecture to either calculate locally or across a server Cloud, according to Peter Orr, CEO of Intuitive Analytics.
A client might only send a 50-kbyte file to start a massive calculation, conserving bandwidth. Orr said, "One of our applications allows the users to solve the nonlinear optimization problem. Each problem might take one minute to solve on the desktop. The benefit of the Cloud is they can cut time down to 30 seconds, and then can do them all in parallel."
Orr said they are actively looking at Cloud providers, but are concerned about the lack of 64-bit offerings, which are important for these kinds of applications. Another concern is that the providers make it simple to shut down and turn on applications without a lengthy install process. He noted, "Some Cloud providers still require manual installation of the client and a manual deletion which takes time."
Appistry user DreamType points to Cloud benefits. According to Brian Gullette, president of DreamType, "We were in the classic bind of not wanting to outlay cash to build a big server, but we wanted some redundancy. Appistry made it possible to set up a small cluster on five boxes." He added, that in the past, they had problems with the server getting overloaded and crashing. "But we have not had a single problem since," he said. "The Cloud enables us to take on more ambitious work with bigger clients. We looked at Mosso recently, but it is pretty limited in terms of what you can do with custom applications like ours."