Thursday, November 6, 2014

Cloud Computing Technologies


Cloud Computing Technologies

Standard Object Application Protocol (SOAP), JavaScript Object Notation (JSON), AJAX, and Representational State Transfer (Rest) are new standards that make working with different providers easier for developers and a better user experience for the users (Anderson, 2007). Many of the new standards evolved from the need of developers to collaborate across platforms. Emerging standards such as Node.js are designed to make developing cross platform applications faster and easier.

AJAX

Asynchronous JavaScript and XML (AJAX) is a software design pattern that uses internet browsers to call information on a page with script without making a page refreshes (Györödi, Györödi, Pecherle, Lorand, & Alin, 2009). The AJAX message lightweight and does not include metadata such as definition information.  An example of can be seen in figure 8. Organizations are able create webpages that mimic traditional desktop applications with AJAX. AJAX is a way for organizations to expose business functionality in a way that is consumable by other programs.


Figure 8. Ajax XML

JSON

JavaScript object notation (JSON) is a format that is now commonly used for Ajax (Crockford, 2006). Transferring XML to a web page is difficult to process, space intensive, and processors intensive (Lawrence, 2004). Unlike XML, which must be parsed by the browser, JSON allows the direct conversion of text sent from a web server into a JavaScript object that is directly accessible by other JavaScript objects without string parsing. The direct conversion saves webpages time and processing power (Crockford, 2006). JSON has less extra characters and white space than XML.  An example can be seen in figure 9. Consequently, JSON consumes less network bandwidth than XML. Slow network bandwidth is a large contributing factor to slow web pages (Crockford, 2006). Using JSON is a technology that is easy to read, efficient, and is easier to combine desperate data sources (Severance, 2012).
 

 

REST

Roy Fielding proposed a set of principles that constitute a set of standard transmission architectures for the internet in his 2000 dissertation. Fielding (2000) named this architecture Representational State Transfer (REST). REST principles are designed to make communication over the internet efficient and scalable across multiple servers (Vinoski, 2007).
REST enforces standardization of communication. This allows web services written in one language to easily communicate with webservers written in other languages (Vinoski, 2007). REST is also stateless. Servers do not keep information about the clients that are calling them. Being stateless allows clients to transfer between servers seamlessly and allows easy scalability (Fielding, 2000; Vinoski, 2007).

Node

Node.Js or Node is a cross platform language that allows developers to write server side JavaScript (Tilkov & Vinoski 2010). Node.js allows developers to write in one language for the browser and the server allowing them to write code faster (Tilkov & Vinoski 2010). Being fast, having a low memory foot print, and being specifically designed for Ajax transactions, Node.js is rapidly becoming a popular language for cloud computing (Tilkov & Vinoski 2010).

OData


Open data (OData) is a set of web services that allow clients to make queries against databases with a web browser (Krishnaswamy, 2010). This allows companies to make flexible web services that allow clients control how the data will be presented back to them (Krishnaswamy, 2010). Rather than having a set of static web services OData allows clients of the web services to construct their own data interfaces.

Tuesday, October 7, 2014

as a Service

Software as a Service

In research, software as a service (SaaS) it is generally referred to as software, distributed as an internet-based web service (Bajaj, Bradley, Cravens, 2008; McCreary, 2009). Using SaaS can have both advantages and disadvantages. SaaS can be less expensive, platform agnostic, faster to implement (Laplante, Zhang, & Voas, 2008). SaaS can also have slow performance, create dependencies, and can be limiting to organizations (McCreary, 2009).

Cloud computing services has allows companies for take advantage of lower cost of entry, rapid development, and pay-as-you go in contrast to large capital expenses, slower development, and high barrier to entry (Andersen, Birchall, Jessen, & Money 2006; Denne, 2007; Katzan & Dowling, 2010; Gill, 2011; O’Sullivan, 2009; Waxer, 2009; Wulke, & Kohl, 2004). Entrepreneur are using cloud computing’s lower cost of ownership and improved productivity to start businesses that would not be feasible with traditional software development methodologies (Denne, 2007; Sharif, 2010; Wei et al., 2009). On-demand services allow companies to handle large spikes in traffic without having to purchase excess servers that are underutilized the majority of the time. Advances in web services technologies such as grid computing and virtualization made it possible for providers of cloud services to rapidly scale their cloud services to meet the needs of their clients (Prez et al., 2009). Cloud computing allows organizations to pay only for what they use with no large capital expenses at the beginning of a project by effectively outsourcing a part of their IT infrastructure (McGrath & MacMillan, 2009).

SaaS uses platform agnostic transmission methods. The same SaaS can be used by developers utilizing different programming languages and operating systems without changes by cloud provider (Laplante et al., 2008). SaaS providers can issue updates without requiring the customer to install new software. Customers using SaaS always have the latest bug fixes as soon as they come out.

Application program interfaces (APIs), the programming model behind SaaS, allows software developers to rapidly create software by building upon readymade components (McCreary, 2009; Robillard, 2009). Readymade components have advantages and disadvantages. Traditional software components locked users into software versions. These components could be hard to update across an organization which made bug fixes by the vendor difficult to implement. They often locked users into particular software languages and language versions (Robillard, 2009).

Platform as a Service (PaaS)

Platform as a service allows customers to create entire applications on the cloud platform. Platform as a service (PaaS) is generally thought of a system that can be built upon. Companies such as Microsoft and Google allow companies to host custom web services. While other companies such as Salesforce allow consumers to write code in the cloud that is executed against their system. PaaS is a platform that can be expanded but consumers of the service do not have direct access to the operating system. Consumers of PaaS cannot install software such as antivirus programs or audit the security of a system.

