Software Development in the Cloud
It is predicted that the cloud market will keep on growing for the next years and that more and more businesses will start moving to the cloud. That’s why we want to take a closer look at the pros and cons of this subject, especially focused on advantages and disadvantages for software development with cloud services.
Cloud Computing in General
Since there is no such thing as a typical cloud service we firstly want to see how cloud services can be distinguished. Usually there are 3 different types which are varying in the accessibility and configuration options for the user. In addition to that the structure of cloud services can be different.
Cloud Service Types
The types of cloud services are being distinguished in the view of access to underlying systems and configuration options as well as the provided service itself.
-
Infrastructure as a Service (IaaS): This type provides the user with virtual infrastructure, e.g. servers or data storage. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly limited control of select networking components (e.g., host firewalls).
-
Platform as a Service (PaaS): The cloud provider delivers development environment services where the user can develop and run in-house built applications. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly the application hosting environment configurations.
-
Software as a Service (SaaS): The user gains access to applications that are being operated in the cloud. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
Cloud Service Structures
The different types of cloud services can be structured differently. In general the structures are varying in the availableness of the services to the public.
- Private cloud: The cloud infrastructure is operated solely for an organization.
- Public cloud: The cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services.
- Hybrid cloud: This is a composition of two or more clouds that remain unique entities. The clouds can be public, private or both. They are bound together by standardized or proprietary technology that enables data and application portability.
Assessment of Cloud Services
Depending on your own resources, infrastructure and processes it might be more or less beneficial for you to use cloud services. If you already have a large infrastructure and you use many individual applications and solutions the effort of migrating into the cloud can be very high. In case you are presently using widespread applications that are stand-alone solutions until now, it might be easy to start using cloud services. Maybe the following general pros and cons of using cloud services help to evaluate the best solution for you.
Pros
- Infrastructure → You don’t need to administrate your own servers.
- Access → You can access the service from everywhere in the world, perfect for distributed teams.
- Security → The security of data centers has a very high standard.
- Connectivity → Once you have your project in the cloud you can easily improve your processes by other external services.
- Cost efficiency → You only need to pay for the performance you use, no overhead.
- Availability → Normally there are redundant systems and backup services included.
- Scalability and performance → The infrastructure adapts to your needs.
- Innovation → Being able to spawn numerous virtual instances can encourage people to experiment.
Cons
- Transition → Moving to cloud services may take time.
- Limited control and flexibility → You don’t have full access to the cloud servers and an individual configuration may not be possible.
- Adapting the tool infrastructure of cloud provider → Maybe not all tools you are normally using are available as a service.
- Adapting to security system of cloud provider → Since the cloud is not in your local network you need to adapt to the security system of the cloud provider.
- Access → Your data is accessible from everywhere, which leads to higher security risks.
- Vendor lock-in → It may be difficult to change the cloud provider.
- Individuality → It may be difficult to connect individual solutions with cloud services.
- Availability → If the connection to the cloud service is lost you can’t work on your project at all.
- Licensing → Your existing licenses can be used in the cloud only if it is under license mobility option like BYOL (Bring Your Own License).
As you can see some aspects, e.g. availability or access, can be seen as a pro and as a con as well. In that cases you need to decide for yourself what is more important. Other aspects are the two sides of a coin for example the hight scalability and performance of the cloud vs. limited control and flexibility. Again it’s up to you to decide what’s more important.
Software Development @ Cloud
The facts and arguments above can be applied to any cloud service. When it comes to software development in particular the cloud offers some special advantages.
Development: During the development of your software the cloud provides staging servers and enables you to easily use a CI system. Builds and automated tests take time. Development groups may need to subsequently fix the code for tests that fail during the automated testing and they need to do this over and over again until the build passes all the tests.
Deployment and testing: Cloud computing also provides an unlimited number of testing servers. This way you can test how your solution runs under Windows, Linux or other operating systems. You can also deploy your web application on different application servers. It is not necessary to wait for physical servers to become free because there are practically unlimited virtual servers available. Furthermore you can grant access to the cloud for your customers. This way they can take a look at the application easily.
To implement software development in the cloud it is necessary to combine different types of cloud services. For your software development applications you can use PaaS or SaaS offers. For the different deployment and testing targets you could use IaaS offers. It is also advisable to evaluate whether you need a private, hybrid or public cloud.
The Mixture is the Essence
When you decide to move your software development to the cloud you need to combine the different components the way you need them. Use IaaS offers for your virtual deployment and testing servers plus PaaS offers fitted for your development language and database. This basic set of tools can be extended with SaaS offers to fit your needs. For security reasons it is also important to evaluate which of the services you use should run in a private, public or hybrid cloud.
If you decide to migrate to the cloud, you should take a look at this article: http://www.infoq.com/articles/cloud-migration-checklist
With kind regards, your SCM-Manager Universe Team