Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Questions like this have been asked before (like here), but a lot can change in a year.

My company is very interested in migrating core systems to the "cloud". Non-technical upper-management doesn't quite know what that means, but they are excited at the idea and have already started adopting cloud-based systems.

Having gone through an ERP migration, and experiencing first-hand what a pain it is to deal with legacy systems, I'm really concerned that by going to the cloud, losing control of our data, we are going to begin a cycle of never-ending migration as cloud services come online and then blink out of existence. To say nothing of the technical demands of learning, programming, and keeping up with multiple non-stable APIs in order to get disparate cloud-based systems to talk with one another.

I have other concerns such as privacy, uptime, data ownership, maintenance, etc.

Is the cloud really ready for the prime time? If you were a business owner, would you choose to place your key, business-critical, systems on the cloud? As a programmer, do you trust the cloud and the companies providing those services to be reliable and have the longevity of a traditional software solution? If it is not ready now, when will it be, if ever?

share|improve this question

closed as not constructive by MichaelT, BЈовић, Kilian Foth, gnat, Yusubov Jun 5 '13 at 13:28

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
Is it just me, or does this feel very broad, as well as time-specific. –  sdg Oct 17 '11 at 20:09
    
Well, it is a very broad question. But I'm not interested in a 100% accurate answer - it's pretty hard to predict the future. I want a snapshot of what actual programmers' opinions are, and the opinion with the best supporting evidence is going to be the one I choose as "the answer". Whether or not it turns out to actually be correct, who knows. –  Kyle Lowry Oct 17 '11 at 20:16

6 Answers 6

Privacy: Corporate networks and websites get hacked all the time.

Uptime: Ever get that email that "We will be doing some maintenance on Saturday..." from your company admin?

Data Ownership: probably need to improve contracts and practices in this area. Most will offer a reasonable data dump in a managable format (Your 57 DVD's are in the mail.).

Maintenance: better them doing it than me.

Did anyone ever think the mainframe would leave the lab? PC's are toys and have no place in a serious/critical business. Why email when you can fax or call on the phone?

It will be determined by a business model and not a lack of technology. I can't wait for the iCloud to take off so I can buy an iPhone and not have to deal with iTunes desktop app.

Someone will figure out a better way to jam 60 gogillan servers in a closet than Google. Maybe they fit a few in my pocket and this "cloud thing" will be just a bunch of devices everyone is carrying around and have sitting on shelves at home.

share|improve this answer

This is actually a more complex question than you thing. It depends on many scenerios. But to address a few of you points:

privacy, uptime, data ownership, maintenance

When questioning yourself about reliability you have to consider which cloud service you are targeting. Now you have Microsoft and Amazon both with attractive offers that scale to you every need. This is not your mom n pop stores, you can probably trust Microsoft to keep the cloud service running. One phrase I heard was: "Who do you trust to do a better job of backing you infrastructure? the 3 - 5 guys on your IT dept or a team of experts at microsofts data centers"

What you really have to consider are thing more closely related to performance. Anyway you look at it, you have to consider the latency of your data traveling from the cloud to your onsite apps. But again, you might have more processing power on the cloud when you need it (dynamic balancing).

It all comes down to your actual requirements. But most likely the correct answer is a merge between cloud and on-site.

share|improve this answer

I work for a company and roughly 95% of our servers (out of 400+) live 'in the cloud', mostly at Amazon EC2. Cloud providers have matured a lot in just the past few years, and you will find that many other emerging companies live in the cloud too, like Netflix and Quora.

Now some problems we've faced as a result:

  • Random downtimes due to maintenance or royal screw ups - Amazon had some pretty fantastic downtimes last year because one of their sys admins hit the wrong button and caused their EBS (block storage service) system to basically die. That caused some pain and suffering for us, as well as others.
  • Other random blips in our instances - Amazon's normal EC2 instances are ephemeral and sometimes just randomly die, perhaps the node they lived on had a problem or something else happened

Benefits we've had:

  • Really fast spin up time - if we want to move to a new server, we can easily create a new one through the Amazon API
  • Easier scaling - we can create more instances and load balance them for our applications
  • Redundancy - it's easy to spin up servers in different data centers to mitigate the risks of having a truck drive through one (this has happened before, true story)
  • Less in-house IT overhead - we do have an on-call guy, but he doesn't have to concern himself managing 400 physical machines, or any of the other litany of services you can obtain via a cloud provider
  • Easier services - Stuff like Amazon RDS is usable if you just want a managed database instance, and you don't need some custom database instance
  • Reliability - we put separate applications on separate cloud servers, much easier than saying we'd put in 10 different physical servers to host 10 different apps

Concerns:

  • Data ownership - we put some pretty sensitive data out on the cloud, namely stuff like customer data - this can encompass a lot of legal domains, and if you have any concerns like HIPAA or PCI, then you should really talk with lawyers and other providers about stuff like this
  • Data Backup - do remember that regardless of whether or not you use the cloud or not, you still have to back up your data in case something happens, like someone accidentally kills an instance. We have nightly backup jobs for our databases, and the database dumps are stored in S3, and also transferred over to another data center
  • Security - Stuff can happen, DDOSes can happen, site breaks can happen - this is not just a problem with the cloud
  • Revolving door of providers - I don't think companies like Amazon, Rackspace, or Heroku (owned by Salesforce.com) are going the way of the dodo anytime soon

And some really cool stuff we do with the cloud:

  • Since we have 400 servers, and are constantly adding new ones, it's a chore to spin them up via the Amazon (or whatever) console, then tweak each one - that's not a repeatable process.
  • We automate server deployments and configuration with puppet, which allows us to say stuff like "Make a new server for running python and django, and install apache httpd and 3 other things on it"
  • We can quickly colocate cloud servers in different regions for better response times for that region.
  • Elastic load balancing for servers

And of course, it's a good idea to keep up with other big cloud users, as they always write about ways they're using the cloud. Here's an example from Netflix talking about what they learned after the EBS incident this past April:

http://techblog.netflix.com/2011/04/lessons-netflix-learned-from-aws-outage.html

share|improve this answer
    
Why? EC2 is super expensive unless you have very dynamic workload? And APIs are very limiting, for example, broadcast... Basically you're limiting hardware specs, you have to pay extra, you depend on external screw-ups, you have non-transparent backup, and you don't own anything after 2 or so years. Why??? –  Coder Oct 17 '11 at 19:40
    
@Coder - what are you going to suggest as an alternative? We actually do use the resources of a small EC2 instance, namely the RAM and CPU - EC2 micros have too little RAM for our tastes. Expensive? Perhaps, but I didn't make the initial decision to use AWS (I wasn't here at the time), and I'm sure the company had good reasons (this decision was made years ago when providers had fewer features). We do not use their backup systems, instead using our own mechanisms - I have no idea what this "you don't own anything 2 or so years" means. And yes, I did note that downtimes were a pain. YMMV. –  birryree Oct 17 '11 at 19:49
1  
Buy dedicated servers, put them in collocation and let them work at 10% load, it will still be less expensive, you own the hardware, you have full control over backup solutions, and there are whole lot less privacy concerns. Cloud is a hype, with only one exception, heavily scalable loads. –  Coder Oct 17 '11 at 19:52
    