Infrastructure as a Service (IaaS)

IaaS gives consumers hosted computers. IT professionals rent time on computers with IaaS. Providers such as Amazon and Rack space allow companies to purchase time on servers. Users of IaaS can use a remote desktop application to remote onto a cloud hosted computer and install software and configure the server similar to how they would have if they had purchased the server and hosted it in-house. IaaS allows companies to take advantage the on demand, scalable of the cloud while having control over data and security (Karadsheh, 2012).

As A Service (aaS)


Some cloud computing literature described three main forms of cloud computing (Chebrolu, 2010; Schneiderman, 2011). Although IaaS, PaaS and SaaS represent most types of cloud providers, there are other types of providers. These types of services are often referred to as “as a service” (aaS) or everything as a service (EaaS) (Banerjee et al., 2011). The concept of EaaS is that most IT services can be broken down into cloud based components. Testers can use testing as a service (TaaS) to take advantage of cloud computing’s scalability to perform scalability tests (Yang, Onita, Zhang, & Dhaliwal, 2010).

Thursday, September 4, 2014

Evolution of Cloud Computing Pt 3


Cloud Computing

Cloud computing is the nexus of many business and technological advancements. The technology of grid computing allows cloud computing providers the ability to rapidly scale to meet the needs of their customers. Standardizations of transmission protocols such as Asynchronous JavaScript and XML (AJAX), SOA, and JavaScript Object Notation (JSON) make it relatively simple for organizations to consume cloud computing services. The billable utility computing model allows computing providers the ability to monetize their offerings. As with Web 2.0, businesses are exposing business functionality through web services (Baumbach, 2009). This creates the opportunity for businesses to monetize their IT assets.
The practice of an organization making software functionality available to the public through a web service became known as Software as a Service (SaaS). With SaaS, companies are offering many types of services. Hardware that can be accessed over the Internet, termed Infrastructure as a Service (IaaS) and extensible platforms, called Platform as a Service (PaaS). Most cloud services fit into the three categories of SaaS, PaaS, or IaaS (Mell & Grance, 2011) and are depicted in Figure 6. Services that fall outside of the general three categories of cloud services are often called Everything as a Service (EaaS) or as a Service (aaS) (Banerjee et al., 2011).


Figure 6. Cloud Service Types

There is no official definition of cloud computing. The National Institute of Standards and Technology (NIST) defines cloud computing as having five distinct characteristics (Mell & Grance, 2011). First, cloud computing is on-demand and is self-service. Consumers of cloud services can sign up online and immediately start using the cloud service. A cloud service does not require salespeople to negotiate the price, legal people to work out the contract, or implementation specialists to help the customer work with the system. Customers signing up for cloud services have a set price, contract, and implementation that they will use. Cloud computing must be accessible over broadband communication channels. Cloud computing’s resources are pooled and computational capacity can expand rapidly. Many cloud computing providers use grid computing to expand rapidly. Finally, cloud computing is a measured service. These measures help cloud computing services to rapidly expand to meet the needs of consumers or throttle consumers who are using enough services to slow the system down for other customers.



Figure 7. Cloud Computing Principles

Monday, August 4, 2014

Evolution of Cloud Computing: Web Standards Pt 2

Service Orientated Architecture

Service orientated architecture (SOA) is the codification of distributed computing into a standardized approach and messaging format. SOA allows organizations to develop a series of services that can expose programming functions and objects through a special type of XML called simple object access protocol (SOAP). Through Web Service Definition Language (WSDL) and Universal Description Discovery and Integration (UDDI), developers can discover what functionality the web service has available (Chen & Tsai, 2009).
Service oriented architecture enables the reuse of software components saving organizations time and costs by increasing efficiency (Welke, Hirschheim, & Schwarz, 2011). Infrastructure efficiency allows companies to quickly make changes and grow their IT portfolio. Componentized systems allow organizations the ability to upgrade single components rather than entire systems (Sarkar, 2009; Welke et al., 2011). Figure 5 shows the software code that makes up a SOAP message.

Web 2.0

Berners-Lee et al. (2006) note that the evolution of the World Wide Web is not happening with the addition of more complex algorithms but through the incorporation of physiology and sociology into constructing web pages. Berners-Lee et al. believed understanding why, socially, people used the web is essential to the evolution of the Internet. They also believe that making it easier for developers to collaborate between organizations will enhance the overall web experience. The Web 2.0 movement is a combination of new technologies that are easier to use, encourage collaboration, have easily accessible data, and have a social and psychological aspect making web pages more powerful and socially aware (Anderson, 2007; Paroutis & Saleh, 2009).

Web 2.0 is a movement away from the restrictive explicit environment of SOA into a system where communication to users and between organizations is more freely available (Lin, 2007). Web 2.0 is principally about making interactions seamless and easier for both the developer and user.

Friday, July 4, 2014

Evolution of Cloud Computing Pt 1


Evolution of Cloud Computing Pt 1

Research on distributed computing, grid computing, utility computing, and software services are the building blocks of cloud computing (Berman, Fox, & Hey, 2003; Feeney et al., 1974; Ross & Westerman, 2004; Vouk, 2008). As technology changes, many businesses are finding ways of leveraging new technologies. Cloud computing allows many businesses to gain a competitive advantage by leveraging advances in computers and networks.

Distributed Computing

