L'evoluzione delle Applicazioni Distribuite Dai Fosfori Verdi alle Internet API Tito Flagella Laboratorio Applicazioni Internet - Università di Pisa Tito Flagella - [email protected] Slide Title dei Green Screen... Ai tempi • thin client su 3270 a fosfori verde • server TP-Monitor su Mainframe Tito Flagella - [email protected] 2 Slide Title Definizione del TP Monitor • Un Sistema Operativo per Transaction Processing – Transaction Management – Resource Management: comunicazione, memoria, spazio disco – Process Management: attivazione di processi (o thread), distribuzione del carico, monitoraggio, recovery,... Tito Flagella - [email protected] 3 Slide Title La Rivoluzione Client-Server • La diffusione dei PC offre: nuova potenza di calcolo da sfruttare; soluzioni economiche per realizzare GUI userfriendly (Ambienti come Visual Basic, ...) • Si diffondono i DB Relazionali (RDBMS) Tito Flagella - [email protected] 4 Slide Title Architettura a due livelli (two-tier) • il Fat Client include: – Presentation Logic – Business Logic – Data Manipulation Logic (connessioni a DB e query SQL) • il Server in generale si limita a gestire l'accesso ai dati (Resource Manager, solitamente RDBMS) Tito Flagella - [email protected] 5 Slide Title dell'Architettura a due livelli Vantaggi Sfrutta il parallelismo nel più semplice dei modi, distribuendo i client su macchine diverse Tito Flagella - [email protected] 6 Slide Title dell'Architettura a due livelli Svantaggi – Fat Client include la business logic • richiede upgrade del client ad ogni upgrade del server – dimensioni eccessive • incompatibili con il download a run-time (Applet Java) – poco scalabile • migliaia di applicazioni client accedono a l'unico server RDBMS Tito Flagella - [email protected] 7 Slide Titlela via degli RDBMS Vendor TP-lite: – stored procedure e triggers riportano parte della logica applicativa nel server – Vantaggi: viene limitato il traffico dei dati sulla rete (sequenze di query SQL pilotate direttamente sul server) – Svantaggi: resta sovraccaricato un unico server Tito Flagella - [email protected] 8 Slide Title TP-heavy: la via dei TP Vendor • Unix-based TP monitor: – BEA Systems TUXEDO – Digital's ACMSxp – IBM's Encina – NCR's Top End – UniKix Technologies'UniKix • Controindicazioni dei TP Monitor – Costi e Difficoltà d’uso Tito Flagella - [email protected] 9 Slide Title di Open Systems e OO L'impatto http://en.wikipedia.org/wiki/Open_system_(computing) Open systems are computer systems that provide some combination of interoperability, portability, and open software standards. Object Oriented Distribution: uso di oggetti remoti in maniera trasparente Tito Flagella - [email protected] 10 Slide Title L'Architettura CORBA Si diffonde l'architettura CORBA (Common Object Request Broker Architecture) di OMG (Object Management Group) a vendor-independent architecture and infrastructure that computer applications use to work together over networks. Using the standard protocol IIOP, a CORBA-based program from any vendor, on almost any computer, operating system, programming language, and network, can interoperate with a CORBA-based program from the same or another vendor, on almost any other computer, operating system, programming language, and network. La versione 1.0 fù rilasciata nel 1991. Tito Flagella - [email protected] 11 Slide Title L'Architettura CORBA Tito Flagella - [email protected] 12 Slide Title Wide Web Il World • Tim Berners-Lee pubblicò la prima proposta del WWW nel 1989 • Il primo web browser di larga diffusione fù Mosaic, realizzato nel 1993 da Marc Andreessen • Nel 1993, l'NCSA propone anche il protocollo CGI, un semplice meccanismo per servire pagine dinamiche da parte di un Web Server Tito Flagella - [email protected] 13 L'impatto Slide Titledel WWW sulle Applicazioni Distribuite • Il browser diventa il thin client universale • Applicazioni aggiornabili solo sul server (supporto di utenza “spontanea”) • Il server Web c’è e quindi si candida ad occupare il secondo livello Tito Flagella - [email protected] 14 Slide Title Prima Generazione Applicazioni Web • Architettura a tre livelli (browser, Application Server, DB) • Client: Browser di prima generazione (no Java, no Scripting) • Application Server: Web server con estensioni CGI (Perl, shell, ...) • HTTP come protocollo di comunicazione tra client e server • La presentazione viene realizzata ridisegnando completamente la pagina del browser ad ogni interazione con l’utente Tito Flagella - [email protected] 15 Slide Prima TitleGenerazione Applicazioni Web Prima Generazione Applicazioni Web Tito Flagella - [email protected] 16 Slide Title Generazione Web Seconda • Architettura a più livelli (three-tier o multi-tier) – Thin Client (Browser delle ultime generazioni + uso di Java + Dynamic HTML) – un certo numero di Application Server Distribuiti (Business Logic + Data Access Logic) – HTTP come protocollo tra browser e web-server – la presentazione può essere realizzata senza ridisegnare tutta la pagina del browser, grazie alla comunicazione Applet - Application Server basata su HTTP o in qualche caso su IIOP – IIOP (CORBA) come protocollo di comunicazione tra gli Application Server e con i sistemi legacy. Tito Flagella - [email protected] 17 Terza Generazione Web Slide Title • Nasce l’esigenza di far comunicare le applicazioni su Internet, con un minimo coordinamento tra i nodi • CORBA si dimostra inadatto a questo fine • Comincia il processo di standardizzazione della nuova tecnologia dei Web Services, basati su http e XML. • Attorno ad http e XML si cerca di standardizzare tutta una serie di servizi analoghi a quelli già disponibili per altri ambienti distribuiti, come CORBA. Tito Flagella - [email protected] 18 Slide Title Tito Flagella - [email protected] 19 Slide Title La programmazione su Internet • http://en.wikipedia.org/wiki/Web_service – ● The W3C defines a Web service as: a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards. http://en.wikipedia.org/wiki/Representational_state_transfer Representational state transfer (REST) is an architectural style consisting of a coordinated set of constraints applied to components, connectors, and data elements, within a distributed hypermedia system. REST ignores the details of component implementation and protocol syntax in order to focus on the roles of components, the constraints upon their interaction with other components, and their interpretation of significant data elements. • http://en.wikipedia.org/wiki/Web_API A server-side web API is a programmatic interface to a defined request-response message system, typically expressed in JSON or XML, which is exposed via the web—most commonly by means of an HTTP-based web server. Tito Flagella - [email protected] 20 Slide Title REST http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven Tito Flagella - [email protected] 22 Slide WebTitle API Tito Flagella - [email protected] 23 Slide Che Title tecnologia scegliere... L'unico punto fermo resta http come protocollo di base ● Per il resto non esiste una tecnologia migliore di altre, si tratta di scelte progettuali Un paio di esempi: ● Google parte con Web Service API ma le dismette nel 2009: ● http://googlecode.blogspot.it/2009/08/well-earned-retirement-for-soap-search.html ● La legge Italiana impone dal 2008 l'uso di SOAP per tutte le comunicazioni applicative tra e con la Pubblica Amministrazione: http://www.agid.gov.it/agenda-digitale/infrastrutture-architetture/servizi-interoperabilita-evoluta Tito Flagella - [email protected] 24 Slide Title Google Search API http://googlecode.blogspot.it/2009/08/well-earned-retirement-for-soap-search.html Tito Flagella - [email protected] 25 Slide ComeTitle evolvono le infrastrutture? Ok per le Interfacce, ma per le infrastrutture? ● Avevamo lasciato i DBMS come collo di bottiglia dell'architettura Client Server ● L'architettura a 3 livelli permette di scaricare il DB da qualunque logica applicativa, ma resta un collo di bottiglia nell'accesso ai dati ● E sappiamo che i DBMS scalano molto male in orizzontale ● Le nuove applicazioni Internet hanno requisiti prestazionali incommessurabilmente maggiori delle applicazioni tradizionali ● Serve un rinnovamento tecnologico anche sugli aspetti legati alla persistenza dei dati ● Tito Flagella - [email protected] 26 Slide Titledi Partizionamento dei Dati Tecniche Sharding is the equivalent of "horizontal partitioning". When you shard a database, you create replica's of the schema, and then divide what data is stored in each shard based on a shard key. For example, I might shard my customer database using CustomerId as a shard key - I'd store ranges 0-10000 in one shard and 10001-20000 in a different shard. When choosing a shard key, the DBA will typically look at dataaccess patterns and space issues to ensure that they are distributing load and space across shards evenly. ● "Vertical partitioning" is the act of splitting up the data stored in one entity into multiple entities - again for space and performance reasons. For example, a customer might only have one billing address, yet I might choose to put the billing address information into a separate table with a CustomerId reference so that I have the flexibility to move that information into a separate database, or different security context, etc. ● Tito Flagella - [email protected] 27 L'esempio Slide Title della crescita di YouTube The Early Years - Use MySQL to store meta data like users, tags, and descriptions. - Served data off a monolithic RAID 10 Volume with 10 disks. - Living off credit cards so they leased hardware. When they needed more hardware to handle load it took a few days to order and get delivered. - They went through a common evolution: single server, went to a single master with multiple read slaves, then partitioned the database, and then settled on a sharding approach. - Suffered from replica lag. The master is multi-threaded and runs on a large machine so it can handle a lot of work. Slaves are single threaded and usually run on lesser machines and replication is asynchronous, so the slaves can lag significantly behind the master. - Updates cause cache misses which goes to disk where slow I/O causes slow replication. - Using a replicating architecture you need to spend a lot of money for incremental bits of write performance. - One of their solutions was prioritize traffic by splitting the data into two clusters: a video watch pool and a general cluster. The idea is that people want to watch video so that function should get the most resources. The social networking features of YouTube are less important so they can be routed to a less capable cluster. The later years: - Went to database partitioning. - Split into shards with users assigned to different shards. - Spreads writes and reads. - Much better cache locality which means less IO. - Resulted in a 30% hardware reduction. - Reduced replica lag to 0. - Can now scale database almost arbitrarily. Fonte: http://highscalability.com/youtube-architecture Tito Flagella - [email protected] 28 Slide Title il codice dai Dati Portare I dati scalano meglio, ma restano su server diversi dalle applicazioni ● I dati del web aumentano e Google non può più indicizzare il mondo usando tecniche così primitive ● Google annuncia il Google File System nell'ottobre del 2003 ed il paradigma MapReduce nel dicembre del 2004: ● http://research.google.com/archive/gfs.htmlhttp://research.google.com/ archive/gfs.html http://research.google.com/archive/mapreduce.html Tito Flagella - [email protected] 29 Slide Title Hadoop Tito Flagella - [email protected] 30 NOSQL Slide Title Database http://en.wikipedia.org/wiki/NoSQL A NoSQL (often interpreted as Not only SQL) database provides a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases. Motivations for this approach include simplicity of design, horizontal scaling, and finer control over availability. The data structures used by NoSQL databases (e.g. keyvalue, graph, or document) differ from those used in relational databases, making some operations faster in NoSQL and others faster in relational databases. The particular suitability of a given NoSQL database depends on the problem it must solve. Many NoSQL stores compromise consistency in favor of availability and partition tolerance. http://en.wikipedia.org/wiki/NewSQL NewSQL is a class of modern relational database management systems that seek to provide the same scalable performance of NoSQL systems for online transaction processing (OLTP) read-write workloads while still maintaining the ACID guarantees of a traditional database system. Tito Flagella - [email protected] 33 Slide Title L'architettura logica di un nodo applicativo Tito Flagella - [email protected] 34 Slide Title L'architettura fisica di un nodo Tito Flagella - [email protected] 35 Slide Title L'architettura software di un nodo Tito Flagella - [email protected] 36 SlideCase TitleStudy 1 (da: Release It!) Tito Flagella - [email protected] 37 Slide Title Case Study 1 (da: Release It!) Tito Flagella - [email protected] 39 Slide CaseTitle Study 1 (da: Release It!) Case Study 1 (da: Release It!) Tito Flagella - [email protected] 40 Slide TitleStudy 1 (da: Release It!) Case public List lookupByCity( ... ) throws SQLException, RemoteException { Connection conn = null; Statement stmt = null; try { Conn = connectionPool.getConnection(); Stmt = conn.createStatement(); // ... business logic, return results ... } finally { if (stmt != null ) stmt.close(); if (conn != null ) conn.close(); } } } Tito Flagella - [email protected] 41 Slide TitleStudy 1 (da: Release It!) Case public List lookupByCity( ... ) throws SQLException, RemoteException { Connection conn = null; Statement stmt = null; try { Conn = connectionPool.getConnection(); Stmt = conn.createStatement(); // ... business logic, return results ... } finally { if (stmt != null) { try { stmt.close(); } catch (SQLException e) { /*ignored*/ } if (conn != null ) conn.close(); } } Tito Flagella - [email protected] 42