The commoditization of technology has reached its pinnacle with the advent of the recent paradigm of Cloud Computing. Infosys Cloud Computing blog is a platform to exchange thoughts, ideas and opinions with Infosys experts on Cloud Computing

« May 2010 | Main | March 2011 »

January 27, 2011

Connecting to a Cloud Service (Google App Engine) through Android

Google's Android is the Mobile OS platform targeted towards cell phones, smartphones, and tablets. With exploding growth in the number of portable devices like smartphones and tablets, many bill mobile computing as the next major phase in computing and communications. Released just a couple of years back, Android has went on to capture a major share of the mobile phone market unsettling rivals like Symbian OS, Windows Mobile OS, and others. According to a recent report, Google activates more than 1,00,000 Android devices each day and the trend is ever increasing.

Among other factors such as Java based environment, lightweight kernel optimized for mobile platforms, good UI, and great security features, strength behind widespread adoption of Android lies in the fact that it is a wonderful Open Source software which allows developers to exploit full capabilities of the OS in order to develop applications which are limited in nature and scope only by the imaginations and creativity of the developers. However, there is a caveat. No matter how good a platform is, it is always limited in its performance by the hardware on which it runs, and although the muscle power that is packed in smartphones and other mobile devices of today is approaching that of a low-end laptop, there are still limitations on how much you can do on a mobile phone.

In order to make an OS platform truly encompassing and next-gen, it is always desired that the OS platform incorporates features which would allow users and developers to easily and seamlessly communicate with other devices and portals on the Internet so that those features can collectively increase manifold the capabilities that can be achieved. With the advent of Cloud Computing, this desire has gradually become a necessity. Google has been pretty successful in doing so by allowing network communication pretty simple and straightforward process. In many cases, there are APIs available that take care of the communications, in others developers can utilize simple HTTP protocols to communicate.

Since Google itself focuses heavily on Cloud Computing and already has a robust Cloud infrastructure in place through its various product offerings, it would be natural for Google to offer features in Android that can leverage the Cloud capabilities. Imagine an inventory app for a company which needs to take data from hundreds of warehouses spread across the globe, and then needs to predict the inventory levels for multiple products at multiple locations. In addition, wouldn't it be helpful for inventory managers, suppliers and other stakeholders to be connected to this humongous data warehouse through their mobile phones so that they can in real-time check various statuses and can then adjust inventories of various products based on that intelligent info thus resulting in substantial cost savings and leaner operations for the company. This is just a possibility which can be achieved through Android and Google App Engine. 

In this entry, I seek to describe the process of connecting from Android to a Notes app in Google App Engine. Once the process is understood, it can then be replicated with minor modifications for various applications. I have created and hosted a Notes application on Google App Engine which lets users log-in with their Google credentials and then add, update, and delete To-Do notes for themselves. We want to increase this functionality on Android.

For this we create an application on Android which consists of two simple activities. On the first activity, we list all the accounts for which a user wants to connect with the Notes app. You can add accounts in Android easily and can add as much accounts as one wants. Once a user selects a particular account, Android app will then attempt to establish a communication channel with the Notes app on App Engine using the simple HTTP calls. You need to make sure that you have set permissions for the Android app to use CREDENTIALS and INTERNET.

The Android app will take user credentials related to that account from the Accounts and will get an Authentication Token. An AuthToken is the token which you get when you log-in to the App Engine app using the credentials. We get auth token by creating an instance of AccountManager and then by calling getAuthToken method on it. Once we have the auth token, we then trade it with an authentication cookie, which is then used in all subsequent communications with Notes app. For this we first create a HTTPGet method which contains the URL of the Notes app in the specified format.

HttpGet http_get = new HttpGet("" + tokens[0]);

We then create an instance of HttpClient and call on it the method execute, which will have the HttpGet method as parameter. The response object which we obtain contains the Cookie. We call the method getCookieStore().getCookies() on httpClient object to obtain the auth cookie.

Once we have the cookie, we then execute requests for getting the notes and uploading the notes using execute method of HttpClient object which contains the URL of the Notes app as parameter.

Whenever we request for the notes of a user, it gives us the response in a number of formats, an InputStream or a JSON object are few of the examples. We can use other formats such as SOAP as well to retrieve the response. Here, we are getting the response in form of JSON objects. For this we have added a piece of code in the Notes app on App Engine which formats and gives response in form of JSON object. At the Android app end, when we get the JSON object, we then decode it using the gson library which is provided by Google and then display the To-Do notes of a particular user as a series of Text strings in a new activity window.

In addition to retrieving the notes, a user can also add notes using the same procedure. The only difference in the end will be to call the appropriate URL which is exposed by the App Engine app in order to add the notes. Once the request is successful, a status message is thrown back stating that the operation has been successful.

This entry gives a glimpse of the powerful yet easy capabilities of the Android OS to communicate with the Internet in general and App Engine in particular. Developers can exploit these capabilities in a number of ways in order to make their Android apps much more capable, useful, and informative.  

January 17, 2011

Banking 3.0 : Organizational Drivers for Cloud Computing- Financial Institutions

To talk about the organizations that manage our money and assets, let us first classify them into the kind of work, they undertake. Then a careful study of the trends and a clear understanding of what cloud computing can offer, would provide us with the drivers for this sector to adopt cloud computing.

Bank services.jpgFor categorization, we can use a freshman's criteria of the nature of work. Hence we have

   ·         The banks

    o   Consumer Banks

    o   Govt Banks

    o  Industrial/Corporate/Specialized 


   ·         The Insurance Companies

   ·        The Non-Banking Financial corporations

