22
Multitiered Architectures & Cloud Services Benoît Garbinato

Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architectures

& Cloud Services

Benoît Garbinato

Page 2: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Learning objectives

Learn about enterprise computing

Learn about multitiered architectures

Learn about Java Enterprise Services

Learn about cloud computing

Page 3: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Various Client Types

Multi-TierSince 2000

Architecture evolution | Specialization

App Logic DB

TPGUI Adapt.

Page 4: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Enterprise computingDistributed Enterprise Applications exhibit critical needs:

highly available highly reliable highly scalable highly secure Etc.

Software architects & developers must therefore be experts not only in the application domain, but also in these various orthogonal domains known as system qualities

Page 5: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Enterprise computing (2)In addition, with the advent of the web and of mobile communication, enterprise applications must now be able to interact via many devices on many channels

Conclusion: software engineers must in addition aim at flexible, multi-channel & forward-looking distributed architectures

Page 6: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Application server

Software that runs on some middle tier, between: web-server (thin clients) databases / legacy applications

Support for clustering, load balancing, fail-over, connectivity to legacy systems, transaction processing, business logic, etc...

Hosting environment for server-side components

Page 7: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Java Enterprise ServicesA set of standard APIs providing access to existing infrastructure services

Enterprise Java APIs are platform & vendor neutral

A business component model based on these APIs, i.e., that can be deployed on:

any hardware/operating system any compliant applications server

��The Java EE platform

Page 8: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Java EE | OverviewJava EE stands for Java platform, Enterprise Edition

Java EE is the specification of a distributed multitiered application model for enterprise applications, presented as a coherent set of programming APIs

Implementations of the Java EE specification are usually proposed in the form of application servers

Micro Edition (Java ME)

Standard Edition (Java SE)

Enterprise Edition (Java EE)The Java platform

superseded by Android

Page 9: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Distributed Objects: Web Services, Java RMI

Object Directory: JNDI

Database Access: JPA, jDBC

Transactions: JTA, JTS

Web: Servlets, JSP, tab libs

Asynchronous interactions: Websockets, Futures

Business Components Model: EJBs

Enterprise Java APIs

Page 10: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Java ME

Midlet Container

client tier web tier persistent tier

PersistentStorage

busi

nes

s ti

er

Container-based Architecture

Java SEJava SE

Java SE

Java SE

Page 11: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

listener/delegate

some servicesome client

create listener/delegate

register listener/delegate

asynchronous callback to listener/delegate

The Generalized Asynchronous Callback Principle

event

Container-based Architecturecontainer

component

container

deployment

create component

register component

asynchronous callback to component

Component

event

Page 12: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

App Logic DB

TP

cloud

VirtualizationArchitecture evolution |

App Logic DB

TP App Logic DB

TP

App Logic DB

TP

App Logic DB

TP

App Logic DB

TP

App Logic DB

TP

& the cloud

Page 13: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Hardware

Hypervisor*

Operating System (OS)

app 1 app 2 app 3 app 4 app 5

*also called Virtual Machine Monitor

Operating System (OS)

since 1999: rebirth of this concept applying it to the Intel processor architecture

Hardware

Hypervisor

Host OS (macOS)

Guest OS (Linux)

app 1 app 2 app 3 app 4 app 5

Guest OS (Windows)

| PrincipleVirtualization1960: first concept & implementationin the IBM S/360

VirtualBox

Page 14: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

docker containervirtual machine

The container-based approach of docker is a variant of virtualization that tries to be more lightweight and to facilitate / accelerate the deployments of complete systems, i.e., OS + libraries + applications

Virtual Machine vs. Containers

Hardware

Guest OSGuest OS Guest OS

Hypervisor

app 1 app 2 app 3

bin/libs bin/libs bin/libs

Hardware

Docker

Host OS

app 1 app 2 app 3

bin/libs bin/libs bin/libs

