Cloud Zone is brought to you in partnership with:

Łukasz works as a Technical Architect for an international IT company and is responsible for delivering applications written in Java EE, Spring, and .NET. He has been involved in many various projects ranging from online insurance systems, voice and video solutions, mobile systems (both native and HTML5-based), medical systems, and large system integration projects. Łukasz is an expert in distributed systems, SOA, and cloud. Łukasz holds PhD in Computer Science. Łukasz is a DZone MVB and is not an employee of DZone and has posted 20 posts at DZone. You can read more from them at their website. View Full User Profile

Bespoke Applications with Cloud Flavor

09.18.2012
| 3979 views |
  • submit to reddit
If you're thinking about using cloud in your solutions you should adapt it gradually (an evolution rather than revolution). It's much easier to get started with integrating available SaaS offerings into your products than trying to embrace the whole cloud (with IaaS, PaaS, and SaaS stacks) in a single step.

Adding the cloud-flavor to your product is very simple. In this post I'd like to show you some of the available SaaS offerings which are very easy to integrate with your solutions and can reduce your development time and time-to-market significantly.

Sample imaginary system

Let's imagine we have to create a system for a very large online real estate broker. Among many requirements there are:

  • creating new offers by users, uploaded offers must be verified by brokers before they show up on the web site
  • uploading photos of properties (tons of gigabytes), in addition we would like to have a thumbnail in search results, medium size on mobile phones, and large size in standard browsers
  • uploading videos of properties (do I have to say that the video must be available on smart phones and tables (any vendor)? I don't.)
  • sending notification emails when status of an offer changes
  • sending sms text messages with notifications when someone is interested in a property
  • web sockets for live updates
  • common search results and location-based search results should have instant response time
  • fulltext search
  • the app should handle tons of GB of data
  • automatic filtering out images not related to properpties (spam/bots/porn?)
It's perfectly doable, but DIY is no longer sexy. So let's see what cloud services you may use for all of the above requirements.

1. Databases

Let's imagine we have to create a system for a very large online real estate broker. Among many requirements there are:
  • creating new offers by users, uploaded offers must be verified by brokers before they show up on the web site
  • uploading photos of properties (tons of gigabytes), in addition we would like to have a thumbnail in search results, medium size on mobile phones, and large size in standard browsers
  • uploading videos of properties (do I have to say that the video must be available on smart phones and tables (any vendor)? I don't.)
  • sending notification emails when status of an offer changes
  • sending sms text messages with notifications when someone is interested in a property
  • web sockets for live updates
  • common search results and location-based search results should have instant response time
  • full text search
  • the app should handle tons of GB of data
  • automatic filtering out images not related to properties (spam/bots/porn?)
It's perfectly doable, but DIY is no longer sexy. So let's see what cloud services you may use for all of the above requirements.

If you think that using a cloud-based database is difficult you're wrong. In almost all cases it's just a matter of changing your connection URL (Java's JDBC drivers) or connection strings (.NET world). Actually, if you make this move you are much more closer to running all of your application in the cloud than you think you are. There are many database offerings in the cloud, some of them are:

2. Queues

The most popular cloud-based queues are:

3. Image management

I recommend Cloudinary. There is also Bitline, but I haven't used it.

4. Mail

Over the course of 4 last years, 2 times I have used bespoke mail server to send out messages. With a cloud you no longer need to setup and maintain mail servers. You simply use mail services, examples are:

5. Telecommunication

When you have to send a text message, buy a phone number, place an automated call you don't have to setup the whole voice infrastructure, you can just call a RESTful API. Examples are:
  • Twilio - I have used it in 2 applications
  • Hoiio - has a much better API than Twilio, but unfortunately rates for text messages to Poland are higher than Twilio's
  • Moonshado SMS (only SMS messages)

6. Notifications

People like seeing that something is happening, that your web site is live. Why not send updates to your users using web-sockets or directly to their mobile phones? And of course with cloud it's much easier. There are:

7. Cloud cache

Warning: caching simple and small data in a cloud is not a good idea. Trust me. In my last Play! project I reverted back from cloud to local cache (but thankfully switching was just a matter of turning on and off 2 components). If you have large data sets which takes some time to compute or you have data that does not change you may be interested in the following cloud cache offerings:

8. Full text search engine

Here are a few full text search engine providers:

9. Video management

Video management, encoding, streaming offerings are:

10. Human intelligence

What? Yes, there is a company called Shared Workforce which is providing human intelligence in the cloud. Basically you can write a specification of a task and then people will do it for you. Asynchronous with callbacks. This service can be used to, among other things, filter out spam/bot/porn offers in our imaginary real estate application.

Summary

You may wonder how easy it is to setup. Very easy. Together with a group of friends I'm developing a hackaton-portal project which uses 6 cloud SaaS from the above list (PostgreSQL 9.1 (Amazon), Cloudinary, Mailgun, Twilio, Memcachier, Pubnub). The app itself is developed in the cloud (GitHub, Travis) and runs in the cloud (Heroku).

Yes, it's that simple. I'm sure the list above is not complete and if I missed some obvious venders/offerings, add your comment below!

 

Published at DZone with permission of Łukasz Budnik, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)