Blockchain Affiliate Marketing: Boosting Profits for Publishers

Blockchain Affiliate Marketing: Boosting Profits for Publishers

This article was first posted on CoinCentral.com

By Sarah Rothrie

 

Blockchain affiliate marketing platforms are some of the latest to exploit new technology to solve old problems. More than 80% of online brands and publishers now use affiliate marketing, and yet it accounts for only 5% of the spend on digital marketing globally. Why would this be the case?

Well, like so many other industries, affiliate marketing is dependent on intermediaries. In this case, the middlemen are the affiliate networks. However, there are now several companies releasing blockchain affiliate marketing platforms that do what blockchain does so well. It will eliminate the middleman – and the fees that they take for their service.

What Is Affiliate Marketing?

For the uninitiated, affiliate marketing is a way for brands to promote their products online. How it works is that a website (the publisher) will put a link on their site promoting a particular product or service from a brand (the merchant). When a customer clicks on that link and makes a purchase, the publisher gets a commission from the sale.

It’s popular because it creates a win-win scenario for merchants and publishers alike. The merchant is paying out commission only based on sales performance, unlike many other kinds of advertising. Once the links are set up, the publisher can earn passive income from their website.

Some very well-known sites started off life in this way – take Skyscanner for example. The high-profile success of many affiliate marketers is another way that gig-economy millennials can try to generate some side income.

What Is an Affiliate Network?

For a brand to launch an affiliate program at any scale, it must create a means for publishers to install tracking cookies and have a secure login area independently of the online shop for publishers to track sales. All of this creates barriers to entry for merchants. Enter the middleman – the affiliate network. CJ Affiliate and Clickbank are two of the biggest.

These big players aggregate both publishers and merchants to connect them to one another, in the same way, that Uber connects a rider with a driver. For the provision of this service, the affiliate networks generally charge between 10% and 25% of the commission paid. It’s a pretty payment for what is a mostly passive service. Given that affiliate publishers are also dependent on services such as PayPal to receive their earnings, what they earn at the end can be subject to even costlier deductions.

One of the best-known use cases for blockchain is to eliminate the need for a middleman – in the case of Bitcoin, it removes the need for a bank or clearing house. In the case of affiliate marketing, some savvy startups are now seeing that it can eliminate the need for the affiliate network.

How Do Blockchain Affiliate Marketing Networks Operate?

There are several new players in the market, and each of them has a slightly different model in place. However, smart contracts are the standard feature. In the case of Ethereum-based platforms Hoquand RefToken, blockchain creates smart contracts automatically upon the generation of a lead or sale. One new player, Attrace, is developing a custom blockchain that will generate a smart contract each time a user clicks an affiliate link.

Smart contracts will also be able to govern the terms of the affiliate sales agreement between publisher and merchant. So, for example, the percentage or amount of affiliate commission to be paid, and perhaps the timing of the payment, are controlled by the smart contract.

The smart contract will be able to automatically attribute the sale, and execute the payment of the affiliate earnings by deducting digital funds from the merchant and paying over to the publisher. The commission can be paid in cryptocurrency. Or in the case of Attrace; it plans to offer an option for receiving earnings in fiat currency. Payouts in fiat would potentially lower the barriers to using such a blockchain affiliate marketing network for publishers who have not yet adopted cryptocurrencies.

Why Make the Switch to Blockchain Affiliate Marketing Solutions?

All of the blockchain affiliate marketing networks can promote themselves on a substantial reduction in fees over the traditional affiliate networks – in some cases as much as 95%.

However, there are other issues that blockchain-based solutions can solve in addition to saving fees.

Reduce Fraud and Disputes: One of the most reported issues from both merchants and publishers. Publishers complain that their sales may be under-reported, and their earnings withheld. Blockchain provides a permanent record of transactions. A record like this means less likelihood of disputes over whether a sale was successful. Particularly if click-tracking becomes the norm, this will significantly increase transparency.  Merchants and publishers can see which clicks resulted in both sales and non-sales.

Speed: Currently, it can take weeks or sometimes even months for publishers to receive their payments. In some cases, it takes as long for sales to even register on the affiliate network platform. It is also common for affiliate networks to impose minimum payment thresholds. Therefore, publishers can wait a long time to get paid. Blockchain allows payment to be made in real time, or the payment schedule can be automated with smart contracts.

Increased Value Creation Between Merchant and Publisher: The traditional affiliate networks stand between publisher and merchant. This means that the two parties never have the opportunity for a direct discussion about creating more value in the relationship. For example, transparency of which kind of links or ads perform best, or how best to market new products.

Even if a publisher is the number one best source of sales for a particular merchant, they have no opportunity to differentiate as the affiliate network sits between and can mask the value offered by different publishers. For example, one publisher may generate a small number of lifetime customers that may be worth more for the client than a more substantial volume of one-time clients.

Decrease Barriers to Entry for Smaller Merchants: The traditional affiliate networks care about generating commission. So they usually demand that merchants pay a minimum threshold to qualify for their platforms. Blockchain-based services can afford to operate without imposing such limits.

These new players entering the blockchain affiliate network game clearly believe that this is an industry with much potential. In addition to innovative content marketing solutions like Steem, there are still new ways that blockchain can enhance existing content marketplaces.

The author, Sarah Rothrie, is a freelance blockchain writer and full-time nomad. You can usually find her near the food.

Ledger Co-founder Thomas France on Coin Support and Staying Ahead of Hackers

Ledger Co-founder Thomas France on Coin Support and Staying Ahead of Hackers

By Alex Moskov
This article is originally posted at CoinCentral.com

Thomas France, the Co-founder of Ledger, finds himself at the helm of a company responsible for creating and selling the Ledger Nano S, one of the bestselling cryptocurrency hardware wallets.

The wallet has earned some substantial street credit from the likes of Tim Draper and has attracted thousands of happy users. An unofficial mission statement often heard from France is that the company is here to help cryptocurrency holders sleep easier at night, which so far has been true as the wallet has proven to be incredibly resilient to hacks. However, with this statement in mind, it begs the question of how easily the Ledger team can sleep at night with thousands of hackers lurking in the shadows attempting to find a loophole that would give them access to potentially billions of dollars in token value.

The following interview with Thomas France was conducted at the 2018 Draper University Blockchain Intensive.

What strategies do you have in place to stay one step ahead of the constantly evolving hacking attempts?

Basically, what we want to do at Ledger is provide the best possible product for people to have their coins stored safely. What we’re doing is that we’re putting the bar as high as possible to make sure the keys are secure. There are no things and no system that is unhackable. It’s not something that exists, but it’s just putting the bar as high as possible.

We are constantly improving. We have some people that are auditing the code all the time. We have the bounty program where people can help to find some of our vulnerabilities. We’re basically building the right framework to raise the bar as high as possible.

How do you prioritize which coins to add support for on the Ledger Nano S?

It’s interesting, in a way, that we provide the APIs for people to build support directly for their coins. What we’ve seen lately is that we do not make the blocking ourselves but it’s more the community that works on the blocking to support for their coins, generally on their own wallets.

We’ve got the easy way to make the integration. In terms of choosing which coins to support, it’s based on factors like the popularity, the market support, the number of integrations within the space. It’s mostly based on factors like that. The number one is that we provide the right tools and the right SDK for people to submit support for a coin on their own.