In distributed computing systems, as depicted in Figure 2, computers interact with each other to achieve a computational goal. Distributed computing is a heterogeneous endeavor where each computer, using independent software, has a specific task to perform (Thain, Tannenbaum, & Livny, 2005). Distributed computing can handle complex tasks requiring a large amount of processing power. Distributed computing systems take advantage of software on different platforms. Similar to cloud computing, distributed computing allows software developers the ability to swap out system modules if they no longer meet the business needs.


Figure 2. Distributed Computing Systems

Grid Computing

Grid computing, shown in Figure 3, an offshoot of distributed computing, is homogenous, loosely coupled, and scalable (Udoh, 2011). Grid computing utilizes a controller to rapidly scale processing power by bring more computers onto the grid when needed (Udoh, 2011). Grid computing uses inexpensive personal computers, creating a low-cost way for organizations to turn excess capacity into the computational power of super computers (Prez et al., 2009). Elastic computing is a core principle of grid computing. The controller can increase or decrease the number of computers being used to meet the computational needs with elastic computing (Krautheim, 2010).


Figure 3. Grid Computing

Utility Computing

Utility computing, as depicted in Figure 4, takes the concept of elastic computing and applies a practical business application to it (Roy & Roy, 2005). Customers of the utility only pay for the services they are using. The consumer pays through a subscription or for the metered use services they are consuming (Krautheim, 2010). Information technology assets and services become consumable similar to a phone or electrical utility (Roy & Roy, 2005).
Utility computing can lead to lower cost of ownership on IT products by reducing the need for underutilized servers. Utility computing can also reduce the maintenance cost that can be a large part of an IT budget (Marston, 2011; Roy & Roy, 2005).



Figure 4. Utility Computing

Tuesday, July 30, 2013

Cloud Workers: How Cloud Computing affects Testers

Tester

Connectathon       
By Dugsong, via Wikimedia Commons
Cloud computing can present a unique set of challenges to testers.  Every system is not built the same.  Some are more stable and contains less bugs than others.  Some systems are similar to traditional software development while others represent a completely new way of doing things.

Pro

Some systems such as Infrastructure as a service (IaaS) are similar to traditional software development systems.  With these fimilar environmens testers do not have to change much of their methods of testing.

Con

Other systems such as platform as a system (PaaS) can represent entirely new paradigms.  Multitendency system and databases, for example, are systems that exist across multiple systems.  Traditional test automation can involve inserting and them manipulating data.  If the testing system does not pin itself to one database database update latency may cause unexpected errors.  PaaS often do not have the same testing hooks that many mature software languages do.

Software as a Service (SaaS) can suffer from high loads.  The cloud provider may also not give the developers a test environment to work with. When they do find bugs it may be up to the cloud provider to fix.  The cloud provider may not be willing to fix the service before the systems is due to go into production. 

Many cloud systems change versions outside of the SDLC of the current project.  System that are tested and working may break without notice.  Systems with governors may work at the time of release but break under strain.  

Conclusion

In short testers are the ones who have the great burden working with could computing.  They need to find different ways of testing.  In the past testing mainly happened before deployment into production and was expected to remain working the same until the next release.  Cloud computing changes that.  Systems can easily break after deployment changing the way testers need to test.  

Monday, July 29, 2013

Cloud Workers: How Cloud Computing Affects Developers

Developer

Wikimania 2009 - Tim Starling
By Nicolas Goldberg,via Wikimedia Commons     
For developers cloud computing represents a new set of tools that can make development time faster by giving them ready made tools and components.  Not all components are made the same.  Some tools such as Microsoft's Azure and Amazon's AWS give a set of tools that most developers would not have access to.  These tools can come with caviots that can frustrate developers and delay projects.

Pros

Developing in the cloud gives developers access to more tools than ever before.  Software developers can take advantage of elastic computing to scale their applications.  They can globally distribute their assets to increase speed of websites.  Cloud computing increases time to market with many applications.

Cons

Cloud computing does come with limitations.  Some of these limitation are due to inherent factors such as the latency of transmitting information over the internet while other limitations come directly from the cloud provider to safeguard one user from taking down the system for everyone.  Developers need to make systems "cloud ready".  A cloud ready system is one that is tolerant to the limitations of cloud computing.

Over the past 20 years the software development industry has undergone an evolution into better systems and methods.  Design patterns such as the abstract factory pattern help developers complex systems that meets a specific need, development methodologies such as test driven development has help companies cut down development time.

Building in the Cloud

Systems that are not cloud ready can break when the system is under strain.  Latency of the internet can cause system to become prohibitively slow.  In modern development the software is tested and then put into production with a limited smoke test to make sure it works.  With cloud computing systems can fail long after they are deployed.  Software developers need to think critically about the limitations of the cloud they are using and adjust their development methods in a way that will work with the cloud.

Software developers need to have a way of monitoring their cloud based software to make sure that events such as strain or systems upgrades do not break the system.  With traditional software development after the deployment the systems is forgotten about until.  Cloud system's need monitoring in production.  Simply passing test in the development environment will not suffice in the cloud world.



Tuesday, July 16, 2013

Cloud Workers: How Cloud Computing affects Project Managers

Project Manager

US Army 51968 Charlie Wilcox, USASMDC-ARSTRAT Simulation Center program manager, left, talks with Ben Matthews, project manager, and Cathy Hatchett, security manager, both with GaN Corporation. GaN Corporation was
By Deborah Erhart, via Wikimedia Commons     
Cloud computing is a new paradigm for IT professionals.  For project managers cloud computing brings with it new tools that bring with them new possibilities.

Pros


