Monday, August 20, 2012

Portability is important for Cloud Software

3 cloud for developers


There are fundamental changes of how a software developer writes code inside a cloud. In past, a developer had a software package with specific operating environment to target and had to have knowledge around that operating environment APIs. However SaaS developers at the time being prefer popular and promising development standards which are open and platform-independent due to the fact that they want to target numerous users and in addition, they want their SaaS to be easily portable and extendable e.g. Paypal Online Component, Amazon Store API or Gmail API. Another issue for SaaP developers was that developers were faced with limitations on their clients computing resources inside client infrastructure. Finally, developers had to round ideas around a product, however in SaaS they are developing a service. More clearly, after software was delivered to customer, there were not much interaction between customers and developers unless in case of a bug fix or a new release which meant a new product in the sense of SaaP. While developing SaaS, customers frequently need improvement on their services and as long as they have a contract, this interaction exists. In service-based development, since software is being utilized by vast number
of users, therefore scalability is another issue for SaaS hosts.

3.1 Agile Development


One of most critical part of a SaaS project is the choice of development methodologies. Based on the unique features of a SaaS which was mentioned in section 1.2, agile methods are embraced inside SaaS projects. Reasons are that Agile methods are divided into a set of tasks and each task constitutes of several iterations. Each task consists of a set of goals and is completed within a number of iterations. More specifically, the benefit of using an agile method is that after the software designer will agree upon the task design, and the developers and tester start coding and testing respectively, since tasks can have more and more iteration, there can be additional features and perspectives in each cycle that can be added to the task over the time. The result of applying such process shall be that the changes are no longer infrequent, easy and financially sufficient to make. There exist numerous variants of Agile methodologies, some of which are XP, Scrum, Feature Driven Development and Lean Software Development.
CS Scalability, CS Portability

3.2 Portability and Scalability in SaaS


As mentioned in section 1.2, due to the scalability factor of a SaaS project, developers tend to utilize platform-independent frameworks in order to increase portability and cost efficient scalability inside their SaaS applications. As an example there will be developers preferring to work with Objective-C inside Apple’s iCloud, however since Objective-C is coupled to Apple’s products one cannot benefit from using it outside iCloud. As another example, Microsoft ASP.NET can also be a wise choice while working with Microsoft Azure service, however in case a company receives a better offer from deploying his service on Google App Engine, developers should re-writes at least some parts of application in Java or Python, if not all. For scalability, development team has two options available: Vertical and Horizontal Scalability. Vertical Scalability is the idea of enabling severs with CPU and memory power in order to handle a high load of requests. On the other hand, Horizontal Scalability is to have multiple unit of works and enabling them to handle loads of request, as if there are working as a single unit of work. Vertical Scalability is expensive however is an easy choice. On the other hand, Horizontal Scalability is financially cheap however requries some considerations. Considerations are on how all layers such as CPU (i.e. processing power), Storage layer (e.g. Clustered file systems or Amazon S3), the database layer, Application Layer(e.g. Tomcat clustering), the Web Layer, Load Balancer , Firewall can scale out synchronously. For more information on Scalability and Portability, see [2] .

Cloud Portability, CS Portability
Cloud Portability


References:


[1] Martin Fowler. Patterns of Enterprise Application Architecture. Addison- Wesley Professional, 2002.

[2] Armando Fox and David Patterson. Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing. Strawberry Canyon LLC, 2012.

[3] David S. Janzen and Hossein Saedian. Does test driven development really improve software quality. IEEE Software, 8(3):77–84, 2008.

[4]: Praising Gaw's blog, What is the difference between cloud computing and SaaShttp://cloudcomputing.sys-con.com/node/612033

[5]: STEVB's blog, Differences between SaaS and cloud softwarehttp://www.mindtouch.com/blog/2008/05/28/differences-between-saas-and-cloud-software/

Interested in reading about Android OS Securitiy, check out the following posts:

Android Attacks in a Nutshell
  

1 comment: