Dr. Sabin Buraga profs.info.uaic.ro/~busaco Dezvoltarea sistemelor Web sisteme Web bazate pe microservicii specificarea API-urilor

Documente similare
Proiectarea Sistemelor Software Complexe

PowerPoint Presentation

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ Universitatea Babeş-Bolyai Cluj-Napoca superior 1.2 Facultatea Matematică şi Info

Slide 1

Microsoft PowerPoint - TDS5-RO.ppt

..MINISTERUL EDUCAŢIEI NAȚIONALE ŞI CERCETARII STIINTIFICE UNIVERSITATEA DE VEST DIN TIMIȘOARA.I CENTRUL DE DEZVOLTARE ACADEMICĂ. FIȘA DISCIPLINEI 1.

Termeni de utilizare specifici produselor

A TANTÁRGY ADATLAPJA

COLEGIUL TEHNIC „VICTOR UNGUREANU” CAMPIA TURZII

Procesarea documentelor XML in Linux

Pentru afacerea dumneavoastră ModernBiz Glossary 2014 Microsoft Corporation. Toate drepturile rezervate.

Slide 1

Entrepreneurship and Technological Management

FIȘA DISCIPLINEI 1. Date despre program 1.1 Instituția de învățământ superior Universitatea Alexandru Ioan Cuza din Iași 1.2 Facultatea Facultatea de

e-learning Agronomie Platforma de e-learning Versiunea: Ghid de utilizare Beneficiar: UNIVERSITATEA DE STIINTE AGRONOMICE SI MEDICINA VETERINARA

Example Title with Registration Microsoft® and Trademark SQL ServerTM

Slide 1

Microsoft Word - barcan.doc

PowerPoint Presentation

ACADEMIA DE STUDII ECONOMICE DIN BUCUREȘTI Consiliul pentru Studii Universitare de Doctorat Şcoala Doctorală de Contabilitate IMPACTUL TEHNOLOGIILOR I

..MINISTERUL EDUCAŢIEI NAȚIONALE ŞI CERCETARII STIINTIFICE UNIVERSITATEA DE VEST DIN TIMIȘOARA.I CENTRUL DE DEZVOLTARE ACADEMICĂ. FIȘA DISCIPLINEI 1.

PowerPoint Presentation