Cloud computing services come with loaded with a predefined set of features giving access to functionality for no additional development time.  Many cloud computing providers such as Azure and Amazon's AWS have templated or pre-defined systems reduce the time to develop projects.  While others such as Salesforce have an app store that allows the easily addition of adding for low or no cost.

Cloud computing can be empowering to less technical workers such as project managers by giving them the ability to use and administer software without always involving other IT workers.  Some cloud systems allow non technical workers the ability to add on extra components the same way they would install an app for a phone.

Cons

While cloud computing has great benefits for organizations there are some pitfalls that project managers need to know to help them plan and reduce risk in their projects.  Software as a Service (SaaS) for many cloud providers can have updates that effect the project.  Cloud services that work one day can break then next.  Someone needs to be responsible within an organization to keep track of the emails from the cloud provider about scheduled outages, updates, and bug fixes.

When using cloud software half of the system is controlled by someone else.  What may be an emergency to an internal IT organization may not be to the cloud provider.  Many cloud provides have a 72 hour turn around time for their help desk.  But fixes or essential updates may take months to happen if they happen at all.

Cloud computing is also a fixed asset.  With traditional software projects software development teams can build highly flexible software.  Cloud computing is pre-defined resources that are inflexible.  Project managers need to learn about the limits of the system they are purchasing before deciding to go with them.

Discussion

Cloud computing can help organizations succeed but it requires PMs to plan for delays due to the cloud provider.  Project managers need to also find the limitations of the cloud systems before deciding to go with the system.

Sunday, June 30, 2013

Cloud Workers: How Cloud Computing affects IT Managers

What businesses need to know before getting into the cloud.

In recent years cloud computing has received a lot of hype.  Many IT organizations are succeding with cloud computing while others flounder.  While the cloud provides some great advantages for many organizations it also has its pitfalls such as availability, latency, and rigid components.  This article talk about the pros and cons of cloud computing from different people within the organization.

IT Manager

US Navy 090929-N-8863V-016 Rear Adm. Kevin Quinn, commander, Naval Surface Force Atlantic, left, operates a portable pressure calibrator as Quality Manager Jeff Walden explains its use       
By Greg Vojtko, via Wikimedia Commons     

Pros

IT managers look to cloud computing for many reason. It can help reduce the IT burden to be experts on all of their systems. It can offset the need to purchase new hardware. It can help them focus on the it assets that are important to the company rather than spend time dealing with peripheral systems such as email. Many small to medium sized companies do not have the financial resources to hire a person who is an expert on all of there various systems. Rather they hire IT people who are generalist. They may also not have the resources to pay for a secure data center with guards and security audits. Some cloud providers offer geographic redundancy to alleviate the impact of a natural disaster. Some cloud providers automatically scale their services to meet the needs of the client. For IT managers to do this without cloud computing they would have to have excess servers on hand to meet the variable need.

Cons

For IT Managers the risk in using cloud computing is in the responsiveness to handle IT issues. SLA's in cloud computing favors the cloud provider. IT teams are often called upon to handle emergencies. With cloud computing the cloud computing provider determines what constitutes an emergency. An issue that kept the IT team at the company all night to fix the issue may now have a 72 hour response time for the problem email to be responded to.

Hero or Villain

IT people are often called upon to be the hero of the organization. They will often stay late or work weekends to make sure that the companies IT system are working. Many business people expect a certain level of service from their IT people. Cloud computing is essentially outsourcing a part of IT. The level of service is determined by the cloud provider and the SLA. In cloud computing each company does not negotiate its SLA with the cloud provider. The cloud provider generally writes a SLA that favors keeping their systems inexpensive and not liable for damages.

If expectations are not set with the business the IT team can seem like the villein. Problems with the cloud systems are submitted to the cloud provider and often times the IT worker can do no more until they receive a response. If the expectation of the business is that the IT workers will stay late and work weekends to fix the problem and instead IT submits a request to the cloud provider and wait 72 hours there may be hurt feelings. Also with custom systems provide greater flexibility and capability of what IT can do. Cloud systems are often rigid and fixed in what they can do. This often causes IT to say no to business requests or take a long time to develop a work around.

IT workers need to be versed in numerous systems. They need people who are knowledgeable in such dynamic fields as computer repair, networking, email systems, database systems, websites, and all of the custom software that the company bought such as as SharePoint and MSCRM. Cloud computing can free IT workers from maintaining systems that are not core to the business. Not all cloud systems are maintenance free. Some cloud systems are complex and require administrators who are versed on them; creating an additional burden on IT workers.

The key to understanding the impact of cloud computing on IT is in reading the documentation before starting a cloud project. Business should be aware of the limitations that cloud computing can create. Business should also be aware that they are outsourcing part of their IT and that they must live with the customer service stated within the SLA. Finally, the cloud systems should be evaluated to see if it frees IT up or creates additional needs on IT.

Friday, May 31, 2013

Cloud Workers: How Cloud Computing Affects Business Stake Holders

In recent years cloud computing has received a lot of hype.  Large established companies such as Microsoft are going “all in” with the cloud.  New cloud companies such as Salesforce are seeing tremendous growth.  Cloud listing websites such as cloudbook.net have a continuous increase in new providers.
Cloud providers list the many benefits of cloud services.  Cloud services can reduce the operational expenses by providing a pay as you go model that reduces the need for capital expenses such as servers and data centers.  Cloud computing is elastic, it can scale with demand.  Companies with variable demand do not have to purchase extra servers that go unused.

While the cloud provides some great advantages for many organizations it also has its pitfalls such as availability, latency, and rigid components.  This article talk about the pros and cons of cloud computing from different people within the organization.

