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.