Desarrollo Full Stack UAM.net
-
Upload
roberto-luis-bisbe -
Category
Software
-
view
214 -
download
0
Transcript of Desarrollo Full Stack UAM.net
Acercade
• IngenierodeSoftwareenAmazonBusiness• Antiguoalumnodeestanoblecasa• IIPresidentedeUAM.net
• Twitter:@rlbisbe• Blog:rlbisbe.net
2
Motivación
"Conocerdetallessobreelfuncionamientodelasdiferentescapasdeunsistema nospermitetomarmejoresdecisiones queafectanalmismo"
4
Motivación
"Conocerdetallessobreelfuncionamientodelasdiferentescapasdeunsistema nospermitetomarmejoresdecisiones queafectanalmismo"
Yo,alprepararestacharla
5
Motivación
• "SaberoptimizarunaconsultanospermitemostrarsolamentelainformaciónnecesariaenlaUI"
• "Conocercualeslarepresentación delosdatosenlaUI nospermitemodelarmejornuestrodominio"
• "Conocerdiferentestiposdealmacenamientodedatosnospermitediseñarmejornuesta API"
6
Peroestonoesnuevo
• Enlacarreraestudiamos• Electrónica• Código binario• Álgebra deboole• Ensamblador• Sistemasoperativos• Redes
• Son"capas"deunstack
7
Enter theStack
"Incomputing,asolutionstackorsoftwarestackisasetof [...] componentsneededtocreateacompleteplatformsuchthatnoadditionalsoftwareisneededtosupportapplications.
Applicationsaresaidto"runon"or"runontopof"theresultingplatform."
UnbuensamaritanoenWikipedia8
FullStackDeveloper
• "Alguienquepuedemeterlapataentodaslascapasdelcódigo"
• "Alguien familiarizadoconcadacapa,sindominarningunayconuninterés genuinoenlatecnología.”
9
Laindustrialosnecesita
• +4.000.000 deresultadosen Google• +103.000 resultadosdelibros en Amazon• +34.000 resultados enLinkedIn• +100 ofertasdetrabajoenStackOverflow Carreers
10
Stack1
Acción Capa
Entrada(Texto) Interfaz
Códigoquehacecosas Lógica denegocio
Salida(Texto) Interfaz
13
Stack2
Acción Capa
Entrada(HTTP) Interfaz
Lógicadepetición Controlador
Ejecución deCGIenconsola Lógica denegocio
Recuperación deresultados Controlador
Salida(HTTP) Interfaz
14
Stack 3
Acción Capa
Entrada(HTTP) Interfaz
Análisisdeentrada Controlador
Lógica deljuego Lógica denegocio
Comandooconsultaenbasededatos Datos
Conversióndebasededatosenlógicadeaplicación Lógica denegocio
Formato Controlador
Salida(HTTP) Interfaz
15
Stack1Acción Capa
• Línea decomandos• Aplicación escritorio• Dashboard(HTTP)
Interfaz
Análisisdeentrada Controlador
Comunicación conservidor Interfaz
Lógicadeaplicación Lógica denegocio
Comandooconsultaenbasededatos Datos
Conversióndebasededatosenlógicadeaplicación Lógica denegocio
Respuestadeservidor Interfaz
Análisisdesalida Controlador
• Línea decomandos• Aplicación escritorio• Dashboard
Interfaz
17
Stack2
Acción Capa
Entrada:accionesdentrodeunIDE Interfaz
Análisisdeentradaylimpieza Controlador
Comunicación conservidor Interfaz
Sincronización deestado Lógica denegocio
Comunicación conclientes Interfaz
Análisisdesalida Controlador
Salida:accionessobreelIDE Interfaz
18
DesktopStack
• Ejecutable,aplicación deconsola,daemon• APIsdelacapadegráficos• Compiz,Aero,Quartz
• APIsdelSistemaOperativo• Accesoadisco,registro,permisos
• APIsdeHardware• (USB,Sensoresintegrados...)
21
MobileStack
• Aplicación• Presentación• Lógica denegocio• Accesoaservicios
• APIsdelsistemaoperativo• Almacenamientoycaché• Comunicaciónconotrasaplicaciones• Accesoalared
• APIsdehardware• Sensores
22
WebStack
• APIsdelNavegador• Frameworkdeaplicacionesweb• Configuración yAPIsdelservidorweb• Red,firewall,routing...• APIsdelsistemaoperativo(realovirtualizado)
23
WebStack,aaltonivel
• Lógicadeaplicación• quelaapphagaalgo
• Almacenamientopersistente• almacenarcosas
• Búsqueda• recuperarloquehemosalmacenado
• Caché• tenerlainformacióncuantoantesposible
24
WebStack(StackOverflow)
• Lógicadeaplicación• .NETFramework:C#,ASP.netMVC
• Almacenamientopersistente• Relacional:SQLServer
• Búsqueda• ElasticSearch
• Caché• Redis
25
WebStack(LinkedIn)
• Lógicadeaplicación• Java
• Almacenamiento persistente• Norelacional,basadoendocumentos:Espresso
• Búsqueda• Lucene
• Caché• Producción propia:Voldemort
26
Capadepresentación
• Web• HTML/CSS/JS
• Escritorio• Winforms,Swing,Cocoa,GTK
• Móvil• UIKit,AndroidXML,XAML
• Línea decomandos• STDIN,Argumentos,logs
30
Capadeaplicación
• .NET• C#,VB.net,F#• ASP.net,NancyFX
• JVM• Java,Groovy,Scala,Kotlin• Spring,Play,Grails
• Otros• Ruby,Python,JS,PHP• Rails,Django,Meteor,Symfony
31
Capadealmacenamiento(I)
• Binarios• Imágenes,audio,vídeo,texturas
• Logs• Especialmentecríticoensistemasdeproducciónoasíncronos• AnálisisconherramientascomoSplunk
• Ficherosdeconfiguración• FicherosINI,JSON,yaml
32
Capadealmacenamiento(II)
• Relacional• SQLServer,MySQL,PosgreSQL• Estructuraestablecida:Normalización• Relacionesentretablas• Clavesexternas• Consultas,unionesentretablas,Índices,procedimientosalmacenados
• Basadoendocumentos• DynamoDB,DocumentDB,MongoDB• Estructuranofija:Desnormalización• Nohayrelaciones• OperacionesScanyQuery
33
Capadealmacenamiento(III)
• Clave-valor• Redis• Usadocomocaché
• Almacenamientoengrafos• Neo4J• Motoresderecomendación yderección defraudes
34
Tiposdecaché
• CacheHTTP• Varnish,Nginx,Apache
• Cachéenmemoriadeproceso• PartedeJavayde.Net
• Cachédememoriacompartida• Redis
• Cachédebasededatos• Resultadosdeconsultas
36
Capadealmacenamiento(V):Búsqueda
• IntegradaenDBMS:• selectnamelike'%s'
• Índices• Búsquedadevaloresespecíficosenunatabladeaccesorápido
• Aniveldeaplicación:• Algoritmosdebúsqueda "académicos"
• Motoresdebúsqueda• Lucene• Elasticsearch
37
Microservicios
• Componentesespecializadoseindependientes.• Idealmentecadaunoconsupropioalmacenamiento.• Cadacomponentesepuededesplegarindependientemente.• Ejemplos:Amazon,Spotify
41
Comunicaciones(II):Pasodemensajes
• Usadaporelsistemaoperativoparacomunicarseconaplicaciones.• Colas• Topics• Reintentos• DeadletterqueuesoPoisonqueues• SistemasdeColasdemensajes• ZeroMQ,RabbitMQ• AWSSQS,AzureServiceBus,GoogleCloudPubSub
43
Risotto:Serverlesscomputing
• Funcionesespecíficas,especializadas• Enviarunemail• Redimensionarunafoto• Agregarmetadatosaunfichero
• Desplegadas independientemente• Efímeras• Proveedores• AzureFunctions,AWSLambda,GoogleCloudFunctions
46
Resumen
• Motivación• Ejemplos• Stacks"web","mobile”,"desktop”…• Arquitecturas"lasaña","ravioli","risotto”…• Almacenamiento• Comunicaciones• Frameworks
49
Motivación
"Conocerdetalles sobreelfuncionamientodelasdiferentescapasdeunsistema nospermitetomarmejoresdecisionesqueafectanalmismo"
Yo,alprincipiodeestacharla
50