Stake Holder

Wikimedia Foundation Marlita Kahn
By Lane Hartwell, via Wikimedia Commons
Business people looks to cloud computing to have systems that are lower cost, faster to produce. But they can also be limiting for an organization. The question business people need to ask is "is my company cloud ready".

Pros

Cloud computing give business people quick access to software. Many cloud software offerings can be tried before they are bought. Reducing the need for a selection process. Cloud computing relies on a subscription modle or pay-as-you-go model. Traditional software requires purchases of hardware and software before the project is started. These capital expenses can be quite large for the business. Cloud computing uses operational expence. Using opperational cost allows companies to start new projects without having to allocate large amounts of capital. This can help companies make

Cons

The fundamental difference for business people is that cloud computing software is often rigid. Custom built software is extremely flexable. The software build in house can be changed to meet changing buisness needs or changes in stragegy. Software bugs can be eaily fixed and issues addressed. Cloud computing companies can handle thousand of clients. They are often not responsive to the needs of indivdiual subscribers.

Finding the Ballence

Cloud computing can allow business to business to have more IT assets to help grow their company faster. It can also limit the growth of the company by locking it into a rigid system that does not meet its needs. When deciding if the cloud is right for the business one must first decide if the business can live with set IT assets or it needs custom software to grow. Some businesses follow a typical strategic rout. For them the cloud offers tools that are able to meet their needs. Other companies have a strategy that is not typical. For the company that has an out of the box strategy they may not be suitable to in an in the box software solution such as cloud computing.

Monday, April 1, 2013

Software as a Service



Advancements in stabilization in software development techniques as it led to companies being able to sell or give away a programmatic interface that allows developers to use their services.  Application interfaces (API) have created a World Wide Web that is programmable.  This programmable Web allows other companies access to a wide variety of tools. 
Companies who are able to use Web services and APIs are seeing a reduction in cost, quicker time-to-market, and a competitive advantage over their competition.
Not every company gains a competitive advantage to using APIs.  IT managers looking APIs must look at many factors to determine whether or not these types of services will benefit their company. 

Definition
Before the programmable Web revolution companies had to develop software often from basic building blocks into the finalize project.  This software was often tied down to the operating system it was built on.  If a company wanted to make a geographic information system they would need to start with the basic building blocks and work up from there.  These tasks could take months or years.  If they wanted to correlate their system with crime statistics they would have to make sure that there geographic information system was compatible with crime data provided by the government.  If the crime to a database was an Oracle database and the geographic information system was a MySQL database then the two databases often would have a great deal of trouble communicating with each other.  Today with readily available APIs from companies such as Google and from the government this type of data is no longer tied to a specific system.  Websites such as crimereports.com can be built in weeks and not years at very low costs.

Providers
Microsoft recently with the release of Windows 7 has moved many of the services that were traditionally on a computer to the Internet (“Clash of the clouds; Cloud computing“, 2009).  For services such as e-mail, and social networking Microsoft provides via an API that the operating system can use.  This API, however, is not limited to the Windows 7 platform.  The same information is accessible to a desktop computer can be accessed through a smart phone or a video game console.  Any device that has Web access can potentially use these services.  This frees the user from the computer and allows them to choose to use programs on number devices.  They can even log into other computers and have their information available to them.

Microsoft
Microsoft is launching a new platform for companies to develop APIs (Microsoft, n.d.).  Microsoft's new platform called Azure allows companies to run virtualized servers.  In the same way that the Windows 7 operating system allows people to access their systems remotely, Azure allows companies to host their programs remotely in a way that is accessible to a large number of people. 

Amazon
Amazon has become a leader in the sale of APIs (Amazon, n.d.).  Companies can now build entire websites in which everything is hosted on the Amazon platform.  Amazon's SimpleDB allows companies to store their data remotely on Amazon's servers.  Amazon's Simple Storage Solutions (S3) allows companies to store a large amount of data.  Amazon provides low cost or free API services to many companies.  The reduction in cost coupled with the speed of delivery and low maintenance makes the Amazon API solutions desirable for many new companies.

Google
Google has developed Google App Engine which is a hosting service for API systems (Arnold, 2009).  That combined with the dozens of API systems that Google gives away for free makes Google a leader in API delivery systems.

Many websites have integrated Google Map’s freely available API.  Websites called mash-ups combine information from several APIs.  Google maps have been a popular API because it allows people to visualize data.  For example, Redfin.com combines Google maps with real estate data to create a map of available homes for sale.

Google also offers a search service that allows companies to make a custom Google search on their website.  Google’s search API allows companies to customize the look and feel of the results.
Google offers programmatic access to its Google Docs program.  This allows companies to programmatically create web forms and spreadsheets easily.  Google is using this API to allow people access to their database API Google Base.  Through Google base people are able to manage other Google products such as Google’s Image storage system Picasa.

The Google Merchant API allows companies the ability to submit items for Google shopping.  Through the API merchants can set post products that they want represented in the Google product search.
Governance

The World Wide Web became popular in the 1990s.  It's only been in the past 10 years that we have seen companies offering programmatic interfaces.  Unlike many internet based products API’s are not the idea of one organization.  They have been developed slowly by many organizations that have found a need that they could fill.  Literature on the subject of APIs usually focuses around cost-benefit versus risk analysis.  Companies that use APIs typically have a competitive and it over traditional companies.  APIs, however, are not for every company.  Organizational structure, privacy concerns, and disaster planning are things to consider when thinking about using APIs.