2 BAZE TEORETICE ALE REȚELELOR DE CALCULATOARE CAPITOLUL 2 BAZE TEORETICE ALE REŢELELOR DE CALCULATOARE 2.1. Necesitatea standardizării (referenţierii

9. Design patterns - Singleton, Factory, Observer Scopul acestui curs este familiarizarea cu folosirea unor pattern-uri des întâlnite în design-ul atâ

Example Title with Registration Microsoft® and Trademark SQL ServerTM

Corporate 2 Template

CURS

Europass CV

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ Universitatea Babeş-Bolyai din Cluj-Napoca superior 1.2 Facultatea Facultatea de

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Babeş-Bolyai Cluj-Napoca 1.2 Facultatea Matematică şi Info

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ Universitatea Babeş-Bolyai Cluj-Napoca superior 1.2 Facultatea Facultatea de Mate

Microsoft Word - Politică de cookie-uri OK_v1.docx

rptFisa

Facultatea de Științe Politice, Administrative și ale Comunicării Str. Traian Moșoiu nr. 71 Cluj-Napoca, RO Tel.: Fax:

O SINGURĂ licență și ai acces de pe oricâte stații de lucru! Olteniei nr.4, Baia Mare Tel.: 0262 / , 0743 /

Ghid de utilizare Moodle Pentru cadre didactice

Ruby on Rails Pop Alexandru Pavel Razvan Calculatoare 4

HELPS MY BUSINESS GROW

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ Universitatea Babeş-Bolyai Cluj-Napoca superior 1.2 Facultatea Matematică şi Info

VoIP Voice Over IP

Creational design patterns

Curs 10 - Automatizarea scalabila a sistemelor

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Alexandru Ioan Cuza din Iaşi 1.2 Facultatea Facultatea de

Microsoft Word - 04-Cotfas Petru A-Rezumat RO

Microsoft Word - Ansamblul software CRONIS

TERMENI DE REFERINȚĂ Servicii de consultanță pentru mentenanța Sistemului de Management al Informațiilor existent (SMI) pentru Asistență Socială siste

Utilizare Internet

Microsoft Word - Fisa disciplinei_BD2_DM_ doc

talaba.doc

PowerPoint Presentation

TRIBUNALUL GORJ Departamentul Economic Financiar și Administrativ Nr: 629 Data: SOLICITARE DE OFERTĂ Tribunalul Gorj, cu sediul în Tg-Jiu,

FIŞA DISCIPLINEI ANEXA nr. 3 la metodologie 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Politehnica din Bucureşti 1.2 F

Microsoft Word - Apostol & Balaceanu 6p.doc

PowerPoint Presentation

Slide 1

Sisteme de calcul în timp real

Atributii:

Peer-to-peer strategies for stimulating resource sharing Mircea Bardac Coordonator: Prof. dr. ing. Adina Magda Florea 23 decembrie 2010

Microsoft Word - Fisa disciplinei BD_I_IE doc

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Babeş-Bolyai Cluj-Napoca 1.2 Facultatea Facultatea de Mate

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Dunărea de Jos Galați 1.2 Facultatea Economie și Administr

IR Update February 2014

Packet Tracer - Configurarea ACL-urilor extinse - Scenariul 1 Topologie Tabela de Adresare R1 Echipament Interfață Adresă IP Masca de subreţea Default

Prezentarea calculatorului

preview_ _Prezentare_Mobile_App

Vehicule Conectate Groupama Asigurări Asigurarea vehiculelor conectate in contextul mobilitatii viitorului Costin Tabacu, Director Tarifare si Dezvolt

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Alexandru Ioan Cuza din Iaşi 1.2 Facultatea Facultatea de

PROGRAMARE ORIENTATA PE OBIECTE

ANEXA nr

MINISTERUL EDUCAŢIEI AL REPUBLICII MOLDOVA COORDONAT: " " 2017 Nr. de înregistrare a planului de învăţământ UNIVERSITATEA DE STAT DIN MOLDOVA Aprobat:

LABORATOR 1. Stocarea si partajarea fisierelor online cu ajutorul Dropbox, WeTransfer.com PREZENTAREA LUCRĂRII DE LABORATOR Lucrarea de laborator îşi

Lucrarea nr. 2 Aplicaţii de tip client Mihai IVANOVICI 6 martie 2006 Scopul acestei lucrări este de a vă familiariza cu modulul Python socket şi cu mo

Sisteme noi de analiza experimentala a dinamicii masinilor si utilajelor. Instrumentatie virtuala

Slide 1

Carrier Pidgeon Protocol

Prezentare DK GDPR

METODE PRACTICE DE IMPLEMENTARE A LABORATOARELOR VIRTUALE ONLINE PENTRU DOMENIUL ELECTRONICII SAU AUTOMATICII METHODS FOR THE IMPLEMENTATION OF ONLINE

Slide 1

Definiţie: modele analitice care asigură evaluarea unor caracteristici de calitate alese, bazându-se pe date din măsurători ale proiectelor software.

Inserarea culorilor in tabele

PowerPoint Presentation

..MINISTERUL EDUCAŢIEI NAȚIONALE ŞI CERCETARII STIINTIFICE UNIVERSITATEA DE VEST DIN TIMIȘOARA.I CENTRUL DE DEZVOLTARE ACADEMICĂ. SYLLABUS / FIȘA DISC

Programe derulate în ediția a treia Junior IT Fun Factory *În cadrul Junior IT Fun Factory fiecare înscriere se face pentru un program individual în f

Microsoft Word - Mihalca.doc

PLAN DE ÎNVĂŢĂMÂNT

Company Overview_NTT DATA's Corporate Overview Presentation

CL2009R0976RO bi_cp 1..1

Ch

Raport tehnic şi ştiinţific final privind implementarea proiectului PN-III-P2-2.1-PED Acronim: ForVer Răzvan Diaconescu Decembrie Rez

XWiki

..MINISTERUL EDUCAŢIEI NAȚIONALE ŞI CERCETARII STIINTIFICE UNIVERSITATEA DE VEST DIN TIMIȘOARA.I CENTRUL DE DEZVOLTARE ACADEMICĂ. FIŞA DISCIPLINEI (CO

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ Universitatea Babeş-Bolyai Cluj-Napoca superior 1.2 Facultatea Facultatea de Mate

Cuprins

Paradigme de Programare

Microsoft Word - AIC A04 - VFR CHART ENG doc

Transcriere:

Dezvoltarea sistemelor Web sisteme Web bazate pe microservicii specificarea API-urilor

Fiecare vis începe cu un visător. Harriet Tubman

Care sunt arhitecturile software tipice pe baza cărora sunt dezvoltate sisteme Web de anvergură?

arhitecturi Calitatea aplicațiilor Web este influențată de arhitectura pe care se bazează

client(i) mandatar (proxy) zid de protecție (firewall) intermediar(i) (middleware) server(e) Web server(e) de aplicații Web cadre de lucru, biblioteci, alte componente server(e) de stocare persistentă e.g., baze de date server(e) de conținut multimedia server(e) de management al conținutului e.g., CMS, wiki aplicații/sisteme tradiționale (legacy) ingrediente tipice

client(i) mandatar (proxy) zid de protecție (firewall) intermediar(i) (middleware) server(e) Web server(e) de aplicații Web cadre de lucru, biblioteci, alte componente server(e) de stocare persistentă e.g., baze de date server(e) de conținut multimedia server(e) de management al conținutului e.g., CMS, wiki aplicații/sisteme tradiționale (legacy) eventual, recurgând la servicii în nori cloud computing partajarea la cerere a resurselor de calcul și a datelor cu alte calculatoare/dispozitive pe baza tehnologiilor Internet (găzduire, infrastructură scalabilă, procesare paralelă, monitorizare, )

arhitecturi web Stratificate (layered) Conduse de evenimente (event-driven) Extensibile (microkernel / plug-in) Folosind microservicii (microservices) În nori (space-based, cloud) conform M. Richards, Software Architecture Patterns, O Reilly, 2015 www.oreilly.com/programming/free/files/software-architecture-patterns.pdf

Stratificate (layered) N-tier architecture arhitecturi abordare webde facto

Stratificate arhitecturi (layered) web demarcarea responsabilităților (separation of concerns) fiecare strat are un rol bine-stabilit, componentele unui strat vizând funcționalitățile acestuia izolare (layers of isolation) modificările operate la un anumit strat nu au impact sau nu afectează componentele din alt strat architecture sinkhole anti-pattern fluxul de cereri traversează fiecare strat, fără a se efectua procesări semnificative în cadrul acestuia

arhitecturi web Conduse de evenimente (event-driven) uzual în contextul aplicațiilor distribuite asincrone scalabilitate topologii principale: mediator sau broker

Conduse de evenimente (event-driven) mediator evenimente procesate în mai mulți pași, necesitând orchestrare arhitecturi web

Conduse de evenimente (event-driven) broker fluxul de arhitecturi mesaje este distribuit web componentelor de procesare a evenimentelor

Extensibile (microkernel / plug-in) sistem arhitecturi principal (core web system) + module independente de tip extensie (plug-in) o astfel de arhitectură poate fi inclusă/utilizată ca parte a altei abordări arhitecturale

Folosind microservicii (microservices) componente arhitecturi separate, web distribuite (separately deployed units) decuplare maximă

arhitecturi web Folosind microservicii (microservices) abordări: bazate pe API-uri (API-based) aplicație recurgând la REST (application REST-based) mesagerie centralizată (centralized messaging)

Folosind microservicii (microservices) arhitecturi API-basedweb aplicația Web expune servicii individuale, punctuale, de sine-stătătoare (self-contained) via un API fine-grained service components

Folosind microservicii (microservices) application arhitecturi REST-based web cererile sunt recepționate tradițional (nu prin API) fiecare funcționalitate este accesată intern via REST coarse-grained service components

Folosind microservicii (microservices) arhitecturi centralized messaging web accesare a componentelor interne via un broker ușor

arhitecturi web În nori (space-based, cloud) consideră și rezolvă problemele vizând scalabilitatea și concurența unui volum impredictibil de mare de cereri

arhitecturi web În nori (space-based, cloud) consideră și rezolvă problemele vizând scalabilitatea și concurența unui volum impredictibil de mare de cereri tuple space datele aplicației sunt păstrate în memorie și replicate de toate unitățile de procesare active fără stocare centralizată distributed shared memory wiki.c2.com/?tuplespace

În nori (space-based, cloud) arhitecturi web middleware virtualizat include componente controlând sincronizarea datelor, procesarea cererilor, accesul la platforma de execuție (deployment),

În nori (space-based, cloud) arhitecturi web unitate de procesare reprezentată de un (micro-)serviciu Web sau o componentă software tradițională la nivel de backend

conform (Eizadirad, 2017) www.linkedin.com/pulse/iaas-paas-saas-explained-compared-arsalan-eizadirad anumite funcționalități pot fi gestionate în propria ogradă (on-premises) sau de un furnizor de servicii disponibile în nori

A. Barron, Pizza As A Service (2014) www.linkedin.com/pulse/20140730172610-9679881-pizza-as-a-service

D. Ng, SaaS, PaaS and IaaS explained in one graphic (2017) m.oursky.com/saas-paas-and-iaas-explained-in-one-graphic-d56c3e6f4606

P. Kerrison, Pizza As A Service 2.0 (2017) www.paulkerrison.co.uk/random/pizza-as-a-service-2-0

aspecte de interes: agilitate exploatare testabilitate performanță scalabilitate dezvoltare arhitecturi web Richards (2015)

Prin ce mijloace poate fi implementată o aplicație Web?

implementare De la aplicații la API-uri și servere de aplicații Brian Mulloy, Web API Design, Apigee, 2016 docs-apis.apigee.io/files/web-design-the-missing-link-ebook-2016-11.pdf

implementare Serviciu Web software utilizat la distanță de alte aplicații/servicii oferind o funcționalitate specifică implementarea sa nu trebuie cunoscută de programatorul ce invocă serviciul a se parcurge cursul anterior

arhitecturi stratificate (N-tier Web applications) bazate pe servicii Web M. Richards, Software Architecture Patterns, O Reilly, 2015 arhitecturi web

implementare Serviciu Web aspecte de interes vizând, în special, SOA: tipul serviciului rolul serviciului în cadrul arhitecturii software

implementare Serviciu Web business service abstract, high-level, coarse-grained services that define the core business operations that are performed at the enterprise level Mark Richards (2016)

implementare Serviciu Web business service independent de implementare specifică numele operațiilor oferite, tipul parametrilor de intrare, tipul rezultatului (e.g., via WSDL Web Service Description Language sau OpenAPI Specification)

implementare Serviciu Web business service opțional, pot fi definite reguli de orchestrare (contextul execuției serviciului) uzual via BPEL Business Process Execution Language

implementare Serviciu Web enterprise service reprezintă un serviciu concret e.g., componentă middleware implementând funcționalitățile definite de serviciul de tip business abordare coarse-grained

implementare Serviciu Web enterprise service în relație one-to-one sau one-to-many cu serviciile abstracte de tip business poate fi partajat la nivelul organizației

implementare Serviciu Web application service fine-grained, application-specific service that is bound to a specific application context

implementare Serviciu Web application service oferă funcționalități specifice, punctuale apelabil via o interfață cu utilizatorul ori via un serviciu de tip enterprise

implementare Serviciu Web infrastructure service pune la dispoziție operații interne (private) invocat de servicii disponibile la nivel de aplicație (application services) sau organizațional (enterprise services)

implementare clasificare a serviciilor la care poate recurge o aplicație Web dezvoltată conform principiilor SOA M. Richards, Microservices vs. SOA, O Reilly, 2016

implementare Serviciu Web messaging middleware folosit la coordonarea apelurilor de servicii denumit și integration hub ori ESB Enterprise Service Bus (magistrală de servicii la nivel organizațional)

implementare Serviciu Web messaging middleware roluri: mediere (mediation) și dirijare (routing)

implementare the capability of the architecture to locate and invoke a service (or services) based on a specific business or user request (Richards, 2016) existența unei componente de descoperire a serviciilor (service registry)

implementare Serviciu Web messaging middleware rol: message enhancement

USA: CUSIP (Committee on Uniform Security Identification Procedures) implementare UK: SEDOL (Stock Exchange Daily Official List) the capability of the architecture to modify, remove, or augment the data portion of a request before it reaches the service (Richards, 2016) exemple: conversii privind formatul, adăugarea unor date derivate/calculate ad-hoc etc.

implementare Serviciu Web messaging middleware rol: transformare a mesajelor/protocoalelor

implementare message transformation e.g., JSON Java, JSON PDO (PHP Data Objects) JavaScript Object Notation Plain Old Java Object

implementare protocol transformation REST cu HTTP RMI-IIOP AMQP RMI-IIOP (Java Remote Method Invocation over Internet Inter-ORB Protocol) www.oracle.com/technetwork/java/rmi-iiop-139743.html AMQP (Advanced Message Queuing Protocol) www.amqp.org

implementare Microserviciu implementează o funcționalitate specifică, oferită la nivel de unic proces self-contained system componentă la nivel de backend dezvoltată cu scopul de a fi înlocuită, nu de a fi reutilizată

small each running in its own process lightweight communication mechanisms (usual, HTTP) built around business capabilities independently deployable minimum of centralized management may be written in different programming languages may use different data storage mechanisms caracteristici ale microserviciilor conform James Lewis & Martin Fowler, Microservices (2014) martinfowler.com/articles/microservices.html

microserviciu modularitate, descentralizare și evoluție permanentă exemple de bună practică: microservices.io

Beneficii ale microserviciilor: izolare autonomie scalabilitate individuală reziliență viteză suport pentru experimentare feedback rapid flexibilitate ușor de înlocuit ecosistem S. Tilkov, A Question of Size Modularization & Microservices, Java Forum Nord 2017: speakerdeck.com/stilkov/a-question-of-size-modularization-and-microservices

micro-servicii Funcționale (functional services) implementează funcționalități specifice (business operations)

micro-servicii Funcționale (functional services) implementează funcționalități specifice (business operations) expuse consumatorului de servicii independente (fără efecte colaterale side effects) nu sunt partajabile uzual

micro-servicii Control infrastructură (infrastructure services) implementează activități non-funcționale: autentificare, autorizare, jurnalizare, monitorizare,

micro-servicii Control infrastructură (infrastructure services) implementează activități non-funcționale: autentificare, autorizare, jurnalizare, monitorizare, nu sunt expuse în exterior private pot fi partajate la nivel de aplicație ori servicii interne

implementare de la cereri efectuate de client la obținerea răspunsului oferit de API via microservicii funcționale bazate pe cele vizând infrastructura M. Richards, Microservices vs. Service-Oriented Architecture, O Reilly, 2016

micro-servicii Aspect de interes: proprietar ownership + coordonare coordination

micro-servicii Aspect de interes: partajarea funcționalităților share-as-much-as possible (SOA clasic) versus share-as-little-as possible (microservicii)

micro-servicii Aspect de interes: comunicarea uzual, asincronă între (micro-)servicii abordări: point-to-point sau publish-subscribe

simplificarea accesului clientului via API implementare Jonas Bonér (2016) intern, (micro-)serviciile pot comunica recurgând la publish-subscribe WebSub (recomandare W3C, 2018): www.w3.org/tr/websub/

micro-servicii Uzual, arhitecturile ce recurg la micro-servicii nu includ componente middleware și nu oferă suport pentru abstractizarea interacțiunii dintre producătorii și consumatorii de servicii (contract decoupling)

client frontend (FE) client FE FE FE service service service service service service DB DB DB DB arhitectură bazată pe servicii Web arhitectură recurgând la microservicii Z. Dehghani, How to break a Monolith into Microservices (2018) martinfowler.com/articles/break-monolith-into-microservices.html cazuri concrete: Amazon, Groupon, Netflix, de studiat prezentările lui Stefan Tilkov: speakerdeck.com/stilkov

micro-servicii: dezvoltare Platforme: Cocaine, Deis, Fabric8, Hook.io, OpenWhisk, Framework-uri: Akka, Baratine, Finagle, Ice, Orbit, Vert.X, Wangle etc. SDK-uri multi-limbaj: Apex, CoAP, grpc, Hprose multe alte instrumente software enumerate la github.com/mfornos/awesome-microservices

implementare API (Application Programming Interface) any well-defined interface that defines the service that one component, module, or application provides to other software elements (de Souza et al., 2004)

implementare API de succes adaptare după (Bloch, 2005) ușor de învățat facil de folosit, chiar și în lipsa documentației previne utilizarea eronată stabil și sigur ușor de menținut suficient de expresiv facil de extins vezi și S. Clarke, Measuring API Usability : drdobbs.com/windows/184405654

arhitectura aplicațiilor Web: abordarea JavaScript via API client Web modern (HTML5) server slab (thin) browser modern recurgere la API JSON, XML, CSV, prezentare procesare abstractizare date aplicație JavaScript (eventual, via app store) www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/

arhitectura aplicațiilor Web: aplicații native (desktop și/sau mobile, smart TV) client nativ modern (smart device) server slab (thin) sistem de operare recurgere la API JSON, XML, CSV, prezentare procesare abstractizare date aplicație nativă C#, Java, Obj-C, Swift, (uzual, via app store) www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/

arhitectura aplicațiilor Web: abordarea hibridă (book reader, chioșc informativ) client Web server de prezentare server slab (thin) pagini HTML API JSON et al. browser prezentare procesare abstractizare date www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/

arhitectura aplicațiilor Web: serverless aplicația depinde semnificativ de componente externe, disponibile în nori (micro-)servicii client modern browser BaaS autentificare produse BaaS acces la API FaaS control procesare funcționalitate 1 procesare comenzi funcționalitate 2 căutare BaaS = (Mobile) Backend As A Service FaaS = Functions As A Service Mike Roberts (2016) martinfowler.com/articles/serverless.html comenzi

implementare API public (disponibil pe baza unei licențe de utilizare) versus API privat (pentru uz intern)

Descrierea abstractă a unui API: OpenAPI Specification (ex-swagger) openapis.org RAML (RESTful API Modeling Language) raml.org API Blueprint apiblueprint.org alte resurse de interes: github.com/kikobeats/awesome-api

caz concret: Wowza Streaming Engine REST API specificația OpenAPI editată cu {API Studio}: apistudio.io

implementare Modele tradiționale de afaceri vizând API-urile John Musser, API business models, API Strategy Conference, 2013

Modele actuale de afaceri privind API-urile John Musser, API business models, API Strategy Conference, 2013

Modele actuale de afaceri privind API-urile CPA cost per action CPC cost per click John Musser, API business models, API Strategy Conference, 2013

Modele actuale de afaceri privind API-urile John Musser, API business models, API Strategy Conference, 2013