@birryree - "having a truck drive through one (this has happened before, true story)" - I know of a utility pole getting knocked out and power redundancy switch failure, back in May'10. IIRC a truck did knock out a power transformer used by RackSpace... but I'd love to read about a truck plowing into a datacentre. Let us all remember, the internet is not a big truck, and the trucks are jealous. –  Slomojo Oct 17 '11 at 23:57

For some companies, I'd imagine the cloud could work well for them. Note that this could be small businesses that don't want a lot of infrastructure and like the idea of what the cloud can offer here to some degree particularly in how quickly things can be up and running with relatively low initial investments compared to all the stuff in a traditional on-site solution.

If I were a business owner, the question would be what I am currently running and how well is that working for me? If I were starting a new business I could imagine the cloud being cheaper upfront than trying to bring in some big ERP or CRM software. At the same time, if I had a business of a few years, there may be various sunk costs that may make a migration challenging.

As a programmer, some of my work can involve cloud services so in a way I get to deal with some of the cloud headaches that can pop up if some software comes in a cloud-based solution. I don't really see this going away though I do wonder if there will be shake-ups and which providers have enough resources backing them to survive at least the next few years. There will likely be changes and some will go out of business, but there will likely be a few left standing.

The better question here would be prime time for who. If you run some mega multinational conglomerate like Proctor & Gamble or GE, I'm not sure how easy a cloud solution could be accepted given the scale involved. If you run some little mom and pop shop, then maybe using the cloud to store your books like you store your tax returns isn't such a horrible idea.

share|improve this answer

I know where I work I highly doubt that we could legally move to the cloud. Government contracts mandate that we hold certain data on separate servers. Now, since we don't deal solely with government contracts, we could move some of our functionality to the cloud but not all of it.

For some companies, it is unlikely a day will come where they will be able to operate solely "in the cloud" because of who they have their contracts with.

share|improve this answer

The cloud comes in a variety of shapes and sizes. Amazon is one end of the spectrum (lots of cheap unreliable machines that you can build a reliable system out of) through to private clouds that replace dedicated servers.

We've enjoyed the SLAs we get with a hosted private VMWare cloud (you get guaranteed Ghz, disk io and memory) plus all the HA/failover. A server is no longer dependent on one mainboard/power supply/rack/etc. We also added the DR option to replicate the virtual machines to another DC.

It isn't the cheapest cloud solution but you never select the cheapest option for a business systems, right?

And the P2V tools mean you can easily take an image of an existing physical server (while it is running), upload it and then deploy. Then use rsync or similar to update it before the cutover. No tedious re-installing and configuring.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.