Cost
Using APIs has become a cost-effective means for many startup Internet companies.  Paid APIs are done by a pay-as-you-go system this means that companies are able to start up at very low cost and grow as the revenue comes in.  In traditional Internet company would need:  servers, a server facility, licenses, and support staff just to get the website up and running.  This capital expense without any revenue coming in can be a barrier to entry for many entrepreneurs (O’Sullivan, 2009). 
Using APIs companies can host their websites remotely, use a database such as SimpleDB to house their database and use pre-existing services that allow them to build their websites faster.  Products such as he Amazon’s S3 allow companies to use store large amount of files without having to worry about bandwidth limitations and server storage space. (Smith, 2009)

Cost of Maintenance
Companies that house their products on the Web can do so without having to hire the traditional support staff as traditional companies do (Smith, 2009).  For example, database administrators are responsible for backing up the data, indexing data for faster delivery, replicating the data to other servers; maintain the hardware and many other tasks.  With Amazon's SimpleDB this is handled by Amazon itself.  Systems backups, indexing, and other tasks that visual database administrators do are done automatically by Amazon's database.

In 2007 Carbonite a storage provider lost the data it housed for 7500 customers.  Failures like these while rare still happen.  When a customer is looking at a potential API service provider they need to look at the level they are paying for. The document that specifies what the service provider is responsible for his called the service level agreement (SLA) (Zielinski, 2009).
  An API provider should have a SLA outlines their responsibilities.  When choosing an API provider business people need to look at factors that then would care about in their own organization (Zielinski, 2009).

Service level agreements should spell out exactly what the API is providing in terms of security, auditing, and disaster recovery.  In a service provider should fail to meet their responsibilities as outlined the contract they should be liable for losses (Ria & Chukwua, 2009).
            
Development
Developing software and WebPages that use APIs require developers architected their software in a way that is compatible with APIs.  This usually means writing up their software into logical parts and then componentizing their software developer efforts. 
There are two ways that API services providers generally use to allow others to interface with their system.  The first is an XML-based cross platform Web communication standard called Simple Object Access Protocol (SOAP).  This allows developers working in different offering systems in different programming languages to share components easily.  A second way is for servers providers that cater to web pages using a technology called Ajax which is a client-side browser specific technology.  These API providers use the Web standard JavaScript Object Notation (JSON). SOAP is used primarily to transfer data from server to server; while JSON is used to transfer data from server to webpage. 

IT Architecture
Companies that use APIs are forcing themselves to take a modular approach to software development (Luthria & Rabhi, 2009).  While this can lead to delivery of their products quicker to market they can also lead to some other issues.  Service oriented architecture, for example, does not allow programmers to integrate their software as a whole.  Each functional part of the program must a broken down into components that then can indicate with each other via SOAP.  SOA transitions can happen both within the organization and externally to an API provider SOA fee uses XML protocols to send data back and forth between the different functional parts of the program.  XML can be very verbose in its transition of data.  This extra information that is passing through the company’s internal and external network can cause problems with network latency.  Latency can lead to software freeze ups and web pages that take too long to load.  Working with APIs, developers need to be mindful of the amount of data is transferred between systems and the capacity of the network.

Updates
Support staff at company providing APIs perform all the maintenance and updates necessary to keep their systems secure and running at peak performance (O’Sullivan, 2009).  In a traditional company is to be handled by the IT staff.  Offloading this task and reduce the number of IT staff that a company needs.
Versioning of APIs can be a difficult issue for API providers.  Over the years and API provider can have several different versions of their service available.  Issuing updates can break existing client’s software.  Many API providers force software developers to choose a version that they wish to use.  This prevents version conflicts and allows projects to target one statistic set of services offered by a API provider.  Because new versions are not forced upon API clients, when a new version comes out it is up to the client to choose whether or not they wish to upgrade their current version.  New versions of an API may contain bug fixes and new features but they also could destabilize a company’s current software product or webpage.  Because the client does not control when new versions come out there may be no development budget to implement and test the new versions.  Because there are some writers and clients are often out of sync with versioning and software development efforts clients need to be flexible enough to make changes whenever the need arises.   

Adapting
Traditional software is constrained to an operating system and a set of hardware (O’Sullivan, 2009).  APIs, however, often defy these constraints so they can gain more clients.   Many APIs use the SOAP portal format which means that they are able to transmit not only work on websites and PC software but other devices such as smart phones and game consoles. 

Support  
Whether a company uses an API that is free or a paid subscription support of the product should be considered.  Many companies offering free APIs such as Flickr did not offer prompt support.  Rather they offer a wiki and a problem reporting form (O’Sullivan, 2009).

Implications for IT
Using APIs can be a strategic advantage for any companies.  Using APIs requires that the entire IT staff from management to testers must learn a different way of doing business.  APIs rely on outside parties to do their work.  IT teams must learn how to form a relationship with API providers.

Governance
Leadership among companies that use APIs must keep a portfolio of APIs that is able to help the company gain a strategic advantage over the competition.  Leaders at these organizations need to know the factors that make a strong API portfolio.  Factors such as cost, latency, security, and contracts are important factors in having a strong API portfolio. 

Cost
Using APIs can have a large cost advantage over traditional software developer efforts (Truitt, 2009).  Paid APIs are generally built on a pay-as-you-go.  This type of system can be a great benefit for companies that are starting out.  Traditionally a company that is starting what they to purchase servers, server space, IT staff to mention servers, user licenses, and a number of other capital intensive products.
Using APIs allows companies to pay for their systems as money comes at.  By paying for only what they need companies are able to better evaluate the costs effectiveness of the API.  Many API companies offer a no-cost trial of their product.  This allows companies to develop software risk and cost free.  By eliminating the large amount of capital needed to start a project companies are putting themselves better able to implement projects and pay for them with operational costs. 

