service-oriented architectures andrew whitaker cse451

21
Service-Oriented Architectures Andrew Whitaker CSE451

Post on 18-Dec-2015

219 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Service-Oriented Architectures Andrew Whitaker CSE451

Service-Oriented Architectures

Andrew Whitaker

CSE451

Page 2: Service-Oriented Architectures Andrew Whitaker CSE451

Today’s Theme

How do you allow hundreds of developers to work on a single website?

Page 3: Service-Oriented Architectures Andrew Whitaker CSE451

Amazon.com: The Beginning

Initially, one web server (Obidos) and one database

Obidos DatabaseInternet

Details: Front end consists of a web server (Apache) and “business logic” (Obidos)

Page 4: Service-Oriented Architectures Andrew Whitaker CSE451

Amazon: Success Disaster!

Obidos

Obidos

Obidos

Obidos

Obidos

Loadbalancer

Amazon.com

Internet

Database

Database

Use redundancy to scale-up, improve availability

Page 5: Service-Oriented Architectures Andrew Whitaker CSE451

Obidos

Obidos was a single monolithic C application that comprised most of Amazon.com’s functionality

During scale-up, this model began to break down

Page 6: Service-Oriented Architectures Andrew Whitaker CSE451

Problem #1: Branch Management

Merging code across branches becomes untenable

HelloWorld.c

developmentrelease

Blue changes depend on Red changes (which maydepend on other changes…)

Page 7: Service-Oriented Architectures Andrew Whitaker CSE451

Problem #2: Debugging

On a failure, we would like to inspect what happened “recently” But, the change log contains numerous updates

from many groups

Bigger problem: lack of isolation Change by one group can impact others

Page 8: Service-Oriented Architectures Andrew Whitaker CSE451

Problem #3: Linker Failure

Obidos grew so large that standard build tools were failing

Page 9: Service-Oriented Architectures Andrew Whitaker CSE451

Service-Oriented Architecture (1)

First, decompose the monolithic web site into a set of smaller modules Called services

Examples: Recommendation service Price service Catalogue service And MANY others

Page 10: Service-Oriented Architectures Andrew Whitaker CSE451

Sidebar: Modularity

Information hiding (Parnas 1972): The purpose of a module is to hide secrets

Benefits of modularity Groups can work independently

Less “synchronization overhead” Ease of change

We are free to change the hidden secrets Ease of comprehension

Can study the system at a high level of abstraction

public interface List { } // This can be an array, a linked-list, // or something else

Page 11: Service-Oriented Architectures Andrew Whitaker CSE451

Systems and Information Hiding

There is often a tension between performance and information hiding

In OS’s, performance often wins:

struct buffer { // DO NOT MOVE these fields! // They are accessed by inline assembly that // assumes the current ordering. struct buffer* next; struct buffer* prev; int size; …

}

Page 12: Service-Oriented Architectures Andrew Whitaker CSE451

Service Oriented Architectures (2)

Modularity + a network

Services live on disjoint sets of machinesServices communicate using RPC

Remote procedure call

Page 13: Service-Oriented Architectures Andrew Whitaker CSE451

Remote Procedure Call

RPC exposes a programming interface across machines:

interface PriceService { float getPrice(long uniqueID);}

Client Server

PriceImpl

getPrice()

Page 14: Service-Oriented Architectures Andrew Whitaker CSE451

SOA, Visualized

Website

ShoppingCart

Price

RecommendationCatalogue

•All services reside on separate machines•All invocations are remote procedure calls

Page 15: Service-Oriented Architectures Andrew Whitaker CSE451

Benefits of SOA

Modularity and service isolation This extends all the way down to the OS,

programming language, build tools, etc.

Better visibility Administrators can monitor the interactions

between services

Better resource accounting Who is using which resources?

Page 16: Service-Oriented Architectures Andrew Whitaker CSE451

Performance Issues

A webpage can require dozens of service calls RPC system must be high performance

Metrics of interest: Throughput Latency

Both average and the variance

Page 17: Service-Oriented Architectures Andrew Whitaker CSE451

SLAs

Service performance is dictated by contracts called Service Level Agreements e.g., Service Foo must

Have 4 9’s of availability Have a median latency of 50 ms Have a 3 9’s latency of 200 ms

Page 18: Service-Oriented Architectures Andrew Whitaker CSE451

Amazon and Web Services

Allow third-parties to use some (but not all) of the Amazon platform

Front-endwebsite

Catalogue

Sleds.com

OrderProcessing

ShoppingCarts

Amazon.com

Page 19: Service-Oriented Architectures Andrew Whitaker CSE451

Searching on a Web Site

Page 20: Service-Oriented Architectures Andrew Whitaker CSE451

Searching Through a Web Service

class Program { static void Main(string[] args) { AWSECommerceService service = new AWSECommerceService();

ItemSearch request = new ItemSearch();

request.SubscriptionId = "0525E2PQ81DD7ZTWTK82";

request.Request = new ItemSearchRequest[1]; request.Request[0] = new ItemSearchRequest(); request.Request[0].ResponseGroup = new string[] { "Small" }; request.Request[0].SearchIndex = "Books"; request.Request[0].Author = "Tom Clancy";

ItemSearchResponse response = service.ItemSearch(request);

Console.WriteLine(response.Items[0].Item.Length + " books written by Tom Clancy found."); }}

Page 21: Service-Oriented Architectures Andrew Whitaker CSE451

Other Web Services

Google Calendar Maps Charts

Amazon infrastructure services Simple storage (disk) Elastic compute cloud (virtual machines) SimpleDB

Facebook Ebay …