Async: scalabilit e responsiveness senza pari! @ CDaysMatteo Baglini
油
Per ottenere applicazioni scalabili con un consumo minimo di risorse e una UI sempre reattiva,
dobbiamo scrivere software che opera in maniera asincrona.
In questa sessione vedremo perch竪 竪 importante sfruttare questo tipo di programmazione e
quali strumenti mette a disposizione il .NET Framework.
http://www.communitydays.it/events/communitydays-2013/misc04/
Di progetti fatti con Arduino se ne sono visti tanti, e tanti se ne continuano a vedere. Se ne vedono un po' meno con Netduino, il microcontrollore che gira con il .NET Micro Framework. In questa sessione vedremo come il nostro giocattolino pu嘆 diventare un dispositivo di input per il nostro computer. Costruiremo un semplice circuito, e useremo Netduino per raccogliere i dati dall'ambiente esterno e inviarli ad un'applicazione Windows Store.
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
油
In questa sessione vedremo come utilizzare Windows Azure per velocizzare e semplificare la realizzazione di applicazioni ASP.NET. Dallo sviluppo al deploy, passando per lo storage...andremo in dettaglio su varie funzionalit che ci faranno apprezzare ancora pi湛 la piattaforma Windows Azure.
DotNetCampus - Continuous Integration con Sql ServerAlessandro Alpi
油
Continuous Integration con SQL Server. Come automatizzare i processi di build e di test su database SQL Server. Come includere SQL Server nei processi di Application Lifecycle Management (Database Lifecycle Management).
FAST 竪 una raccolta di tecnologie, basate su Web Components e su Web Standards moderni, che ci aiuta ad affrontare in modo efficiente alcune delle sfide pi湛 comuni nella progettazione e nello sviluppo di siti ed applicazioni Web.
FAST ci aiuta a creare interfacce si adattano facilmente a qualunque Design System e che possono essere utilizzate con qualsiasi framework!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!DotNetCampus
油
AppStudio e' un ambiente RAD web based per lo sviluppo di Universal App (Windows Phone 8.1 e Windows 8.1) per la visualizzazioni di sorgenti dati. In questa sessione vedremo come sia facile realizzare da zero un'app che acceda a sorgenti remote e come sia, infine, possibile personalizzare il codice sorgente per poter implementare le proprie personalizzazioni.
In ASP.NET Core 3.0 竪 stato introdotto il supporto a gRPC, una framework altamente performante per fare Remote Procedure Call (RPC). Leggero e molto efficiente, supportato da molti linguaggi, supporto ad una comunicazione bidirezionale, riduzione del consumo di banda...solo questi solo alcuni dei vantaggi che descrivono gRPC, e che durante la sessione cercheremo di capire se siano reali o meno.
Fatto sta che 竪 una tecnologia assolutamente da conoscere e sfruttare nello sviluppo di app moderno, e non solamente in ambito web.
Codice: https://github.com/andreadottor/XE.Dottor.gRPC
Evento: https://www.xedotnet.org/eventi/grpc-and-c-optimising-night/
Dependency injection questa sconosciutaAndrea Dottor
油
L'uscita di ASP.NET Core ha portato a una maggiore diffusione dell'utilizzo della DI (Dependency Injection) ma spesso senza che lo sviluppatore sappia la sua reale utilit o potenzialit.
Dependency Injection, uno dei design pattern della programmazione OOP. Una best-practice dello sviluppo che pu嘆 portare alla semplificazione del codice scritto, facilitare il disacoppiamento, e migliorare la testabilit.
In questa sessione vedremo cos'竪 la DI e come utilizzarla intelligentemente all'interno dei nostri progetti.
際際滷 dell'evento "XE One Day - Good code" tenuto il 15.09.2018.
Il codice 竪 disponibile alla pagina dell'evento https://www.xedotnet.org/eventi/one-day-good-code/
Intelligenza artificiale nel mondo front-end - CodeGen2021Michele Aponte
油
Le applicazioni dell'intelligenza artificiale sono tantissime e ci permettono di andare a risolvere specifici problemi per dare valore alle nostre soluzioni: proviamo a immaginare una nuova User eXperience per le nostre applicazioni business che vada oltre pagine e forms e che sfrutti nuove tipologie di interazioni rese possibili dalle applicazioni della IA.
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#DotNetCampus
油
Visto il successo dello scorso anno, anche questanno il DotNetCampus ospita un Cert Path dedicato a chi vuole avvicinarsi al mondo delle certificazioni di prodotto e di tecnologia Microsoft. Microsoft, cos狸 come altre importanti aziende sul mercato, propone diversi percorsi di certificazione che ognuno pu嘆 intraprendere, anche in autonomia, per guadagnare competenza e ottenere un riconoscimento. Una certificazione 竪 generalmente un titolo che si ottiene dopo uno o pi湛 esami conseguiti con successo in un centro di formazione abilitato. Nel Cert Path vogliamo spiegarvi come affrontare alcuni esami di base per ottenere il titolo di MCP (Microsoft Certified Professional).
Sessione per NetCampus 2015. La diffusione sempre pi湛 ampia di applicazioni sviluppate interamente in HTML5 e JS richiede l'adozione di processi di automazione per la fase di build, testing e rilascio. In questa sessione vedremo quali sono i principali strumenti a nostra disposizione per semplificare queste fasi dello sviluppo.
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
油
Pirma parte del seminario su NoSQL al DiTeDi di Udine del 15/12/2012. Affrontato il caso di studio di un'architettura enterprise, basata su datastore relazionali (PostgreSQL) e non (CouchDB, MongoDB, Redis e OrientDB).
SQL Server Failover Cluster Instances con Azure Managed DisksGianluca Hotz
油
Youtube: https://www.youtube.com/watch?v=dgyXkN3FVb4
Come implementare un cluster di SQL Server AlwaysOn Failover Cluster Instances (FCI) con Azure Managed Disks.
FAST 竪 una raccolta di tecnologie, basate su Web Components e su Web Standards moderni, che ci aiuta ad affrontare in modo efficiente alcune delle sfide pi湛 comuni nella progettazione e nello sviluppo di siti ed applicazioni Web.
FAST ci aiuta a creare interfacce si adattano facilmente a qualunque Design System e che possono essere utilizzate con qualsiasi framework!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!DotNetCampus
油
AppStudio e' un ambiente RAD web based per lo sviluppo di Universal App (Windows Phone 8.1 e Windows 8.1) per la visualizzazioni di sorgenti dati. In questa sessione vedremo come sia facile realizzare da zero un'app che acceda a sorgenti remote e come sia, infine, possibile personalizzare il codice sorgente per poter implementare le proprie personalizzazioni.
In ASP.NET Core 3.0 竪 stato introdotto il supporto a gRPC, una framework altamente performante per fare Remote Procedure Call (RPC). Leggero e molto efficiente, supportato da molti linguaggi, supporto ad una comunicazione bidirezionale, riduzione del consumo di banda...solo questi solo alcuni dei vantaggi che descrivono gRPC, e che durante la sessione cercheremo di capire se siano reali o meno.
Fatto sta che 竪 una tecnologia assolutamente da conoscere e sfruttare nello sviluppo di app moderno, e non solamente in ambito web.
Codice: https://github.com/andreadottor/XE.Dottor.gRPC
Evento: https://www.xedotnet.org/eventi/grpc-and-c-optimising-night/
Dependency injection questa sconosciutaAndrea Dottor
油
L'uscita di ASP.NET Core ha portato a una maggiore diffusione dell'utilizzo della DI (Dependency Injection) ma spesso senza che lo sviluppatore sappia la sua reale utilit o potenzialit.
Dependency Injection, uno dei design pattern della programmazione OOP. Una best-practice dello sviluppo che pu嘆 portare alla semplificazione del codice scritto, facilitare il disacoppiamento, e migliorare la testabilit.
In questa sessione vedremo cos'竪 la DI e come utilizzarla intelligentemente all'interno dei nostri progetti.
際際滷 dell'evento "XE One Day - Good code" tenuto il 15.09.2018.
Il codice 竪 disponibile alla pagina dell'evento https://www.xedotnet.org/eventi/one-day-good-code/
Intelligenza artificiale nel mondo front-end - CodeGen2021Michele Aponte
油
Le applicazioni dell'intelligenza artificiale sono tantissime e ci permettono di andare a risolvere specifici problemi per dare valore alle nostre soluzioni: proviamo a immaginare una nuova User eXperience per le nostre applicazioni business che vada oltre pagine e forms e che sfrutti nuove tipologie di interazioni rese possibili dalle applicazioni della IA.
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#DotNetCampus
油
Visto il successo dello scorso anno, anche questanno il DotNetCampus ospita un Cert Path dedicato a chi vuole avvicinarsi al mondo delle certificazioni di prodotto e di tecnologia Microsoft. Microsoft, cos狸 come altre importanti aziende sul mercato, propone diversi percorsi di certificazione che ognuno pu嘆 intraprendere, anche in autonomia, per guadagnare competenza e ottenere un riconoscimento. Una certificazione 竪 generalmente un titolo che si ottiene dopo uno o pi湛 esami conseguiti con successo in un centro di formazione abilitato. Nel Cert Path vogliamo spiegarvi come affrontare alcuni esami di base per ottenere il titolo di MCP (Microsoft Certified Professional).
Sessione per NetCampus 2015. La diffusione sempre pi湛 ampia di applicazioni sviluppate interamente in HTML5 e JS richiede l'adozione di processi di automazione per la fase di build, testing e rilascio. In questa sessione vedremo quali sono i principali strumenti a nostra disposizione per semplificare queste fasi dello sviluppo.
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
油
Pirma parte del seminario su NoSQL al DiTeDi di Udine del 15/12/2012. Affrontato il caso di studio di un'architettura enterprise, basata su datastore relazionali (PostgreSQL) e non (CouchDB, MongoDB, Redis e OrientDB).
SQL Server Failover Cluster Instances con Azure Managed DisksGianluca Hotz
油
Youtube: https://www.youtube.com/watch?v=dgyXkN3FVb4
Come implementare un cluster di SQL Server AlwaysOn Failover Cluster Instances (FCI) con Azure Managed Disks.
Registrazione e replay
di sessioni Terminal e Citrix
Riproduzione integrale di tutte le attivit a video
Monitoraggio e registrazione degli accessi remoti e alle console:
Remote Desktop, Citrix, VDI, VMware View e altri ancora
Risoluzione rapida dei problemi e garanzia del rispetto delle
normative sulla sicurezza
Tracciamento in tempo reale e report storici
XSecure - Direttiva Del Garante - Amministratori Di SistemaXech
油
soluzione di Log Collection specializzata per rispondere in modo preciso e puntuale alle richieste del Garante della Privacy relativamente al decreto degli amministratori di sistema
SQL Server Failover Cluster Instances con Amazon FSx in AWSGianluca Hotz
油
Implementare un cluster di SQL Server in modalit AlwaysOn Failover Cluster Instances (FCI) con Amazon Web Services (AWS). In particolare, utilizzando il servizio Amazon EC2 per lesecuzione delle istanze SQL Server, e il servizio Amazon FSx for Windows File Server per gestire lo storage condiviso, ed implementare una architettura distribuita multi-AZ.
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSMorlini Gabriele
油
Esperienza di migrazione di un intero sistema informativo da VM a container, utilizzando Docker, Rancher e ZFS. Durante lo speech verr mostrato come abbiamo ristrutturato il nostro sistema informativo aziendale affrontando tematiche di disaster recovery, monitoraggio e backup. Saranno illustrati i vantaggi ottenuti e le sfide che abbiamo dovuto affrontare durante la migrazione di Alfresco, Gitlab, Redmine, SemanticMediaWiki. Migrando a container abbiamo ottenuto backup online 24x7, la possibilit di creare ambienti on-demand per le migrazioni e l'indipendenza dal provider dell'infrastruttura.
Structured Streaming 竪 il modulo di Stream Processing costruito sul motore Spark SQL. In poche parole garantisce l'esecuzione di un messaggio esattamente una volta, 竪 scalabile e fault-tolerant. possibile definire le analisi stream nello stesso modo in cui si definirebbe un calcolo batch sui dati usando i Dataset/DataFrame API in Scala, Java, Python or R utilizzando l'engine SQL di Spark.
Durante la sessione vedremo un'overview delle funzionalit e un esempio di di come sia possibile eseguire l'ingestion dei dati con Event Hub (Kafka enabled) eseguire un'analisi con Spark e salvare i risultati su Cosmos DB.
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS Imola Informatica
油
Esperienza di migrazione di un intero sistema informativo da VM a container, utilizzando Docker, Rancher e ZFS. Durante lo speech verr mostrato come abbiamo ristrutturato il nostro sistema informativo aziendale affrontando tematiche di disaster recovery, monitoraggio e backup. Saranno illustrati i vantaggi ottenuti e le sfide che abbiamo dovuto affrontare durante la migrazione di Alfresco, Gitlab, Redmine, SemanticMediaWiki. Migrando a container abbiamo ottenuto backup online 24x7, la possibilit di creare ambienti on-demand per le migrazioni e l'indipendenza dal provider dell'infrastruttura.
SQL Saturday 871 - Sardegna 2019 - SQL Server DR on AzureMarco Obinu
油
際際滷s presented at SQL Saturday 871, regarding DR technologies for SQL Server using Azure as a secondary datacenter. 際際滷s includes demo videos on how to extend an existing SQL FCI to Azure with Basic Availabity Groups.
Demo scripts available at https://github.com/OmegaMadLab/FCI_and_AG
Full session recording available at https://www.youtube.com/watch?v=s8TmM-0E9sQ
LUniversita di Pisa investe da anni in tecnologie e infrastrutture di rete e puo contare su circa 3000 Km di fibra di proprieta, la connettivita del progetto GARR-X, un backbone a 10G in MPLS/BGP e laccesso per la maggior parte degli utenti a 100Mb/s. Tuttavia alla fine del 2012 lorganizzazione dei servizi e della rete allin- terno del campus era legata ad un modello organizzativo dellAteneo dove ogni struttura godeva di autonomia nel gestire le proprie risorse. Questa situazione ha determinanto negli anni unelevata disomogenita dei servizi e uneccessiva frammentazione delle risorse sia sul piano tecnico che sul piano amministrativo. Nel 2013 in se- guito alla necessita di razionalizzare le risorse dellAteneo e sorta lesigenza di riprogettare la connettivita e i meccanismi di erogazione dei servizi. La presentazione illustra il modello e gli aspetti tecnici del nuovo Servi- zio di Connettivita dAteneo, in cui lautomazione per una rete vasta e complessa come qeulla dellUniversita di Pisa svolge un ruolo determinante.
Il servizio di connettivita dAteneo (SCA) offre connettivita (Wired/Wireless ) e servizi correlati a tutte le strut- ture universitarie ed ai data center dellAteneo. Il nuovo modello organizzativo e un sistema composto da 7 Ac- cess Provider e un Carrier: ogni access provider si occupa di gestire la connettivita e i servizi per il proprio bacino di utenti, il carrier si occupa di erogare la connettivita, fornire le infrastrutture di gestione ed erogazio- ne dei servizi a tutti gli access provider. Luniversita e stata suddivisa in 7 bacini dutenza uno per ogni Access Provider, in ogni area e stato definito un dominio di routing nel quale transita il traffico proveniente dalle strut- ture afferenti. Gli apparati di distribuzione su cui insistono i domini di routing sono magliati tra di loro e con i due router che costituiscono il backbone. Ogni router darea viene affiancato da un nodo delegato ad erogare i servizi secondo una logica multi-tenant.
Linfrastruttura dei servizi di rete (a.k.a. progetto belfagor), consiste di una piattaforma cloud privata i cui nodi sono connessi da un anello in fibra ottica con protezione ERPS, su cui transita esclusivamente traffico di ma- nagement dellinfrastruttura stessa. Ogni componente dellanello e costituita da due swtich in stack e due nodi della piattaforma di cloud computing basata su KVM/openstack. Ogni nodo di computing esegue le istanze vir- tuali nelle quali sono configurati e attivi i servizi in rapporto 1:1, una istanza un servizio. Si puo pensare ai servizi come a delle vere e proprie App, il cui contesto di esecuzione e la piattaforma di cloud, che insieme agli strumenti di automazione effettua il provisioning dei servizi relativi ad unarea specifica.
Le App/Servizi sono idempotenti ovvero non avendo necessita di storage persistente possono essere ricreate infinite volte senza perd
1. DEV012 - AKKA.NET
Multithreading & Distributed
Programming Made Easy
STEFANO DEL FURIA
IIS ROSSELLI STOA
DELFURIA@GMAIL.COM
@STENODELFO
WPC2017 1
2. #DOTNETDAY2018 2
Enthusiastic adopter of C# and .NET since 2001
Computer Science Teacher @ IIS-Rosselli
Founder of EduDotNet.It community
Software Architect @ STOA
Technical writer
Drummer
WPC2017 2
3. Multithreading
Actor Model & AKKA.Net
Actor & Messages
ActorSystem
Resilienza
Persistenza
Delivery
Remoting
Scale Up/Scale Out
Testing
Anti-Pattern
Varie ed eventuali
WPC2017 3
12. Un giorno andr嘆 a
vivere in Teoria
perch辿 in Teoria
va tutto bene
WPC2017 12
13. Ma invece scopri che in Pratica
La programmazione Multithread 竪 difficile
Scrivere codice 竪 MOLTO complicato
Il tempo di progettazione delle applicazioni aumenta
I pattern paralleli sono difficili da implementare
WPC2017 13
14. ed in pi湛 !!!
LOverhead pu嘆 ridurre le prestazioni
Troppe potenziali problematiche
Races, deadlocks, livelocks, lock convoys, cache coherency
overheads, lost event notifications, broken serializability, priority
inversion
WPC2017 14
15. Lassa Gi
WPC2017 15
(Modo di dire perugino: las-sa-g狸)
Invito a rinunciare a svolgere unattivit
a causa della sua impossibilit di realizzazione
Es: 束Ci provo con quella ragazza ? 損
束Lassa Gi 損
22. Actor Model
Evita che i thread collidano sui dati
Utilizza dei task leggeri
Scambio di messaggi in maniera asincrona
WPC2017 22
23. Actor Model
1973 Carl Hewitt definisce lActor model
un modello concettuale
Ha a che fare con la computazione concorrente
Definisce regole generali per come debbano interagire i
componenti di un sistema e pi湛 sistemi tra di loro.
Origine in Erlang
WPC2017 23
24. Actor Model
Semplifica la realizzazione di sistemi:
Scalabili
Concorrenti
Elevate prestazioni
Bassa latenza
WPC2017 24
25. Ambiti applicativi
Applicazioni transazionali (Finanziarie, social media, telecom)
Batch (Divisione del carico di lavoro tra pi湛 Actor)
Microservices (REST, GraphQL, System integration)
Comunicazioni (Chat, notifiche Real time)
Gioco (Multiplayer)
Elaborazione numerica (Business intelligence, data mining)
IoT (Ingestion del flusso di dati)
WPC2017 25
26. AKKA.NET
Unimplementazione in .NET dellActor Model
Alte prestazioni (3.3M messaggi al secondo)
Molto leggera (ogni Actor occupa 400byte)
Akka TestKit
Akka Persistence
Akka Logger
WPC2017 26
Akka DI
Akka Remote
Akka Cluster
27. Cos竪 un Actor
Tutto 竪 un Actor
lazy-by-design
Compiti piccoli e ben definiti
Unit computazionale primitiva
Ogni istanza ha un indirizzo (reference)
Possibilit di esecuzione locale o distribuita
Comunica con altri Actor via messaggi asincroni
WPC2017 27
28. Le 3 cose che pu嘆 fare un Actor
Ricevere ed elaborare un messaggio
Creare altri Actor
Inviare messaggi agli altri Actor (compreso se stesso)
WPC2017 28
29. Come 竪 fatto un Actor
Mailbox in ingresso
Comportamento
Stato
Strategia di Supervisione
Gerarchia di figli
Processa sempre un
messaggio alla volta
WPC2017 29
34. Actor 101
Definizione dei ReceiveActor
Logica di comportamento nel costruttore
Definizione dei UntypedActor
Logica di comportamento nel metodo OnReceive()
Creazione dellActorSystem
Creazione degli Actor
Contenuto di un messaggio
Utilizzo di Props
WPC2017 34
35. Actor 101
Invio di messaggi ad un Actor
Tell()
Forward()
Terminare un Actor
Stop()
(Termina lActor immediatamente)
PoisonPill()
(Termina lActor dopo lelaborazione del messaggio corrente)
WPC2017 35
37. ActorSystem
Centro di controllo del sistema di Actor
Evitare la creazione di pi湛 Actor System
Oggetti pesanti
Gestione pi湛 complessa
Implementare un proprio ActorSystem
Singleton
Configurazione di default
WPC2017 37
39. Configurazione
HOCON (Human-Optimized Config Object Notation)
un formato di configurazione estensibile
Configura tutto (logging, networking, serialization, etc)
Utilizzabile anche mediante
App.config
Web.config
WPC2017 39
40. Logging (Log su file ? sul serio ?? .. nel 2017 ???)
Utilizzare il meccanismo di Akka.Net
Facile da implementare
Evitare log sincrono
Disabilitare la modalit Debug in produzione
WPC2017 40
44. Ricapitolando
Implementare un Actor System gerarchico
Evitare gerarchie FLAT con
Actor tutti creati allo stesso livello
Implementare delle classi base per messaggi,
logging, supervisione, ecc.
WPC2017 44
49. Supervisione
Resume
LActor viene mantenuto e lo stato viene preservato
Restart
LActor viene ricreato e lo stato viene cancellato
Stop
LActor viene terminato
Escalate
LActor inoltra il problema al livello superiore e
successivamente termina se stesso
WPC2017 49
53. BackOff Supervisor
Certe volte il fallimento di un Actor dipende da una
risorsa esterna a cui si deve dare il tempo di ripartire
Riavvio ritardato
Strategia esponenziale (3, 6, 12, 24, )
WPC2017 53
62. Remoting
Il componente pi湛 importante di AKKA.NET
Implementa un ActorSystem tra pi湛 processi
distribuiti in rete
WPC2017 62
63. Remoting
Peer-to-peer
Location transparency
Remote addressing , messaging, deployment
Multiple network transports (in verit solo TCP)
Attenzione !!!
I messaggi vengono serializzati
Attenzione alla dimensione del payload
WPC2017 63
70. Testing
Akka.TestKit.*
NUnit
XUnit
VsTest
TestActorSystem
lActor System utilizzato da TestKit e viene ricreato ogni volta che
si esegue un test
TestActor
il mittente implicito di tutti i messaggi che verrano inviati agli attori
WPC2017 70