Scalability
API providers typically have a server farm that allows them to scale their products rapidly.  For many companies there is a cost barrier to implementing a server farm. 

Internet companies especially can have a large amount of fluctuating data (Waxer, 2009).  For these companies to remain operational during spikes in traffic they traditionally needed excess server capacity.  It is not uncommon for websites to receive 10 times the traffic they receive due to a front page story on a site like digg.com.  Company that do not use APIs would need 10 times the amount of excess capacity that they experience on a daily basis.  This may mean that they have 10 times the amount of servers and 10 times the server space.  This can be incredibly cost ineffective for these types of companies.  APIs provide a solution to this problem.  APIs automatically scale when may be too and the client is only charged for what they use.  This allows companies to seamlessly handle 10 times their typical traffic without incurring performance issues and costs concerns. 

One important factor to businesses that APIs provide is the ability to integrate their products offering with other websites.  E-commerce websites are able to post their products on Google shopping and Amazon through APIs (McCreary, 2009).  Companies are finding that developing relationships collaborative relationships with API providers can help them increase their revenues.

Legal Ramifications
While using APIs can give companies a strategic advantage, APIs are not suitable for every organization.  When using an API that is involved with records management companies must look at regulatory laws that govern the control of information.  The health and financial industries are wrought with regulatory laws that may make it impractical to use APIs.
Companies looking into using APIs for data storage should make sure that the service provider has a plan for backup, replication, and disaster recovery.  Audit controls are another important factor in choosing a company to store data.  Internal theft happens at many companies.  Audit control can help companies track potential embezzlement.

FRCP Related to Discovery
The US Federal Rules Regulatory Procedures (FRCP) states that companies that are in civil trials must be able to provide all electronically stored information (Gatewood, 2009).  Companies that store their data in the cloud with services such as Amazons SimpleDB must look at whether or not they are able to quickly get a copy of all of their data.  Amazons SimpleDB does allow quering of its database but has a row limit of 5000 results (Amazon n.d.). This could create a large burden for a company trying to retrieve all the data from its databases stored in SimpleDB.  A company that is expecting it may face civil trials may wish to think about storing data in a more traditional database. 

Regulatory Requirements
Personally Identifiable Information (PII) is subject to regulations on how it is stored and delivered to people.  These regulations vary by country. The place that hosts the server and where the data is stored is usually subject to the laws within that country (Gatewood, 2009).  API  distributors often have several data centers around the world.  These data centers help prevent against regional disasters and also can be used for increased demand within a certain region.  Companies that send PII to API servers are subject to laws in the countries that those servers are housed.

SOX
 The Sarbanes-Oxley act of 2002 made transparency in accounting mandatory for many organizations.  These companies must provide a way of locking share holders out of financial information during certain times (Gatewood, 2009).  Many APIs rely on a single user name and password to access the data.  For companies that need to lock down access during certain times this may not be possible with API providers.  Sarbanes-Oxley also requires that companies audit the access of data by people.  Companies also need to be able to remove people’s access that no longer works at the company.  With its username password combination data housed in the cloud may not have the capacity.         

Research Opportunities
Current research in the area of APIs has been limited to cost benefit analysis and risk reward analysis.  Most of these analyses are done through qualitative methodologies.  There exist research opportunities in this field for quantitative analysis.  Researchers could, for example, analyze the cost savings of companies that have switched from traditional software development is to cut getting.  Researchers can also look at the overall development time it takes companies to develop standard projects and project using APIs.

Conclusion
Using APIs as part of a software development project comes with risks and benefits.  Understanding the benefits and risks are key to making API use decisions.  APIs come with the promise of faster software development and decreased development cost and time.  APIs can also help companies integrate with partners more easily.  In today's business world partnerships and synergy can make or break a company.  APIs allows a company to easily port its software to many other platforms such as smart phones and game consoles. 

There are risks also associated with using APIs.  Companies that wish to store PII or financial data using an API may be at risk of violating laws and having an insecure website.  Companies using APIs must be able to quantify the risks and keep an API portfolio.  Company should understand the contracts for APIs when choosing a API provider.  These contracts should have the same requirements that a business would need internally if it were developing a project.  Backups and disaster recovery must be considered before deciding on a API provider.

Companies must also look at their own internal architecture to see if having an external API would cause slowdowns on their network.  APIs require that companies send data across the Internet.  If the company does not have a fast internal network this may cause an unacceptable level of delay when running applications. 
References
Amazon (n.d.). Amazon SimpleDB. Retrieved November 13 2009, from http://aws.amazon.com/simpledb/
Arnold, S. (2009, July). Google’s App Engine: getting serious about the enterprise market. KM World, 26.
Clash of the clouds; Cloud computing (2009, October 7). The Economist, 393(8653), 80.
Luthria, H., & Rabhi, F. (2009). Service Oriented Computing in Practice – An Agenda forResearch into the Factors Influencing the OrganizationalAdoption of Service Oriented Architectures. Journal of Theoretical and Applied Electronic Commerce Research, 4(1), 39-56.
McCreary, B. (2009). Web collaboration - How it is impacting business. American Journal of Business, 24(9), 7-9.
Microsoft (n.d.). Windows Azure platform. Retrieved November 5, 2009, from http://www.microsoft.com/windowsazure/
O’Sullivan, D. (2009). The Internet cloud with a silver lining. The British Journal of Administrative Management: manager, (), 20-21.
Ria, S., & Chukwua, P. (2009). Security in a Cloud. Internal Auditor, 66(4), 21-23.
Smith, R. (2009). Computing in the cloud. Research Technology Management, 52(5), 65-68.
Truitt, M. (2009). Editorial: Computing in the “Cloud”. Information Technology and Libraries, 28(3), 107-108.
Waxer, C. (2009, Feburary). Supercomputers For Hire. Fortune Small Business, 19(37), 37.

