Bespoke Applications with Cloud Flavor
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?)
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?)
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:
- AmazonAWS - of course
- Heroku
- Azure
- MongoHQ
- MongoLab
- Cassandra.io
- ClearDB MySQL
- Cloudant (CouchDB)
- database.com (from salesforce)
- JustOneDB (PostgreSQL)
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!
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)