I’ve seen it with the NEON wallet for NEO. It’s built out by independent developers.

Same for Stellar, same for some other coins that will be supported soon. I think we’ve got like tens of teams working on support for their coins from Ledger.

You guys have thousands of users. I’ve got a couple Ledgers myself. You’ve got the users, you’ve got the active cryptocurrency traders. Do you have any plans in the future to add an exchange component to the Ledger service?

Right now, we’re really focused on what we’re good at. It’s been on securing crypto and providing the best possible experience. Short term, we’d be revamping the application directly to make it easier and more user-friendly.

We build some API for people to integrate with services like that, so potentially that’s something that could happen. We also have some integration with all the decentralized exchanges, so people can use our products on the relay runner or on the relayers on EtherDelta. So, you already have those services for using Ledger with decentralized exchanges.

How can we make the whole cryptocurrency storage more user-friendly? I think the Ledger Nano S has done a lot to take one major step, but in terms of mass adoption, it’s still a little confusing. Even the front-facing products are still a little bit difficult to onboard new users.

I think we went from one stage which was basically when you wanted to store your crypto, if you wanted to do it the right way, you needed to buy your computer, make sure it had no connectivity, boot it, install your wallet, generate your keys and use this computer solely for the purpose of signing a transaction.

Now, you can use a wallet that makes this process an order of magnitude easier. For the next step, it’s always a question of it being easier to give the keys to somebody else, but if you want to have the keys and keep your keys on your own, you will need to take a few extra steps because you have some more freedom to have your keys and you have more responsibility and there are some steps that you will still need to go through.

You will still need to make the initialization of your keys, you will still generate your keys. We want to stand in that process and to make each step easier. The recovery process to find some strategies to make sure that you can generate them and store them in different locations in the best possible ways and have some different components where you don’t need to have the device to check your account or just for the signing.

Also, the ability for people like my mother to have more cryptocurrency because they’re used to centralized governance which is enforced by banks which you cannot have on the Ledger right now.

The journey of Thomas France and Ledger will be interesting to follow. As a beacon of security and stability in a digital world that can get crazy at times, it’s important to understand how Ledger evolves with the ecosystem.

If you’re currently holding your bitcoins in an exchange wallet or software wallet, it’s highly recommended you explore hardware wallets as an option. Check out our Ledger Nano S to get a lowdown on the value and specs.

The author, Alex Moskov, is the Editor-in-Chief of CoinCentral. Alex also advises blockchain startups, enterprise organizations, and ICOs on content strategy, marketing, and business development. He also regrets not buying more Bitcoin back in 2012, just like you.

The Great Gatsby American Dream Essay

The Great Gatsby American Dream Essay

The Great Gatsby –the American dream

The awful love story is found in The Great Gatsby, a book written by F. Scott Fitzgerald and published in 1925. On the surface, the story describes how Jay Gatsby came from a humble background into earning a lot of money and wealth. The rise of Gatsby resulted to rejection by “old money” crowd which later lead to his death. Fitzgerald idea in this publication is seen by many as critiquing the American dream idea. The life of Gatsby and Wilsons is a clear critique of the American meritocracy that allows anyone to work hard and rise to levels he wishes. This essay aims at analyzing the American dream theme in The Great Gatsby book.

 What is the American dream?

The belief that anybody working hard can achieve anything in America, regardless of nationality, class, gender, and race, is the American dream. The American dream gives a different life perspective which ignores the negativity and challenges that comes on the way to one’s success. Despite the presence of racism and class among other challenges in America, the dream assumes there is a level ground for everybody to succeed.

The theme of the American dream in The Great Gatsby

Scott Fitzgerald. The Great Gatsby audiobook chapter 1 starts by giving the background of WWI in the 1920s which was the time of high levels of corruption among the rich in America. The decadence error is well experienced by parties in 2nd and 3rd chapters of Great Gatsby. In the Great Gatsby audiobook chapter 2, George and Myrtle Wilson are working class individuals working towards improving their life status. Myrtle uses her love affair with Tom Buchanan to achieve her goals while George works hard to meet his life objectives.

The Great Gatsby audiobook chapter 4 reveals the Gatsby goal to win his former girlfriend Daisy back. The aspect of symbolism in the Great Gatsby comes in when Gatsby sees Daisy as the status symbol despite the money and valuable property he owns. The Great Gatsby audio chapter 5 shows how Daisy and Gatsby come together again and start a new affair. This chapter hints the possibility of Gatsby achieving his goal of winning Daisy. Chapter 6 of the Great Gatsby portrays Gatsby as a man following the American dream by rising from nothing to riches. Winning back Daisy shows Gatsby’s determination of pursuing the American dream to achieve his goals in life.

In chapter 7, the Great Gatsby changes tune, and everything seems to fall apart. Gatsby fails to achieve his goal of winning Daisy back after she refused to break with Tom.  The 7th and 8th chapters expose the death of Myrtle, George killing Gatsby and later killing himself. All pursuers are left dead while the old money crowd is left safe. The last chapters reveal that Gatsby acquired his wealth through crime, not hard work as the American dream stipulates. The end of the Great Gatsby .pdf Nick has a sad reflection of the lost hope and promise of the American dream.

In summary, the Great Gatsby 1974 brings out how various forces hinder the workability of the American dream. The story of the dream pursuers in the Great Gatsby 2013 is the real-life reflection where American dreamers fail to achieve their goals due to suppressions from factors such as class. Old money crowd ensures Gatsby does not rise and reach their level in the society. Some quotes from the Great Gatsby indicate how factors like class and influential people in society may block others from achieving their goals.

 

Factors for juvenile delinquency

Factors for juvenile delinquency

Introduction
A juvenile is defined as one who is under the age of 18. Therefore, juvenile delinquency refers to the criminal or antisocial activity carried out by a child below 18 years and these acts are often in violation of the law (Burfeind & Bartusch, 2015). Accordingly, some of these felonies or offences include homicide, sexual crimes, property and drug violations and violent crimes. The commission of these acts are done in groups compared to individuals. Globally, the number of crimes carried out by juveniles has been on the increase in the past and recent years. The center for criminal disease indicated that the number of juveniles involved in criminal acts amounted to 22.5% of the total property crimes in 2010. The number of juveniles arrested for murder was 784, forcible rape was 2198 while for assault was 35,000 in the same year. In the past years, there have been academic and public interest in mental health and criminality and there has been a major focus on the adolescents’ and children’ antisocial behaviours. The scale of the juvenile delinquency problem has led to a series of mixed responses from the media and governments all over the globe. This has prompted the calling for support and rehabilitation for juvenile offenders in order to successfully integrate them into the community. To this end, this paper aims at providing a comprehensive explanation of the factors leading to juvenile delinquency, and the appropriate methods of prevention of these acts.

