Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

SVQDC 2017 Tecnologías para Microservicios

705 visualizaciones

Publicado el

Charla impartida en el Sevilla Developers Conference el 18 de febrero de 2017. Introducción a Microservicios, tecnologías, casos de uso y stacks en diversos lenguajes.

Publicado en: Software
  • Sé el primero en comentar

SVQDC 2017 Tecnologías para Microservicios

  1. 1. Sevilla Developer Conference #SVQDC 2017.02.18
  2. 2. Pedro J. Molina @pmolinam
  3. 3.   
  4. 4.           
  5. 5. “Las organizaciones que diseñan sistemas están limitadas a producir diseños que copian las estructuras de comunicación de esas organizaciones”. Melvin Conway, 1968    
  6. 6.    application/json  text/xml  text/html  text/plain  text/csv GET /actors/42 Accept: text/xml 200 OK Content-Type: text/xml <actor id="42"> <name>Jessica</name> <lastname>Alba</lastname> <filmography url= "/films/42" /> </actor>
  7. 7.       GET /actors/42 Accept: application/json 200 OK Content-Type: application/json { "id": 42 "name": "Jessica" "lastname": "Alba" "filmography": "/films/42" }
  8. 8.   GET /factura/217  POST /factura/  201 Created  <link rel=“lineas” uri=“/factura/217/lineas” />
  9. 9.   
  10. 10.  { “id”: 1234 “name”: “Alice in Wonderland” “_links”: { “self”: { “href”: “/book/10”}, “prev”: { “href”: “/book/9”}, “next”: { “href”: “/book/11”}, “action-delete”: { “verb”: “DELETE”, “href”: “/book/10” } } }
  11. 11.      
  12. 12.                   
  13. 13.          
  14. 14. Dev Local :27001 Local :5000 - Navegador Nube db :27001 app :80 - Navegador Producción cluster :27001 app :80 - Navegador lb: 443
  15. 15.  
  16. 16. Client ExpressJS BaucisJS Mongoose MongoDB HTTP req resource query/command data 401 | 403 AuthN/AuthZ middleware <req.user, res> Microservice
  17. 17.  var express = require('express'); var app = express(); app.get('/hello', function(req, res) { res.status(200).send('hello world'); }); /helloreq res
  18. 18.  public class SampleModule : Nancy.NancyModule { public SampleModule() { Get["/hello"] = _ => “hello world"; } } /helloreq res
  19. 19.     
  20. 20. exports.handler = function(event, context) { switch (event.operation) { case 'ping': context.succeed('pong'); return; case 'getSample': event.customArgs = ["rose:", "/tmp/rose.png"]; im.convert(event.customArgs, function(err, output) { if (err) context.fail(err); else { var resultImgBase64 = new Buffer( fs.readFileSync("/tmp/rose.png")).toString('base64'); try { fs.unlinkSync("/tmp/rose.png");} catch (e) {} context.succeed(resultImgBase64); } }); break; default: return context.fail(new Error('Unrecognized operation "' + event.operation + '"')); }};
  21. 21.         
  22. 22.    connect-mongo  nginx haproxy, etc.    
  23. 23.       
  24. 24.    process.env.VAR1 
  25. 25. git remote add heroku https://git.heroku.com/app1.git   /Procfile  git push heroku master web: node app/server.js
  26. 26. db: image: dockerfile/mongodb ports: - "27017" app: build: . environment: NODE_ENV: production PORT: 80 SERVICE_NAME: app links: - "db:DB" ports: - "80" lb: image: jasonwyatt/nginx-loadbalancer links: - app environment: APP_PATH: "/" ports: - "80:80"
  27. 27. db app lb app app #0 #1 #2 80 80 27017 consul prometheus 8500 8500 autoregistro 8500 autodescubre /metrics /ping
  28. 28.           
  29. 29.       
  30. 30.    
  31. 31. @pmolinam

×