Archetecting with SaaS



“Is it hard? Not if you have the right attitudes. Its having the right attitudes thats hard.” 
Robert M. Pirsig Zen and the Art of Motorcycle Maintenance: An Inquiry into Values


The problem with SaaS
Software as a Service (SaaS) is the development paradigm of the cloud computing. Research shows that working with traditional application program interfaces (APIs) cause a great deal of problems for software developers (Robillard, 2009). APIs can be hard to learn, have incomplete documentation, and use different development paradigms. SaaS can have predefined limits, network latency issues, and represent a different programming paradigm (Microsoft Exchange Online, 2012; Salesforce, 2012).

Software development teams are finding that working with SaaS can be difficult. Project managers need to know the contractual obligations of the SaaS provider, plan for upgrades of the providers system, and deal with the additional risk of an changing unknown factor to their project(Karakostas, 2009). Software developers face the challanges of learning new sets of APIs, dealing with limitations, and working with different language and software development paradigms (Lawton, 2008; Salesforce, 2012). Software testers learn to deal with systems that can be in consistent such as some cloud based systems eventually concurrent data model.

Archetecting SaaS
Category
Quality Attribute
Description
Design Qualities
Maintainability
Ability to efficiently maintain system.
Reusability
Reusable code reduces waste and promotes faster development times.
Runtime Quality
Performance
How responsive the application is to changes.
Efficiency
The amount of resources a system uses.
Scalability
The ability of a system to add handle large amounts of requests.
Consumer
Quality
Usability
Ease of use and learnability
Security
How secure the system is.
Cost Effectiveness
The monetary return on the cost of the system.
Interoperability
The ability of the system to interact with other systems within the organization.
 
Architecting software solutions let developers achieve some measure of quality. There are different schools of thought on software architecture. Microsoft in their Architecture Guidelines primarily recommend 3-tier/n-tier architecture for most applications and client/server architecture for systems that have high performance needs such as websites or applications that deal with large amounts of data. Using design patterns is another school of thought. The concept of design patterns is that design patters (which are conceptual programming abstractions) allow programmers to rise above the details of implementation and discuss applications in broader forms. Another school of thought with architecting is using different programming languages to achieve efficiently. A software developer might use a functional language such as F# with scientific applications, an object orientated programming language such as C# for business applications, and a set based language such as SQL to handle data sets. Also there is service orientated architecture (SOA) and web services, which are web based and platform agnostic.
Architecture choices are generally based on perceived quality. One organization who values interoperability of their systems may choose SOA while another that favors high performing websites may choose client/server architecture. An organization that values extensibility and security may favor n-tier architecture. Software developers that want an easily testable application may choose a simple 3-tier application over a design pattern application.

Architecture may also be part of an overall business or IT strategy. Companies that wish to collaborate with other companies may choose to use a web service architecture. Companies wishing to build in their systems the ability to reuse systems in other systems may choose SOA.

Cloud providers also have needs that can address by architecture. The first is to follow a familiar SOA type of system. SOA systems generally do not deal with bulk data well. They are can be slow over an intranet over the internet they perform even worse. Second a cloud provider may need to account for a very large amount of traffic. They may choose a distributed database systems that may not be always concurrent across all servers. Finally, a service provider may need to protect itself from over use by customers.
Some providers such as Salesforce (2012) allow users of their APIs a choice of using their traditional API which supports one by one transactions and a bulk API that supports bulk transactions. Traditional APIs allow developers to easily develop software with such architecture as design patterns, n-tier, and object orientated programming. Bulk APIs are better suited for architecture where data is already represented in sets such as programming and client/server programming.

For the cloud provider the choice on what type of API to provide may be a function of the business needs. They may need all of these systems to be concurrent before allowing another transaction. A bulk API would allow clients to send data over and wait till it has been fully processed before allowing them to proceeded.
When working with SaaS, it helps to know the architecture of the provider. Does it have performance governors? Performance governors can be set by the cloud provider or just a byproduct of using the internet. Does the architecture of the cloud provider play well with the architecture of the current systems in place? A company that is using a work flow system is using a procedural programming architecture. This type of system is good for individual transactions but not bulk transactions. In the end the right architecture is one that works will with the needs of the company and the SaaS API.

References
Karakostas. B. (2009). Restructuring the IS curriculum around the theme of service orientation. IT Professional Magazine, 11, 59-63.  Retrieved from ABI/INFORM Global database.

Microsoft Exchange Online. (2012) Retrieved May 11, 2012 from http://download.microsoft.com/download/0/9/6/096C9441-8089-4655-ABB3-DC0ABA01A98D/Microsoft%20Exchange%20Online%20for%20Enterprises%20Service%20Description.docx

Robillard, M. P. (2009). What makes APIs hard to learn? Answers from developers. IEEE Software, 26(6), 27. Retrieved from ProQuest/UMI Database.
Salesforce.com (Feburary, 2012) Salesforce limits quick reference guide. Retrieved from https://login.salesf