Factors for delinquency
These factors are grouped into mainly risk and protective factors.
i. Risk factors
The risk factors are divided into individual, family, community, peer and social risk factors. Firstly, the individual risk factors include learning disorder, attention deficit hyperactivity disorder, low intelligence quotient, violent discrimination and drug abuse. Secondly, the family factors include negligent, permissive and authoritarian parenting styles, low income for parents, harsh disciplinary methods and poor teen monitoring. Thirdly, the community risk factors include but are not limited to minimized economic opportunities poor participation in the community and neighbors that are socially disorganized. The fourth risk factor is that of social and peer factors and it dictates the relationship of delinquent peers, involvement in gangs, media violence exposure and poor school commitment that translates to poor performance in academics (Shoemaker, 2017). Apparently, male adolescents have a higher chance of becoming offenders compared to the females. On the same note, the youth from poor backgrounds have more chances of involvement in criminal activities.
ii. Protective factors
The protective and individual factors are interconnected. Individual factors including good performances in academics, good social skills, religiosity, high intelligence quotient are connected to being connected to parents and the style of parenting. Additional factors include efficient monitoring, good strategies of coping, and solving of problems. Social and peer factors are connected to commitment in schools, strong relation among peers and the involvement in pro-social issues (Shoemaker, 2017).
Preventing juvenile delinquency
There have been different studies that have proposed ways of preventing juvenile delinquency and the approach of the development of the youth in a positive aspect has been a major issue that has been raised. Another model lays emphasis on the six main domains including work, education, community, relationships, creativity and health. Each and every youth requires a sense of attachment and belonging, in order to fully understand and integrate well in the parameters provided by the community (Ryan, Williams & Courtney, 2013). A community and school programme can also be important in the efforts aimed at engaging adolescents in a constructive and productive manner. these programs are also important in the recognition, utilization and enhancement of the strengths of the adolescents and the promotion of positive results for the young people. this is attained through the provision of opportunities, fostering relationships that are beneficial and improving their support that they need in order to enhance their business strengths. The means of tackling these types of offences does not involve only incarceration or preventive efforts for this specific group. An alternative approach is that of restorative justice which is part of the criminal justice. Restorative justice involves a process in which all parties having a stake in a particular issue or offence join or team up and determine collectively on how to deal with the offence and its subsequent implications for the future. The offender works closely with the social workers and takes the necessary steps in efforts aimed at reconciliation, provision of remedial assistance and reparation of damages (Thompson & Bynum, J. E. (2016). In case there is a resolution, perpetuation of offence or imprisonment is capable of being avoided. These methods have led to a decline in recidivism amongst juveniles by 50%. The ineffective methods include but are not limited to traditional psychotherapy, modification of behaviour, boot camp and extension of incarceration. However, each programme aimed at prevention should be socially and culturally consistent and appropriate.
Conclusion
This paper clearly shows that youth delinquency has become a major problem and it is a growing concern. Many young criminal offenders are victims with their needs, which leads to an approach that needs balancing of justice and welfare models. Regardless, there are inadequate specialists’ workforce and legal frameworks to handle these issues.

References
Burfeind, J., & Bartusch, D. J. (2015). Juvenile delinquency: An integrated approach. Routledge.
Ryan, J. P., Williams, A. B., & Courtney, M. E. (2013). Adolescent neglect, juvenile delinquency and the risk of recidivism. Journal of youth and adolescence, 42(3), 454-465.
Shoemaker, D. J. (2017). Juvenile delinquency. Rowman & Littlefield.
Thompson, W. E., & Bynum, J. E. (2016). Juvenile delinquency: A sociological approach. Rowman & Littlefield.

THE DOMAINS OF THE HEALTH ADMINISTRATION LEADERSHIP COMPETENCY MODEL

THE DOMAINS OF THE HEALTH ADMINISTRATION LEADERSHIP COMPETENCY MODEL

The history, definition, and use of Leadership Competency Models were addressed this week in Chapter 2 of your course text. The Health Administration Leadership Competency Model was specifically tailored to include interdisciplinary effectiveness. It consists of seven interrelated domains of competencies.

To prepare:

Review the Health Administration Leadership Competency Model on pages 50-58 of your text.
Identify someone with whom you have worked in the past who served as a leader.
Evaluate that person’s leadership skills according to the criteria identified by the seven domains of the model, i.e., Charting the Course, Inspiring Commitment, Developing Work Relationships, Structuring the Work Environment, Influencing, Communicating, and Self-Management.
By Day 4
Post a comprehensive response to the following:

What characteristics made that person an effective or ineffective leader? Please explain with reference to the Health Administration Leadership Competency Model.
What conflicts and challenges arose during your work together?
How did the leader assist in working through it?
Did you play a role in resolving the issue? If so, describe the situation.
Will provide textbook link if needed. 1 to 2 pages.

Recall a recent workplace interaction and write a paper that summarizes the interaction

Recall a recent workplace interaction and write a paper that summarizes the interaction

Recall a recent workplace interaction and write a paper that summarizes the interaction. Include the following in your summary:

•Noting information you read in Tannen’s article and the text, identify verbal communication patterns in the exchange.

•Did you notice the influence of power in the communication?

•Classify the communication as effective or ineffective and support your rationale.

•Would you classify this as an intercultural communication exchange? Why or why not?

•How do the relationships affect workplace communication? Length: 5-7 pages not including title and reference pages.

References: minimum of 3 scholarly resources. (1 reference should be Tannen, D (1995). The power of talk: Who gets heard and why.)

CJA 345 ETHICAL ISSUES IN CRIMINAL JUSTICE RESEARCH PAPER

CJA 345 ETHICAL ISSUES IN CRIMINAL JUSTICE RESEARCH PAPER

Write a 1,050- to 1,400-word paper in which you describe the ethical issues related to the research process within the field of criminal justice. Be sure to include responses to the following:

What is the purpose of research in the field of criminal justice? What are some of the benefits it provides?

What are the differences between qualitative and quantitative research?

What are the differences between pure and applied research?

Why is ethics in criminal justice research important?

Format your paper consistent with APA guidelines.

ADVANCED SOLID WASTE MANAGEMENT

ADVANCED SOLID WASTE MANAGEMENT

1) Review some articles on landfills and on compost piles. This assignment is not about summarizing these operations but about analyzing and comparing the differences between these two fundamental principles of solid waste management. Describe when and why each of these fundamentals is appropriate for use to manage municipal solid waste. Include in your discussion details about the differences of microbial mechanisms, the end products of degradation, and of factors that help and harm the performance of these operations. How effective is each one? (Your total response for all parts of this question should be at least 500 words.)

2) A community of 62,000 does not have a municipal recyclinge program, and they it sends all of their its refuse to the municipal landfill. Will the landfill generate enough natural gas to meet the needs of the city if the municipality needs to annually generate 10 million cubic meters of natural gas (methane) and the city collects all of the methane that is generated? How will this affect the population of the city? Explain your answer. (Your total response for all parts of this question should be at least 300 words.)

AMI – 1- TO 2-PAGE EXECUTIVE SUMMARY AND BUSINESS PRESENTATION

AMI – 1- TO 2-PAGE EXECUTIVE SUMMARY AND BUSINESS PRESENTATION

Assignment Preparation: Activities include independent student reading, and research.

Reference the “Understanding Abstraction and Virtualization” section in Ch. 5, “Understanding Abstraction and Virtualization,” of Cloud Computing Bible and research AMI information online.

Create a 1- to 2-page executive summary and business presentation, with eight to ten slides, describing the most appropriate use of AMI in implementing the service you described in Week One Supporting Activity: “Cloud Computing Service.”

