Smart clouds, the big picture
When people hear about cloud services, they tend to jusr think storage space and reduce the cloud phenomenon to a huge diskdrive in the sky. Perhaps it was unfortunate that storage was the first service to emerge from the cloud concept since so many people are reducing it’s potential to mere storage, but thankfully there are developers in the world who understand these things more in depth. And development is what I want to write about in this post.
The old way of doing things
If you work for a small or medium company chances are you have a web-server in your offices, perhaps in good company with an email server and a database server. This way of doing things has been the norm for many, many years now.
Whenever a new software product came out, we had to install the RPC stack (remote procedure call libraries) on the web-server and give it access to the database server. Then and only then could our native Dephi client connect via the internet to get the data.
The Delphi client application would make use of a RPC framework and call the procedures on the server just like they were local to the application.
Many companies are actually founded around delivering components and frameworks which makes this type of programming easier. The most notable company for Delphi programmers is no doubt Remobjects and the RemObjects SDK. This framework makes it very easy to write custom servers which communicates through industry standard message formats (JSON, XML, BINARY).
Another such framework which is open-source and free is the mORMot framework. Mormot is known for achieving great speed. The framework is built from the ground up and does not rely to much on third party code (Remobjects requires Indy for many of it’s server components).
Benefits of the RPC model
This way of writing programs, where the majority of operations reside on the server – while a client only connects and make the server functionality available locally for a customer, have plenty of benefits. Which is why it’s so popular and fun to build.
The first benefit is that you have full control over both the internal mechanics of the service and it’s data. You dont deliver code which is cracked and abused by pirates and hackers; Your code resides safely on your personal servers and only valid accounts can access it. Your total control over the database means means that working generating in-house statistics is a snap. You will not be affected by server traffic to the extent that your customers are.
But those are only minor perks, the really huge advantage is that you are able to consolidate all your clients towards a single RPC standard. In other words: you implement the application framework once on the server, and all your clients connect and make use of the same RPC service. Your iPhone, Android and win32 desktop clients all connect and use the same server. The same goes for your Linux and OS X desktop applications, and (drumroll) also your ISAPI web application.
The new model
There is nothing wrong with the old model. The way you would organize such a distributed application is logical and more or less the way it has to be. It allows you to de-couple your database from your service (the remote procedure call API you are exposing) and your service from the platform dependent clients.
It gives you plenty of options as well. Since the database is typically on a separate machine running mySQL, MariaDB or MSSQL, it makes it easier to hot-swap the location of the database should you decide to move it. Maybe you found a DB host in Germany at an affordable price, meaning that you can move your data there with no more work involved than changing IP and login credentials.
But all of this so far, is the way we used to do things (or are still doing things). With the cloud we are able to work with the infrastructure at a higher level. We no longer scale up simply coding a proxy and setting up another service or physical machine — no we clone the whole machine virtual image (vmware image for instance) which runs the service with the click of a button.
The same goes for the database needs. We dont just setup a proxy and X number of physical machines mirroring the same data (although we can do that as well), no – we clone the entire machine instance and chain the data into one huge, massive datacenter.
Building applications the smart way
Imagine you could do all of the above, but using a language which doesn’t require physical machines, a virtual server instance or a full vmware image. What if you could work exactly like before, using the same language even, but target a server platform which allows you to scale both horizontally and vertically? (read: both in number of services and their capacity).
But it doesn’t stop there; what if you could also run your services on any platform you want, be it Linux, OS X, Unix or Linux. What if you could just forget about platform and runtime all together and focus completely on what your services should do?
In other words
- You author the service(s) in object pascal
- You compile and target a universal platform
- You can move your services between platforms
- You have full access to databases
- Your code is de-coupled from the database driver (portable)
- Your service framework uses industry standard message formats
- Your service framework uses ordinary REST protocols
- Your service can be called and utilized from all your clients
You will be able to move your entire service and online presence between providers without change in code. Tired of Amazon? Simply copy your files to Azure or another provider which supports nodeJS. Or why not make use of a normal website hosting service which is often fast, affordable and widespread?
This is the Smart Mobile Studio model. Giving you the power and tools to truly tap into and deliver killer cloud applications.
Combined with the fact that Smart Mobile Studio was designed for mobile applications you will be able to target iOS, Android, Microsoft Phone, Blackberry and HTML5 from the exact same codebase (!)
Leverage existing services
Smart Mobile Studio and our focus on platform independent nodeJS code is not out to eradicate existing technology, far from it. While we believe Smart Pascal is by far the best and outright smartest choice for modern distributed application programming – we recognize that a single product cant deliver everything.
We regard our product as one utility in a toolbox of many. As a developer it’s important to be versatile and flexible, adapting to customer need and technical excellence. And as such
As such we support frameworks like RemObjects SDK directly in our IDE. This means that your HTML5 and mobile applications can now talk directly to existing native Remobjects services. We also support Embarcadero Datasnap which gives your smart app’s the ability to connect, authenticate and consume your existing data services out of the box.