trad dc.jpgIn terms of size and amount, IT services required at consumer banks can be the superset with the rest using similar or a part of that. Hence if we concentrate on consumer banks, we can easily breakdown the IT services required for a regular bank, as :   

The Evolution of Banking

Now, Banking 1.0 was all about brick and mortar branches, long queues, and generic services. Then with the advent of technology came Banking 2.0, an era of net and mobile banking, any time banking, customized and privilege services, and banks which took lead in technology, began to differentiate on these fronts. But then this technology soon became a commodity and the differentiation gone!  And while banking organizations were looking to pump in money to bring in more differentiation, came the recessionary times and IT dept had to cut budgets. With tightening Infrastructure budgets, came cloud computing and infrastructure as a Service concept. Almost every banking organization started taking note of this revolutionary innovation in IT infrastructure space, positively, albeit with some concerns and confusion. This novelty has all the writings to be called Banking 3.0.  Let's have a look why.

The concept of cloud computing already existed in banking services for some time now. ATM, net banking , CBS all work on concept of on-demand, variable pressure, real time-any time concept, though, technically the data center is traditional as ever. Hardly ever do we come across a non-functional ATM due to increased pressure. It is because the bank has over provisioned the servers for the ATMs with keeping the maximum load in consideration. Rightly so! After all, a 10 min failure of an ATM server in a prime location could be catastrophical for the banks brand and business.  

The Drivers

Economical: Now the above mentioned availability is though beneficial for the banks customers, it burns a deep hole on the IT dept pockets. And this is just one service. Add to it the net banking, Core banking at branches and the Infrastructure costs soar high. And that's not it.  There are internal customers of the bank, the employees who need continuous access to emails, payrolls, sales applications, budgeting applications, the branches handling the routine processes and the infrastructure budget just seems to be touching the sky.

So, this becomes the prime driver for the Banks to adopt a solution that helps them provision infrastructure linear to the current load on the applications, spend only on the infrastructure that the bank is using and be not hassled for any technology up gradation or maintenance. All this comes with moving the infrastructure to the cloud, physical server virtualization, and consulting partner cloud management.

Core Competency: Another important reason, which moving to cloud gives to banks, is the ability to concentrate efforts and resources on their core competency i.e. innovative banking. If banks enter into a strategic alliance with a Technology Consulting partner and leave the worries of all the infrastructure mess to them, they can do much more to delight their customers by innovating in the areas of mobile money, payment innovations and the likes. No need to mention the increase in dollar revenues this could bring and the leap they could take with respect to the competitors.

Legacy Applications Now, if we have a look at the technical aspect of moving to cloud, another compelling reason comes from the point of view of managing legacy applications. Most of the banks have risen through the ranks and have grown huge over a considerable period of time. Technology, business and market have changed drastically and so has been the heterogeneity of applications build as and when need was arisen. Now when we look back we find a whole gamut of applications developed on different platforms, different technologies and different architectures. Some of them are redundant too. For eg : For many banks there are three different and independent applications for branch banking, net banking and mobile/phone banking, accessing the same customer account. All of them have their own databases and even servers. Though it aint broke yet, but there is an immediate need to fix it, because this kind of redundancy increases the complexity and the pressure on the infrastructure. So while moving to cloud, these applications, technology and architecture could be homogenized in a gradual phase, using the virtualization layer, which will not only reduce the number of servers in the DC but even  the cloud management becomes easier and the banks can save a fraction of dollars currently being used up in the redundancy.

Staffing: Next, not so obvious but an indirectly important driver could be the Human resources that banks could save by moving over to the cloud. This is actually a shoot off from the core competency driver. A bank would need experts in marketing and finance but currently it also hires experts in technology and in numbers. If a bank decides to move its infrastructure to the cloud and rest its burden on a consulting partner, it can benefit in two ways. First, it can reduce the staff which was till now required for redundant work as mentioned in the above paragraph, and second the onus of hiring and paying the important resources for infra management would lay with the partner and bank can employ the same number of staff in its core finance and marketing dept. It can be argued well that this is possible without moving to the cloud and just outsourcing, but a partnership would rest the onus on the consulting partner, to provide the same, if not higher, quality resource which the bank used to employ and more importantly moving to cloud would reduce the number of resources required, simply outsourcing will, probably, not.

Passing the Buck: The last major reason, for banking IT infrastructure to move to cloud, is the benefit it provides to the IT service users. In the broadest of categorization, we have the services provided for external customers and the services provided for internal customers (employees). For internal services, moving to cloud could

·        Facilitate better emailing services, reduce the downtime of many routine applications, caused by excessive pressures.

·        Improve the response time as the server space would always be available because of limitless virtualization capacity

·        Reduce the time to market for any new application developed, as testing for any scale of implementation is possible without affecting the production environment

·        Would simplify the usage-expense sheet for all the business units, as all the business units will use the services on demand and will pay for only what they use , thereby also helping the management to find out efficiency of units in terms of services they use

For external users (business customers), moving to cloud could simply mean cheaper access to the banking services, as banks would look to pass on some dollars they save in managing the infrastructure. Also cloud may bring with it, some innovation in new services offered, though, this area still needs a lot of exploration.

Hence these drivers help make the clouds clear somewhat, over the banking and financial organizations decisions of moving their IT infrastructure into the cloud. The specific and technical details can be sorted out with the consulting partner they wish to engage, the important thing is to make that first bold step and say yes to cloud.

Continued from Here 


To follow:  Organizational Drivers for Retail, Manufacturing, Telecomm to adopt Cloud Computing and Infrastructure on Cloud