Use slide notes to detail why you made the decisions you chose.

Chapter 5
Understanding Abstraction and Virtualization

Chapter 5
Understanding Abstraction and Virtualization

IN THIS CHAPTER

Understanding how abstraction makes cloud computing possible

Understanding how virtualization creates shared resource pools

Using load balancing to enable large cloud computing applications

Using hypervisors to make virtual machines possible

Discussing system imaging and application portability for the cloud

In this chapter, I discuss different technologies that create shared pools of resources. The key to creating a pool is to provide an abstraction mechanism so that a logical address can be mapped to a physical resource. Computers use this technique for placing files on disk drives, and cloud computing networks use a set of techniques to create virtual servers, virtual storage, virtual networks, and perhaps one day virtual applications. Abstraction enables the key benefit of cloud computing: shared, ubiquitous access.

In this chapter, you learn about how load balancing can be used to create high performance cloud-based solutions. Google.com’s network is an example of this approach. Google uses commodity servers to direct traffic appropriately.

Another technology involves creating virtual hardware systems. An example of this type of approach is hypervisors that create virtual machine technologies. Several important cloud computing approaches use a strictly hardware-based approach to abstraction. I describe VMware’s vSphere infrastructure in some detail, along with some of the unique features and technologies that VMware has developed to support this type of cloud.

Finally, I describe some approaches to making applications portable. Application portability is a difficult proposition, and work to make applications portable is in its infancy. Two approaches are described, the Simple API and AppZero’s Virtual Application Appliance (VAA). VAAs are containers that abstract an application from the operating system, and they offer the potential to make an application portable from one platform to another.

Using Virtualization Technologies
The dictionary includes many definitions for the word “cloud.” A cloud can be a mass of water droplets, gloom, an obscure area, or a mass of similar particles such as dust or smoke. When it comes to cloud computing, the definition that best fits the context is “a collection of objects that are grouped together.” It is that act of grouping or creating a resource pool that is what succinctly differentiates cloud computing from all other types of networked systems.

Not all cloud computing applications combine their resources into pools that can be assigned on demand to users, but the vast majority of cloud-based systems do. The benefits of pooling resources to allocate them on demand are so compelling as to make the adoption of these technologies a priority. Without resource pooling, it is impossible to attain efficient utilization, provide reasonable costs to users, and proactively react to demand. In this chapter, you learn about the technologies that abstract physical resources such as processors, memory, disk, and network capacity into virtual resources.

When you use cloud computing, you are accessing pooled resources using a technique called virtualization. Virtualization assigns a logical name for a physical resource and then provides a pointer to that physical resource when a request is made. Virtualization provides a means to manage resources efficiently because the mapping of virtual resources to physical resources can be both dynamic and facile. Virtualization is dynamic in that the mapping can be assigned based on rapidly changing conditions, and it is facile because changes to a mapping assignment can be nearly instantaneous.

These are among the different types of virtualization that are characteristic of cloud computing:

Access: A client can request access to a cloud service from any location.
Application: A cloud has multiple application instances and directs requests to an instance based on conditions.
CPU: Computers can be partitioned into a set of virtual machines with each machine being assigned a workload. Alternatively, systems can be virtualized through load-balancing technologies.
Storage: Data is stored across storage devices and often replicated for redundancy.
To enable these characteristics, resources must be highly configurable and flexible. You can define the features in software and hardware that enable this flexibility as conforming to one or more of the following mobility patterns:

P2V: Physical to Virtual
V2V: Virtual to Virtual
V2P: Virtual to Physical
P2P: Physical to Physical
D2C: Datacenter to Cloud
C2C: Cloud to Cloud
C2D: Cloud to Datacenter
D2D: Datacenter to Datacenter
The techniques used to achieve these different types of virtualization are the subject of this chapter. According to Gartner (“Server Virtualization: One Path that Leads to Cloud Computing,” by Thomas J. Bittman, 10/29/2009, Research Note G00171730), virtualization is a key enabler of the first four of five key attributes of cloud computing:

Service-based: A service-based architecture is where clients are abstracted from service providers through service interfaces.
Scalable and elastic: Services can be altered to affect capacity and performance on demand.
Shared services: Resources are pooled in order to create greater efficiencies.
Metered usage: Services are billed on a usage basis.
Internet delivery: The services provided by cloud computing are based on Internet protocols and formats.
Load Balancing and Virtualization
One characteristic of cloud computing is virtualized network access to a service. No matter where you access the service, you are directed to the available resources. The technology used to distribute service requests to resources is referred to as load balancing. Load balancing can be implemented in hardware, as is the case with F5’s BigIP servers, or in software, such as the Apache mod_proxy_balancer extension, the Pound load balancer and reverse proxy software, and the Squid proxy and cache daemon. Load balancing is an optimization technique; it can be used to increase utilization and throughput, lower latency, reduce response time, and avoid system overload.

The following network resources can be load balanced:

Network interfaces and services such as DNS, FTP, and HTTP
Connections through intelligent switches
Processing through computer system assignment
Storage resources
Access to application instances
Without load balancing, cloud computing would very difficult to manage. Load balancing provides the necessary redundancy to make an intrinsically unreliable system reliable through managed redirection. It also provides fault tolerance when coupled with a failover mechanism. Load balancing is nearly always a feature of server farms and computer clusters and for high availability applications.

A load-balancing system can use different mechanisms to assign service direction. In the simplest load-balancing mechanisms, the load balancer listens to a network port for service requests. When a request from a client or service requester arrives, the load balancer uses a scheduling algorithm to assign where the request is sent. Typical scheduling algorithms in use today are round robin and weighted round robin, fastest response time, least connections and weighted least connections, and custom assignments based on other factors.

A session ticket is created by the load balancer so that subsequent related traffic from the client that is part of that session can be properly routed to the same resource. Without this session record or persistence, a load balancer would not be able to correctly failover a request from one resource to another. Persistence can be enforced using session data stored in a database and replicated across multiple load balancers. Other methods can use the client’s browser to store a client-side cookie or through the use of a rewrite engine that modifies the URL. Of all these methods, a session cookie stored on the client has the least amount of overhead for a load balancer because it allows the load balancer an independent selection of resources.

The algorithm can be based on a simple round robin system where the next system in a list of systems gets the request. Round robin DNS is a common application, where IP addresses are assigned out of a pool of available IP addresses. Google uses round robin DNS, as described in the next section.

Advanced load balancing
The more sophisticated load balancers are workload managers. They determine the current utilization of the resources in their pool, the response time, the work queue length, connection latency and capacity, and other factors in order to assign tasks to each resource. Among the features you find in load balancers are polling resources for their health, the ability to bring standby servers online (priority activation), workload weighting based on a resource’s capacity (asymmetric loading), HTTP traffic compression, TCP offload and buffering, security and authentication, and packet shaping using content filtering and priority queuing.

An Application Delivery Controller (ADC) is a combination load balancer and application server that is a server placed between a firewall or router and a server farm providing Web services. An Application Delivery Controller is assigned a virtual IP address (VIP) that it maps to a pool of servers based on application specific criteria. An ADC is a combination network and application layer device. You also may come across ADCs referred to as a content switch, multilayer switch, or Web switch.