• small memory footprint (tens of MBs)

• deployment is very quick

• supports only one operating systemon the same hardware

• large memory footprint (tens of GBs)

• deployment is rather slow

• supports different operating systems on the same hardware

Page 15: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Cloud Computing | A Definition

NIST = National Institute of Standards and Technology, U.S. Department of Commerce

Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool

of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be

rapidly provisioned and released with minimal management effort or service provider interaction.

The NIST Definition of Cloud Computing Peter M. Mell, Timothy Grance

https://dx.doi.org/10.6028/NIST.SP.800-145

Page 16: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Infrastructure

The capability provided to the consumer is to provision processing, storage, networks, and other fundamental

computing resources where the consumer is able to deploy and run arbitrary software, which can include

operating systems and applications.

The NIST Definition of Cloud Computing Peter M. Mell, Timothy Grance

https://dx.doi.org/10.6028/NIST.SP.800-145

NIST = National Institute of Standards and Technology, U.S. Department of Commerce

as a Service (IaaS)| A Definition

Page 17: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Platform

The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming

languages, libraries, services, and tools supported by the provider.

The NIST Definition of Cloud Computing Peter M. Mell, Timothy Grance

https://dx.doi.org/10.6028/NIST.SP.800-145

NIST = National Institute of Standards and Technology, U.S. Department of Commerce

as a Service (PaaS)| A Definition

Page 18: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Software

The capability provided to the consumer is to use the provider’s applications running on a cloud infrastructure.

The applications are accessible from various client devices through either a thin client interface, such as a web

browser (e.g., web-based email), or a program interface.

The NIST Definition of Cloud Computing

Peter M. Mell, Timothy Grancehttps://dx.doi.org/10.6028/NIST.SP.800-145

NIST = National Institute of Standards and Technology, U.S. Department of Commerce

as a Service (SaaS)| A Definition

Page 19: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Types of Cloud Services✦ Infrastructure as a Service (IaaS)

Why buy when you can rent and scale? Example: Amazon EC2

✦ Platform as a Service (PaaS) Give me nice APIs with solid implementations! Example: Matchmore Location-based Pub/Sub

✦ Software as a Service (SaaS) Run it for me and make it accessible anywhere! Example: Google Docs, Sheets, Slides

Page 20: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

From pizza...

pizza dough

cheese

tomato sauce

toppings

oven

electricity

drinks

dining table

forks & knives

home made

your

resp

onsi

bilit

y

pizza dough

cheese

tomato sauce

toppings

oven

electricity

drinks

dining table

forks & knives

take & bake

your

resp

onsi

bilit

y

vendor’s responsibility pizza dough

cheese

tomato sauce

toppings

oven

electricity

drinks

dining table

forks & knives

pizza delivery

your

resp

onsi

bilit

y

vendor’s responsibility

pizza dough

cheese

tomato sauce

toppings

oven

electricity

drinks

dining table

forks & knives

dining out

vendor’s responsibility

!

Page 21: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

...to the Cloud !

data center

network

servers & storage

virtualization

systems

databases

frameworks

applications

security

on premises (no cloud)

your

resp

onsi

bilit

y

data center

network

servers & storage

virtualization

systems

databases

frameworks

applications

security

Infrastructure as a Service

(IaaS)

your

resp

onsi

bilit

y

cloud provider’s responsibility

data center

network

servers & storage

virtualization

systems

databases

frameworks

applications

security

your

resp

onsi

bilit

y

cloud provider’s responsibility

Platform as a Service

(PaaS)

data center

network

servers & storage

virtualization

systems

databases

frameworks

applications

security

cloud provider’s responsibility

Software as a Service

(SaaS)

Page 22: Multitiered Architectures & Cloud Services · 2018. 3. 7. · Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable

Multitiered Architecture & Cloud Services © Benoît Garbinato

Cloud Providers

ex–

Watson

Cloud

et cæterae...