← Back

Developing for the Cloud

Developing for the cloud means more than hosting an application: cloud services shape its architecture, scalability, costs, and the products we can build.

CloudSaaS

Perhaps because of the professional environment I work in, or the specific software products I work on, I’ve been seeing an unstoppable trend for several years now. Yes, I know: the cloud isn’t new, nor is it a fad everyone will forget in a few years. What I mean is that beyond the headlines and the options available for software development, I’m seeing real day-to-day interest in cloud solutions among clients and the companies that provide them with software.

The reason is simple: lower costs and very mature cloud service platforms that are becoming well known among software companies.

We currently have clients using our products in SaaS mode (software as a service) deployed on Microsoft’s cloud computing platform, Azure, and honestly, the experience over the past two years has been extraordinary.

We’re truly experiencing a paradigm shift in software product development. It’s very real and something those currently training for this profession need to take into account. What I want to emphasize here, though, is that contrary to what some people believe, programming for the cloud has absolutely nothing to do with programming a solution to be deployed on local machines that you or someone at your company administers.

Programming for the cloud also means being able to use a range of services that are only available in that infrastructure and that affect the nature of your application.

It’s true that you can deploy a desktop application or one with a web user interface on cloud infrastructure (with Azure, Amazon AWS, Rackspace, and so on). However, the cloud offers many more services for application development. Using the services these providers offer isn’t just an easy way to host your application; it’s much more than that.

If you decide to start a new system from scratch with some of these services in mind, your application’s anatomy will be very different from what it would be on another kind of infrastructure.

Azure is certainly the service I know best, although I’ve run tests for prototype projects on Amazon AWS and Rackspace, and my impressions were very positive.

Talking about the cloud also means talking about scalability at a reasonable cost and infrastructure for storing massive amounts of data. The explosion of everything related to big data and the Internet of Things (IoT) wouldn’t be possible without cloud computing services at prices many companies can truly afford. In fact, prices are tending to fall further and further.

Azure, for example, offers storage services I particularly like. Depending on your application’s needs, you can choose a managed relational database (SQL Azure) with different performance tiers, a non-relational table storage service for storing large amounts of simple data with automatic partitioning (Table Storage), and mass file storage (to provide your own CDN, and so on). This is only the tip of the iceberg and a simple example; the important thing is that all these services are available through an API that can be used with different technologies and languages (C#, Node.js, PHP, and so on).

It’s no longer just about coding well and knowing how to design the most efficient, simple, and maintainable architecture for a particular solution. We also need to know about all the deployment options the market is moving toward. A software product’s success depends not only on its development, but also on finding an efficient, maintainable, and low-cost deployment solution.

With a potentially global market, the days of building a website hosted on a dedicated server without thinking too much about what would happen if the number of users grew by 5% every day are long gone…

The interesting thing isn’t that cloud services are available; it’s what we’ll be able to do with these affordable services to create new kinds of solutions.

This development paradigm has a major impact not only on software developers, project managers, and people like me who are responsible for choosing the best technologies for what we build; it also affects the real economy by scaling processes and creating new markets where none existed before.

In my opinion, to give one example, all the platforms, solutions, and proposals related to the collaborative economy have a lot to do with the ability to offer highly scalable systems (with thousands or millions of users) at a cost that, just a few years ago, only large multinationals could afford.

The collaborative economy isn’t an abstraction for alternative people; it’s a growing reality that is increasingly visible in our daily lives. Just ask Albert Cañigueral, whose wonderful book I recommend.