These vendors, among others, sell ADC systems:

A10 Networks (http://www.a10networks.com/)
Barracuda Networks (http://www.barracudanetworks.com/)
Brocade Communication Systems (http://www.brocade.com/)
Cisco Systems (http://www.cisco.com/)
Citrix Systems (http://www.citrix.com/)
F5 Networks (http://www.f5.com/)
Nortel Networks (http://www.nortel.com/)
Coyote Point Systems (http://www.coyotepoint.com/)
Radware (http://www.radware.com/)
An ADC is considered to be an advanced version of a load balancer as it not only can provide the features described in the previous paragraph, but it conditions content in order to lower the workload of the Web servers. Services provided by an ADC include data compression, content caching, server health monitoring, security, SSL offload and advanced routing based on current conditions. An ADC is considered to be an application accelerator, and the current products in this area are usually focused on two areas of technology: network optimization, and an application or framework optimization. For example, you may find ADC’s that are tuned to accelerate ASP.NET or AJAX applications.

An architectural layer containing ADCs is described as an Application Delivery Network (ADN), and is considered to provide WAN optimization services. Often an ADN is comprised of a pair of redundant ADCs. The purpose of an ADN is to distribute content to resources based on application specific criteria. ADN provide a caching mechanism to reduce traffic, traffic prioritization and optimization, and other techniques. ADN began to be deployed on Content Delivery Networks (CDN) in the late 1990s, where it added the ability to optimize applications (application fluency) to those networks. Most of the ADC vendors offer commercial ADN solutions.

In addition to the ADC vendors in the list above, these are additional ADN vendors, among others:

Akamai Technologies (http://www.akamai.com/)
Blue Coat Systems (http://www.bluecoat.com/)
CDNetworks (http://www.cdnetworks.com/)
Crescendo Networks (http://www.crescendonetworks.com/)
Expand Networks (http://www.expand.com/)
Juniper Networks (http://www.juniper.net/)
Google’s cloud is a good example of the use of load balancing, so in the next section let’s consider how Google handles the many requests that they get on a daily basis.

The Google cloud
According to the Web site tracking firm Alexa (http://www.alexa.com/topsites), Google is the single most heavily visited site on the Internet; that is, Google gets the most hits. The investment Google has made in infrastructure is enormous, and the Google cloud is one of the largest in use today. It is estimated that Google runs over a million servers worldwide, processes a billion search requests, and generates twenty petabytes of data per day.

Google is understandably reticent to disclose much about its network, because it believes that its infrastructure, system response, and low latency are key to the company’s success. Google never gives datacenter tours to journalists, doesn’t disclose where its datacenters are located, and obfuscates the locations of its datacenters by wrapping them in a corporate veil. Thus, the discretely named Tetra LLC (limited liability company) owns the land for the Council Bluffs, Iowa, site, and Lapis LLC owns the land for the Lenoir, North Carolina, site. This makes Google infrastructure watching something akin to a sport to many people.

So what follows is what we think we know about Google’s infrastructure and the basic idea behind how Google distributes its traffic by pooling IP addresses and performing several layers of load balancing.

Google has many datacenters around the world. As of March 2008, Rich Miller of DataCenterKnowledge.com wrote that Google had at least 12 major installations in the United States and many more around the world. Google supports over 30 country specific versions of the Google index, and each localization is supported by one or more datacenters. For example, Paris, London, Moscow, Sao Paolo, Tokyo, Toronto, Hong Kong, Beijing and others support their countries’ locale. Germany has three centers in Berlin, Frankfurt, and Munich; the Netherlands has two at Groningen and Eemshaven. The countries with multiple datacenters store index replicas and support network peering relationships. Network peering helps Google have low latency connections to large Internet hubs run by different network providers.

You can find a list of sites as of 2008 from Miller’s FAQ at http://www.datacenterknowledge.com/archives/2008/03/27/google-data-center-faq/.

Based on current locations and the company’s statements, Google’s datacenters are sited based on the following factors (roughly in order of importance):

Availability of cheap and, if possible, renewable energy
The relative locations of other Google datacenters such that the site provides the lowest latency response between sites
Location of nearby Internet hubs and peering sites
A source of cooling water
The ability to purchase a large area of land surrounding the siteSpeculation on why Google purchases large parcels of land ranges from creating a buffer zone between the datacenter and surrounding roads and towns or possibly to allow for building wind farms when practical.
Tax concessions from municipalities that lower Google’s overhead
Google maintains a pool of hundreds of IP addresses, all of which eventually resolve to its Mountain View, California, headquarters. When you initiate a Google search, your query is sent to a DNS server, which then queries Google’s DNS servers. The Google DNS servers examine the pool of addresses to determine which addresses are geographically closest to the query origin and uses a round robin policy to assign an IP address to that request. The request usually goes to the nearest datacenter, and that IP address is for a cluster of Google servers. This DNS assignment acts as a first level of IP virtualization, a pool of network addresses have been load balanced based on geography.

A Google cluster can contain thousands of servers. Google servers are racks of commodity (low cost) 1U or 2U servers containing 40 to 80 servers per rack with one switch per rack. Each switch is connected to a core gigabit switch. Google servers run a customized version of Linux with applications of several types.

When the query request arrives at its destination, a Google cluster is sent to a load balancer, which forwards that request to a Squid proxy server and Web cache dameon. This is the second level of IP distribution, based on a measure of the current system loading on proxy servers in the cluster. The Squid server checks its cache, and if it finds a match to the query, that match is returned and the query has been satisfied. If there is no match in the Squid cache, the query is sent to an individual Google Web Server based on current Web server utilizations, which is the third level of network load balancing, again based on utilization rates.

It is the Google Web Servers that perform the query against the Google index and then format the results into an HTML page that is returned to the requester. This procedure then performs two more levels of load balancing based on utilization rates.

Google’s secret sauce is its in-memory inverted index and page rank algorithm. Google’s GoogleBot (a spider or robot) crawls the Web and collects document information. Some details of the search and store algorithm are known. Google looks at the title and first few hundred words and builds a word index from the result. Indexes are stored on an index server.

Some documents are stored as snapshots (PDF, DOC, XLS, and so on), but lots of information is not addressed in the index. Each document is given a unique ID (“docid”), and the content of the document is disassembled into segments called shards, subjected to a data compression scheme and stored on a document server. The entire index is maintained in system memory partitioned over each instance of the index’s replicas. A page rank is created based on the significant links to that page.

Queries are divided into word lists, and the Google algorithm examines the words and the relationships of one word to another. Those word relationships are mapped against the main index to create a list of documents, a feature called an inverted index. In an inverted index, words are mapped to documents, which can be done very quickly when the index is fully kept in memory.

The Web server takes the result of a query and composes the Web page from that result. Ads included on the page are from ad servers, which provide Google’s AdSense and AdWords services. The query also is presented to a spelling server to provide suggestions for alternative spellings to include in the search result. Certain keywords, data input patterns, and other strings are recognized as having special operational significance. For example entering “2 plus 2” initiates Google’s calculator program, and a ten-digit number returns a reverse phone lookup using the phonebook program. These programs are supported by special application servers.

Google doesn’t use hardware virtualization; it performs server load balancing to distribute the processing load and to get high utilization rates. The workload management software transfers the workload from a failed server over to a redundant server, and the failed server is taken offline. Multiple instances of various Google applications are running on different hosts, and data is stored on redundant storage systems.

Understanding Hypervisors
Load balancing virtualizes systems and resources by mapping a logical address to a physical address. Another fundamental technology for abstraction creates virtual systems out of physical systems. If load balancing is like playing a game of hot potato, then virtual machine technologies is akin to playing slice and dice with the potato.

Given a computer system with a certain set of resources, you can set aside portions of those resources to create a virtual machine. From the standpoint of applications or users, a virtual machine has all the attributes and characteristics of a physical system but is strictly software that emulates a physical machine. A system virtual machine (or a hardware virtual machine) has its own address space in memory, its own processor resource allocation, and its own device I/O using its own virtual device drivers. Some virtual machines are designed to run only a single application or process and are referred to as process virtual machines.

A virtual machine is a computer that is walled off from the physical computer that the virtual machine is running on. This makes virtual machine technology very useful for running old versions of operating systems, testing applications in what amounts to a sandbox, or in the case of cloud computing, creating virtual machine instances that can be assigned a workload. Virtual machines provide the capability of running multiple machine instances, each with their own operating system.

From the standpoint of cloud computing, these features enable VMMs to manage application provisioning, provide for machine instance cloning and replication, allow for graceful system failover, and provide several other desirable features. The downside of virtual machine technologies is that having resources indirectly addressed means there is some level of overhead.

Virtual machine types
A low-level program is required to provide system resource access to virtual machines, and this program is referred to as the hypervisor or Virtual Machine Monitor (VMM). A hypervisor running on bare metal is a Type 1 VM or native VM. Examples of Type 1 Virtual Machine Monitors are LynxSecure, RTS Hypervisor, Oracle VM, Sun xVM Server, VirtualLogix VLX, VMware ESX and ESXi, and Wind River VxWorks, among others. The operating system loaded into a virtual machine is referred to as the guest operating system, and there is no constraint on running the same guest on multiple VMs on a physical system. Type 1 VMs have no host operating system because they are installed on a bare system.

An operating system running on a Type 1 VM is a full virtualization because it is a complete simulation of the hardware that it is running on.

Note
Not all CPUs support virtual machines, and many that do require that you enable this support in the BIOS. For example, AMD-V processors (code named Pacifica) and Intel VT-x (code named Vanderpool) were the first of these vendor’s 64-bit offerings that added this type of support.

Some hypervisors are installed over an operating system and are referred to as Type 2 or hosted VM. Examples of Type 2 Virtual Machine Monitors are Containers, KVM, Microsoft Hyper V, Parallels Desktop for Mac, Wind River Simics, VMWare Fusion, Virtual Server 2005 R2, Xen, Windows Virtual PC, and VMware Workstation 6.0 and Server, among others. This is a very rich product category. Type 2 virtual machines are installed over a host operating system; for Microsoft Hyper-V, that operating system would be Windows Server. In the section that follows, the Xen hypervisor (which runs on top of a Linux host OS) is more fully described. Xen is used by Amazon Web Services to provide Amazon Machine Instances (AMIs).

Figure 5.1 shows a diagram of Type 1 and Type 2 hypervisors.

On a Type 2 VM, a software interface is created that emulates the devices with which a system would normally interact. This abstraction is meant to place many I/O operations outside the virtual environment, which makes it both programmatically easier and more efficient to execute device I/O than it would be inside a virtual environment. This type of virtualization is sometimes referred to as paravirtualization, and it is found in hypervisors such as Microsoft’s Hyper-V and Xen. It is the host operating system that is performing the I/O through a para-API.

Figure 5.2 shows the difference between emulation, paravirtualization, and full virtualization. In emulation, the virtual machine simulates hardware, so it can be independent of the underlying system hardware. A guest operating system using emulation does not need to be modified in any way. Paravirtualization requires that the host operating system provide a virtual machine interface for the guest operating system and that the guest access hardware through that host VM. An operating system running as a guest on a paravirtualization system must be ported to work with the host interface. Finally, in a full virtualization scheme, the VM is installed as a Type 1 Hypervisor directly onto the hardware. All operating systems in full virtualization communicate directly with the VM hypervisor, so guest operating systems do not require any modification. Guest operating systems in full virtualization systems are generally faster than other virtualization schemes.

The Virtual Machine Interface (VMI) open standard (http://vmi.ncsa.uiuc.edu/) that VMware has proposed is an example of a paravirtualization API. The latest version of VMI is 2.1, and it ships as a default installation with many versions of the Linux operating system.

Note
Wikipedia maintains a page called “Comparison of platform virtual machines” at http://en.wikipedia.org/wiki/Comparison_of_platform_virtual_machines. The page contains a table of features of the most common Virtual Machine Managers.

You are probably familiar with process or application virtual machines. Most folks run the Java Virtual Machine or Microsoft’s .NET Framework VM (called the Common Language Runtime or CLR) on their computers. A process virtual machine instantiates when a command begins a process, the VM is created by an interpreter, the VM then executes the process, and finally the VM exits the system and is destroyed. During the time the VM exists, it runs as a high-level abstraction.

Applications running inside an application virtual machine are generally slow, but these programs are very popular because they provide portability, offer rich programming languages, come with many advanced features, and allow platform independence for their programs. Although many cloud computing applications provide process virtual machine applications, this type of abstraction isn’t really suitable for building a large or high-performing cloud network, with one exception.

The exception is the process VMs that enable a class of parallel cluster computing applications. These applications are high-performance systems where the virtual machine is operating one process per cluster node, and the system maintains the necessary intra-application communications over the network interconnect. Examples of this type of system are the Parallel Virtual Machine (PVM; see http://www.csm.ornl.gov/pvm/pvm_home.html) and the Message Passing Interface (MPI; see http://www.mpi-forum.org/). Some people do not consider these application VMs to be true virtual machines, noting that these applications can still access the host operating system services on the specific system on which they are running. The emphasis on using these process VMs is in creating a high-performance networked supercomputer often out of heterogeneous systems, rather than on creating a ubiquitous utility resource that characterizes a cloud network.

Some operating systems such as Sun Solaris and IBM AIX 6.1 support a feature known as operating system virtualization. This type of virtualization creates virtual servers at the operating system or kernel level. Each virtual server is running in its own virtual environment (VE) as a virtual private server (VPS). Different operating systems use different names to describe these machine instances, each of which can support its own guest OS. However, unlike true virtual machines, VPS must all be running the same OS and the same version of that OS. Sun Solaris 10 uses VPS to create what is called Solaris Zones. With IBM AIX, the VPS is called a System Workload Partition (WPAR). This type of virtualization allows for a dense collection of virtual machines with relatively low overhead. Operating system virtualization provides many of the benefits of virtualization previously noted in this section.

VMware vSphere
VMware vSphere is a management infrastructure framework that virtualizes system, storage, and networking hardware to create cloud computing infrastructures. vSphere is the branding for a set of management tools and a set of products previously labeled VMware Infrastructure. vSphere provides a set of services that applications can use to access cloud resources, including these:

VMware vCompute: A service that aggregates servers into an assignable pool
VMware vStorage: A service that aggregates storage resources into an assignable pool
VMware vNetwork: A service that creates and manages virtual network interfaces
Application services: Such as HA (High Availability) and Fault Tolerance
vCenter Server: A provisioning, management, and monitoring console for VMware cloud infrastructures
Figure 5.3 shows an architectural diagram of a vSphere cloud infrastructure.

A vSphere cloud is a pure infrastructure play. The virtualization layer that abstracts processing, memory, and storage uses the VMware ESX or ESXi virtualization server. ESX is a Type 1 hypervisor; it installs over bare metal (a clean system) using a Linux kernel to boot and installs the vmkernel hypervisor (virtualization kernel and support files). When the system is rebooted, the vmkernel loads first, and then the Linux kernel becomes the first guest operating system to run as a virtual machine on the system and contains the service console.

VMware is a very highly developed infrastructure and the current leader in this industry. A number of important add-on products are available for cloud computing applications. These are among the more notable products:

Virtual Machine File System (VMFS): A high-performance cluster file system for an ESX/ESXi cluster.
VMotion: A service that allows for the migration of a virtual machine from one physical server to another physical server while the virtual server runs continuously and without any interruption of ongoing transactions.The ability to live migrate virtual machines is considered to be a technological tour de force and a differentiator from other virtual machine system vendors.
Storage VMotion: A product that can migrate files from one datastore to another datastore while the virtual machine that uses the datastore continues to run.
Virtual SMP: A feature that allows a virtual machine to run on two or more physical processors at the same time.
Distributed Resource Scheduler (DRS): A system for provisioning virtual machines and load balancing processing resources dynamically across the different physical systems that are in use. A part of the DRS called the distributed power management (DPM) module can manage the power consumption of systems.
vNetwork Distributed Switch (DVS): A capability to maintain a network runtime state for virtual machines as they are migrated from one physical system to another. DVS also monitors network connections, provides firewall services, and enables the use of third-party switches such as the Cisco Nexus 1000V to manage virtual networks.
You can get a better sense of how the different resources are allocated by vSphere into a virtual set of components by examining Figure 5.4. Physical computers can be standalone hosts or a set of clustered systems. In either case, a set of virtual machines can be created that is part of a single physical system or spans two or more physical systems.

You can define a group of VMs as a Resource Pool (RP) and, by doing so, manage those virtual machines as a single object with a single policy. Resource Pools can be placed into a hierarchy or nested and can inherit properties of their parent RP. As more hosts or cluster nodes are added or removed, vSphere can dynamically adjust the provisioning of VMs to accommodate the policy in place. This fine tuning of pooled resources is required to accommodate the needs of cloud computing networks.

The datastore shown at the center of Figure 5.4 is a shared storage resource. These storage resources can be either Direct Attached Storage (DAS) of a server using SCSI, SAS, or SATA connections, Fibre Channel disk arrays/SANs, iSCSI disk arrays/SANs, or Network Attached Storage (NAS) disk arrays. Although the lines drawn between the datastore and different VMs indicate a direct connection, with the exception of DAS, the other storage types are shared storage solutions.

Storage virtualization is most commonly achieved through a mapping mechanism where a logical storage address is translated into a physical storage address. Block-based storage such as those used in SANs use a feature called a Logical Unit Identifier (LUN) with specific addresses stored in the form of an offset called the Logical Block Address (LBA). The address space mapping then maps the address of the logical or virtual disk (vdisk) to the logical unit on a storage controller. Storage virtualization may be done in software or in hardware, and it allows requests for virtualized storage to be redirected as needed.

Similarly, network virtualization abstracts networking hardware and software into a virtual network that can be managed. A virtual network can create virtual network interfaces (VNICs) or virtual LANs (VLANS) and can be managed by a hypervisor, operating system, or external management console. In a virtualized infrastructure such as the one presented in this section, internal network virtualization is occurring and the hypervisor interacts with networking hardware to create a pseudo-network interface. External network virtualization can be done using network switches and VLAN software.

The key feature that makes virtual infrastructure so appealing for organizations implementing a cloud computing solution is flexibility. Instantiating a virtual machine is a very fast process, typically only a few seconds in length. You can make machine images of systems in the configuration that you want to deploy or take snapshots of working virtual machines. These images can be brought on-line as needed.

Understanding Machine Imaging
In the preceding sections, you have seen how the abstractions that cloud computing needs can be achieved through redirection and virtualization. A third mechanism is commonly used to provide system portability, instantiate applications, and provision and deploy systems in the cloud. This third mechanism is through storing the state of a systems using a system image.

Cross-Ref
Backing up to the cloud often involves imaging or snapshot applications; this process is described in Chapter 15, “Working with Cloud-Based Storage.”

A system image makes a copy or a clone of the entire computer system inside a single container such as a file. The system imaging program is used to make this image and can be used later to restore a system image. Some imaging programs can take snapshots of systems, and most allow you to view the files contained in the image and do partial restores.

Note
The one open standard for storing a system image is the Open Virtualization Format (OVF; see http://www.dmtf.org/standards/published_documents/DSP0243_1.1.0.pdf) that is published by the Distributed Task Format (DMTF; http://www.dmtf.org/). Some notable virtualization vendors, such as VMware, Microsoft, Citrix, and Oracle (Sun), are supporting this effort.

A prominent example of a system image and how it can be used in cloud computing architectures is the Amazon Machine Image (AMI) used by Amazon Web Services to store copies of a virtual machine. Because this is a key feature of Amazon’s Elastic Compute Cloud and is discussed in detail in Chapter 9, I briefly mention it here. An AMI is a file system image that contains an operating system, all appropriate device drivers, and any applications and state information that the working virtual machine would have.

When you subscribe to AWS, you can choose to use one of its hundreds of canned AMIs or to create a custom system and capture that system’s image to an AMI. An AMI can be for public use under a free distribution license, for pay-per-use with operating systems such as Windows, or shared by an EC2 user with other users who are given the privilege of access.

Cross-Ref
Refer to Chapter 9, “Using Amazon Web Services,” for more information about AMIs and their uses in the EC2 service.

The AMI file system is not a standard bit-for-bit image of a system that is common to many disk imaging programs. AMI omits the kernel image and stores a pointer to a particular kernel that is part of the AWS kernel library. Among the choices are Red Hat Linux, Ubuntu, Microsoft Windows, Solaris, and others. Files in AMI are compressed and encrypted, and an XML file is written that describes the AMI archive. AMIs are typically stored in your Amazon S3 (Simple Storage System) buckets as a set of 10MB chunks.

Machine images are sometimes referred to as “virtual appliances”—systems that are meant to run on virtualization platforms. AWS EC2 runs on the Xen hypervisor, for example. The term virtual appliance is meant to differentiate the software image from an operating virtual machine. The system image contains the operating system and applications that create an environment. Most virtual appliances are used to run a single application and are configurable from a Web page. Virtual appliances are a relatively new paradigm for application deployment, and cloud computing is the major reason for the interest in them and for their adoption. This area of WAN application portability and deployment, and of WAN optimization of an application based on demand, is one with many new participants. Certeon (http://www.certeon.com/), Expand Networks (http://www.expand.com/), and Replify (http://www.replify.com/) are three vendors offering optimization appliances for VMware’s infrastructure.

Porting Applications
Cloud computing applications have the ability to run on virtual systems and for these systems to be moved as needed to respond to demand. Systems (VMs running applications), storage, and network assets can all be virtualized and have sufficient flexibility to give acceptable distributed WAN application performance. Developers who write software to run in the cloud will undoubtedly want the ability to port their applications from one cloud vendor to another, but that is a much more difficult proposition. Cloud computing is a relatively new area of technology, and the major vendors have technologies that don’t interoperate with one another.

The Simple Cloud API
If you build an application on a platform such as Microsoft Azure, porting that application to Amazon Web Services or GoogleApps may be difficult, if not impossible. In an effort to create an interoperability standard, Zend Technologies has started an open source initiative to create a common application program interface that will allow applications to be portable. The initiative is called the Simple API for Cloud Application Services (http://www.simplecloud.org/), and the effort has drawn interest from several major cloud computing companies. Among the founding supporters are IBM, Microsoft, Nivanix, Rackspace, and GoGrid.

Simple Cloud API has as its goal a set of common interfaces for:

File Storage Services: Currently Amazon S3, Windows Azure Blob Storage, Nirvanix, and Local storage is supported by the Storage API. There are plans to extend this API to Rackspace Cloud Files and GoGrid Cloud Storage.
Document Storage Services: Amazon SimpleDB and Windows Azure Table Storage are currently supported. Local document storage is planned.
Simple Queue Services: Amazon SQS, Windows Azure Queue Storage, and Local queue services are supported.
Zend intends to add the interface to their open source PHP Framework (http://www.framework.zend.com) as the Zend_Cloud framework component. Vendors such as Microsoft and IBM are supplying adapters that will use part of the Simple Cloud API for their cloud application services.

AppZero Virtual Application Appliance
Applications that run in datacenters are captive to the operating systems and hardware platforms that they run on. Many datacenters are a veritable Noah’s Ark of computing. So moving an application from one platform to another isn’t nearly as simple as moving a machine image from one system to another.

The situation is further complicated by the fact that applications are tightly coupled with the operating systems on which they run. An application running on Windows, for example, isn’t isolated from other applications. When the application loads, it often loads or uses different Dynamic Link Libraries (DLL), and it is through the sharing or modification of DLLs that Windows applications get themselves in trouble. Further modifications include modifying the registry during installation. These factors make it difficult to port applications from one platform to another without lots of careful work. If you are a Platform as a Service (PaaS) application developer, you are packaging a complete software stack that includes not only your application, but the operating system and application logic and rules as well. Vendor lock-in for you application is assured.

The ability to run an application from whatever platform you want is not one of the characteristics of cloud computing, but you can imagine that it is a very attractive proposition. While the Simple Cloud API is useful for applications written in PHP, other methods may be needed to make applications easily portable. One company working on this problem is AppZero (http://www.appzero.com/), and its solution is called the Virtual Application Appliance (VAA).

The AppZero solution creates a virtual application appliance as an architectural layer between the Windows or the UNIX operating system and applications. The virtualization layer serves as the mediator for file I/O, memory I/O, and application calls and response to DLLs, which has the effect of sandboxing the application. The running application in AppZero changes none of the registry entries or any of the files on the Windows Server.

VAA creates a container that encapsulates the application and all the application’s dependencies within a set of files; it is essentially an Application Image for a specific OS. Dependencies include DLL, service settings, necessary configuration files, registry entries, and machine and network settings. This container forms an installable server-side application stack that can be run after installation, but has no impact on the underlying operating system. VAAs are created using the AppZero Creator wizard, managed with the AppZero Admin tool, and may be installed using the AppZero Director, which creates a VAA runtime application. If desired, an application called AppZero Dissolve removes the VAA virtualization layer from the encapsulated application and installs that application directly into the operating system.

Note
Microsoft App-V (http://www.microsoft.com/windows/enterprise/products/mdop/app-v.aspx) and VMware ThinApp (http://www.vmware.com/products/thinapp/) are two application delivery platforms, but their main focus is on desktop installations and not on server deployment in the cloud.

Installations can be done over the network after the AppZero application appliance is installed. Therefore, with this system, you could run applications on the same Windows Server and eliminate one application from interfering with another; applications would be much more easily ported from one Windows system to another. AppZero’s approach provides the necessary abstraction layer that frees an application from its platform dependence.

An interesting use of VAAs involves segmenting an application into several VAAs, some of which are read-only runtime components, while others can be modified. When backing up or replicating VAAs in a cloud, you would need to synchronize only those VAAs that are modified. In many instances, the portion of an application that changes is only a very small component of large applications, which means that this technique can greatly reduce the amount of data required to replicate a VM in the cloud.

AppZero envisages using VAAs to create what it calls a stateless cloud. In a stateless cloud, the application’s state information is stored on a network share where it is available to run on different cloud systems as needed. This approach allows the cloud system to run with a VM containing a clean operating system (like AWS does now) and provisioned by the VAA. This approach should greatly reduce the number of complete system images that cloud vendors and cloud users should need to store to support their work; it also should make the running of applications on secure, well-performing VEs easier to achieve.

Summary
In this chapter, you learned about some of the more important characteristics of cloud computing networks and applications, including ubiquitousness and on-demand service. To enable a cloud service, you need to create a pool of resources you can call on. The key techniques for enabling this are abstraction and virtualization. Abstraction maps a logical identity or address to a physical identity or address. Changes to the underlying systems, therefore, do not affect the client requesting a service.

Several different methods for abstraction have been considered. A widely used technique is load balancing. With load balancing, system requests are directed to appropriate systems on demand. All large cloud networks use some form of load balancing. You learned about some of the details of Google’s load balancing for queries.

Another technology virtualizes hardware. You learned about the different types of hypervisors—software that can serve as a virtualization layer for operating systems accessing the underlying hardware. As an example of hardware virtualization VMware’s vSphere infrastructure was considered. vSphere can create virtual machines, virtual datastores, and virtual networks, and move these resources about while the system is active. vSphere is a potent cloud-building technology.

System imaging also can be useful in creating and instantiating machine instances. A brief explanation of Amazon Machine Instances was given.

Finally, the topic of application portability was considered. Applications are hard to move from platform to platform, because they are bound up with the operating system on which they run. Eventually, applications will be as portable as virtual machines. A cloud programming interface was described, as was an application delivery appliance.

In Chapter 6, “Capacity Planning,” the idea of system workloads is described. Understanding this concept allows you to scale your systems correctly, choose the right type of infrastructure, and do availability planning. Some of the key performance metrics for cloud computing “right sizing” are described.

LABOR LAW

LABOR LAW

Review the Union Organizing Case Study.

Research labor laws and legal cases on union organization in parking lots using online law libraries or other Internet sources of your choice.

Using the IRAC method (Issue, Rule, Analysis, Conclusion) of legal case analysis, analyze the case study by identifying the applicable rule of law(s) relevant to the case.

Explain in 100 words whether or not the storeowner may prohibit nonemployee union organizers from distributing leaflets in a shopping mall parking lot owned by the storeowner.
Explain in 200 words what Rule(s) (of law) apply in the third-person voice