Question

what does it mean when some technical guy asks did you work on cloud ?

I have worked primarily java based web applications. But sometime in discussion/interviews technical folks asks Have you worked on cloud . To me cloud looks very broad term and I can think of below three related work related to cloud

1. work on web application hosted on Internet .
2. work on Saas based app on internet .
3. Using and cloud service like AWS ?

Is it something else ?

Était-ce utile?

La solution

There are a number of things that go into the term "cloud development". I'm focusing on AWS because it's the platform I know, but this should be generalizable. I include the AWS terminology to give you somewhere to start searching. There are three things that AWS or other cloud providers can provide:

Infrastructure as a Service (IaaS):

Here the cloud provider is selling roughly-speaking plain old machines (almost always virtual machines). Essentially this is a replacement for on premise server: instead of buying a physical machine with so much memory / CPU / etc. and install an OS, the provider sells you a "VM" (in AWS: an EC2 instance) with so much capacity (in AWS: an instance type) that comes pre-loaded with an operating system and maybe some software (in AWS: an AMI). I put "VM" in scare quotes because the relationship between an instance and any physical machine can be quite slippery, but from a user's perspective instances are basically VM's running in some datacenter you can access over the internet. Leveraging these offerings of a cloud provider can reduce the headache that goes into making sure the application has somewhere to run.

At the most basic level of cloud development, you are doing exactly what you did with traditional on-premise applications except your servers are not physical machines but instances running in some data centers. At a more advanced level, you have started to leverage the unique advantages of these instances (namely: they are easy to spin up and creating a new instance can be automated, see AWS Cloud Scaling) to run your applications distributedly across instances. This can buy you availability (if one of your instances dies, it can be replaced) and scalability (if you need better performance, you can always add more instances).

Platform as a Service (PaaS):

At this level, the cloud provider is selling you not only "machines" but also important parts of your architecture like databases and storage in a way that is fully managed and abstracted even further from the notion of VMs running on machines. For example, AWS' RDS is a managed RDMS that abstracts away all of the details of maintaining, say, SQL Server on an instance(s) (OS patches, software updates, backups, replication, sharding). Or S3 will encapsulate an instance(s) acting as a blob storage server. At this point the cloud provider is not only giving your application somewhere to run but also providing basic parts of the application in a way that saves time and provides more easily for the big watch words of cloud development: availability and scalability.

At the deepest end of this pool, you are writing serverless architectures using technology like AWS Lambda and have more or less fully abstracted away the fact that there are real machines running your application.

Software as a Service (SaaS):

This is usually what cloud developers are working towards: they are developing software (image editing, email, whatever) that from the user's perspective is abstracted from any machine (and in particular requires nothing more than a thin client to use, which in turn is usually a blob of javascript downloaded when visiting a website). It's worth noting that cloud providers can also mosy in on this space: AWS has WorkMail or Elastic Transcoder that are firmly SaaS.

When are you doing Cloud Development

To state almost a tautology: doing cloud development is developing with cloud technology, which means leveraging at least one of those *aaS technology. In my mind cloud development is much more about what you use than what you provide. So if you have a SaaS web application, but you own and manage all the data centers and the platform on which the application runs, you are more of a cloud provider than an actual cloud developer (of course at this point you are both). So in my mind 3 is kind of the hallmark of cloud development and offers the most promise: to be able to write applications with nice features (availability, scalability, etc.) at lower operational cost. At 2 you probably are doing cloud development and 1 is so nebulous that it could be anything.

To wrap this up, we can have a quick and dirty questionairre for what sort of development you are doing:

Q: Can you tell me exactly where the machines running your application are?

  • No idea -> on premises
  • Some of them -> hybrid
  • All of them -> on premise

Autres conseils

A cloud application can simply be an application that looks, feels and programs just like any other application you run on a dedicated server (After all, this might be responsible for a large part of why "cloud" seems to work at all). "The cloud" is entirely transparent to such applications. Developing such an application, I wouldn't consider "working on cloud". You are, in most cases, not doing anything different. Why should someone ask you for experience in a field that is 100% identical to "classic application development"?

"Real" cloud applications in my sense of words (and in my business - telecommunications) are applications that need to be and are aware of the fact that they run in a virtualized environment - They will talk to the cloud management software when they detect the need to expand or will give up cloud resources when they no longer need them. They will, maybe, react to being shoved around to other physical environments and may express resource and location preferences to the cloud environment and will intelligently react when they can or cannot get these resources. As such, such applications are actively interfacing with the cloud management software.

So, in a real sense, this question might ask for experience with, for example, AWS APIs or OpenCloud/OpenStack environments.

Sometimes, you might simply be asked "Have you worked on cloud" because someone wanted to try to say something intelligent or trendy new and shiny, though - Definitely depends on whom you talk to and their background.

Generally speaking the person is talking about either Amazon Cloud AWS or Microsoft Windows Azure Cloud services, compute nodes, virtual machines. There are many services provided by Amazon and Microsoft. They are wondering if you've used them to leverage your software needs.

Licencié sous: CC-BY-SA avec attribution
scroll top