Noticias sobre Linux
28 meneos
1039 clics
Aplicaciones web sin servidor, o casi (arquitecturas serverless)

Aplicaciones web sin servidor, o casi (arquitecturas serverless)

¿Cómo es esto posible? Si tenemos una cosa clara en el mundo de Internet es que si queremos tener en pie un servicio, éste debe estar alojado en una máquina que esté conectada a Internet, con energía y que nos asegure en cierta forma que está levantada. Estos servidores pueden ser de diversos tipos según las necesidades de la aplicación: web, base de datos, autentificación, tareas, logs, notificaciones, etc. Así que, ¿qué es esto de aplicaciones sin servidor? ¿o serverless?

| etiquetas: serverless , aplicaciones web , linux
  1. Estas tecnologías están muy bien cuando los ingenieros o programadores las escogen después de analizarlas cuidadosamente, pero échate a temblar si las escoge el ejecutivo de turno porque le han dicho que es algo muy moderno y que le va a ahorra miles y miles de millones a la empresa.
  2. #1 Si es una empresa sin un departamento fuerte de administración de sistemas, subcontratar a terceros debería ser lo normal.

    Igual que hace 20 años se llevaba tener tu propio servidor de correos y hoy en día casi nadie lo hace.
  3. #3 Tampoco hay que cerrarse. Igual que ahora mismo puedes hacer una app sin servidor usando los servicios de. por ejemplo, firebase, puedes hacer una aplicación sin servidor como tal usando firebase y herramientas similares que ejecutan microservicios o microoperaciones. La lógica la llevas casi toda al front y utilizas la página para sesiones, almacenar datos casi en crudo y poco más.

    Y eso escala y tiene sus casos de uso.

    ¿Vale siempre para todo? No, obviamente no, pero tiene sus casos de uso. Así que igual sí, igual en una empresa se me ocurre usarlo :-P
  4. #2 dándole los datos sensibles de tu empresa a Microsoft y a Google, y encima pagando por ello.
  5. #3 Quizás recomiendas Websphere Application Server porque es en lo que estás certificado y llevas diez años anclado a esa tecnología. ¿Puede ser? Serverless puede ser una pasada si haces las cosas bien. NodeJS en la nube puede sonar muy cool y muy moderno, pero además de ello, funciona.

    Todas las tecnologías tienen sus puntos fuertes. Pero cuanto más pasa el tiempo más aborrezco Java.

    PD: No soy ingeniero informático, no tengo certificaciones oficiales, pero he desarrollado y mantenido aplicaciones que usaban 50k personas a la vez (sí, 6 millones al día) con la tecnología arriba descrita. Downtime? {0x1f44c} Y lo mejor de todo, no necesitábamos a nadie "de sistemas", ya que podíamos configurar el escalado nosotros mismos y con un coste inferior al anterior con el datacenter de la empresa. Ah, y no hacían falta CABs ni reuniones ni tickets para hacer pases a producción. ¿Acaso sabes cómo funciona alguna de las empresas que hacen software, que probablemente uses, y sirven millones de peticiones cada hora? Hint: pocas (si acaso alguna) usan Websphere.

    No hay balas de plata, pero comentarios con tantas "verdades absolutas" como el tuyo chirrían un poco ;)
  6. #5 Bueno, hay otras empresas de pago que además te permiten encriptar y eso. Pero claro, ¿quién quiere pagar con dinero pudiendo pagar con privacidad, que les sale gratis?
  7. #9 en el mejor de los casos puedes cifrar lo que tienes almacenado en el servidor, pero el tráfico es en abierto.
  8. #10 O usas un cliente que cifre en local. A ver, formas hay. Lo que sí es verdad es que el correo se envía y se recibe (normalmente) en claro, por lo que siempre vas a tener ahí un problema de seguridad, pero aunque uses tu propio servidor.

    En cualquier caso, no estás obligado a venderte a una gran empresa, que era lo que quería decir en #9
  9. #11 por eso digo. Si encima de ese problema lo centralizas todo en un servidor gestionado por terceros, pasando el 100% del tráfico por ahí, apaga y vámonos.
  10. #8 Pretender mantener la sesión en el servidor de aplicaciones es algo que no tiene mucho sentido si haces algo que va a tener una mínima carga. Es una aproximación que no escala bien, a no ser que andes con cookies de sticky sessions en el balanceador de carga (se dice así?).

    Es cierto que el grave problema de NodeJS es que muchas veces se usa para generar pequeños programas escritos por gente que aprendió a programar con "jQuery"... Pero es una tecnología que ha madurado muy rápido y con la que se pueden hacer cosas espectaculares a una velocidad que antes era impensable.

    "la seguridad de nodejs que es nula", en concreto, ¿el qué? No creo que haya habido muchas más vulnerabilidades en la pila http de node que en la que implemente Jetty o Tomcat.

    Casi cualquier tecnología vale para todo, otra cosa es que sea la más idónea. No creo que haya nada que no se pueda hacer en NodeJS que sí se pueda hacer con la pila que describías antes. Y, además, cada vez soy más de la opinión que hay menos y menos cosas para las que Java sea la herramienta ideal. Implementar lógica de negocio en Java es un suplicio. Cada vez tengo más claro que el problema es la orientación a objetos, es una abstracción errónea.
  11. #7 y #8 Los dos tenéis razón, pero cada uno en un caso de uso diferente.

    #13 Si necesitas guardar datos personales de tus usuarios, ten mucho cuidado con los serverless. Porque si es una infraestructura que va saltando de país según la demanda, podría pasar que los datos personales de tu usuario también salten de país según la demanda, cosa que por ejemplo en Europa está prohibido y te podrían meter una multa de las de tener que cerrar la empresa de golpe.

    No es sólo que tecnológicamente se pueda, es también los problemas de seguridad y privacidad asociados a no tener un servidor quieto con sus datos quietos y sus sesiones quietas.
  12. #14 Es un muy buen punto. En mi ex-empresa implementamos nuestro sistema serverless (básicamente un proxy con AutoScaling a mini-módulos NodeJS almacenados en S3) dentro de AWS para que eso no sucediera y todo se sirviera desde Europa.

    Todo depende, y mal usado te puede salir más caro que una flota de servidores (por ejemplo, para procesar datos a un ritmo estable 24/7). Pero cuando hay cosas que hay que hacer de cuando en cuando, en función de eventos, el poder tener tu lógica de negocio de forma serverless y despreocuparte de servidores, provisioning, configuración, autodescubrimiento, y mil cosas más, es una pasada.

    Y vaya, no hablo de editar tu código en el mini-editor de AWS Lambda, serverless es compatible con control de versiones, unit testing, diferentes entornos... Quizás ese es el problema que mucha gente le ve, que a primera vista es para scripts pequeños que escribes en la misma consola de AWS, cuando se puede automatizar el despliegue de código automáticamente...

    Joder, lo que me cuesta hablar de estas cosas en español ya...
  13. #15 para que eso no sucediera y todo se sirviera desde Europa.

    Incluso dentro de Europa, los datos no pueden volar alegremente. Por eso lo digo. Que salga de Europa es aún peor, pero que viajen dentro de Europa también puede ser un problema.

    Que vamos, yo en el trabajo también uso hosting de terceros sobre los que desplegamos diferentes contenedores Java (sí, Java, sigue teniendo sentido en según qué casos para procesos complejos). Entiendo el concepto de serverless y se lo ofrecemos a nuestros clientes. Pero ni es para todos ni es para usar a lo loco.
  14. #3 A mí esto me suena a "esto es lo que yo uso y es lo mejor porque es lo que yo uso y quien use otra cosa lo hace obviamente MAL".
  15. #6 Pues... no me convences. :-P

    Igual en tu empresa no cuaja y posiblemente en muchas no encaje (bancos, empresas de comunicaciones, que son muy conservadoras y tienen departamentos de sistemas muy conservadores generalmente, etc.) pero hay empresas serias que sí que tienen cosas nuevas e innovadoras como estas. Todo es cuestión de cómo es tu plataforma o servicio. No vale para todos los casos por supuesto pero está su caso de uso que aporta una solución tan válida como otras.

    Aunque eso sí, si es serverless igual te quedas en paro :troll: :troll:

    (No he usado Docker pero tengo compañeros que sí y tiene muchas bondades, y se usa en grandes empresas también (no de andar por casa), pero no es la panacea tiene sus puntos mierder, como todo. Si eres un gurú obsesionado con ponerlo donde no procede pues lo normal es que acabes en la calle)
  16. #5 Cómo cualquier gestoria. Pocas pymes llevan solas toda su contabilidad, nominas, declaraciones trimestrales de IVA etc. etc. y son aspectos seguramente más sensibles.
  17. #3 Yo también soy ingeniero informático con unos 7 años de experiencia, tal y como indica #4 no hay que cerrarse a nuevas ideas, estos sistemas tienen sus posibilidades y pueden ofrecer cosas útiles, a mi personalmente no me gusta depender en exceso de terceros pero hay ocasiones en que ahorran mucho tiempo de desarrollo. Todo depende de lo grande que sea la empresa en cuestión y de la finalidad del proyecto. No es lo mismo una startup que requiere obtener un producto rápido para entrar en el mercado y conseguir financiación, que una gran empresa ya consolidada que dispone de su departamento de sistemas. Incluso en una gran empresa, no es lo mismo una aplicación interna en fase de producción que un proyecto de marketing digital.
  18. #2 Bueno es de que no lo hace casi nadie...
  19. #10 No tiene por qué ser en abierto.

    Yo me conecto en remoto a mis servidores a través de SSH, despliego las aplicaciones y a partir de ahí las comunicaciones entre clientes y servidores se hacen a través de TLS.

    En este caso los equipos son míos, pero aunque fuesen de Amazon la privacidad sería la misma.
  20. #25 eso no es externalizar el servicio de correo, sino el alojamiento de los servidores de correo por lo que deduzco. De todos modos, ¿los correos que envías cómo los cifras? Ya contesto yo: no los puedes cifrar. :-)
  21. #26 El artículo habla de FaaS, como AWS Lambda. Ellos administran el servidor, pero el código es tuyo y puedes encriptar los datos tanto si necesitas persistencia como si no.

    ¿los correos que envías cómo los cifras?

    Yo con GnuPG ;)
  22. #27 yo no hablaba del artículo, sino que respondía a un comentario que decía que hoy en día el servicio de correo (no el servidor) lo externalizan todas las empresas.

    ¿Para qué quieres cifrarlos si no los va a descifrar el receptor (hablamos de empresas)?
  23. Estoy de "inventos" en la web hasta la coronilla. Cada 6 meses sacan un invento que viene a revolucionar una mierda y que promete el oro y el moro a base de aumentar la complejidad lo que no está escrito. Está muy bien experimentar en tu casa, pero como dice #3, los experimentos con gaseosa.
  24. Mantener tus propios sistemas es muy bonito e interesante. A mí me gusta también tocar hierro y el olor de un CPD por las mañanas.

    Pero cuando has de cuidar del dinero me voy de cabeza a soluciones "de la nube". Con el volumen de datos con el que trabajo (más de 10 millones de registros generados por hora, que han de ser procesados cada 5 minutos máximo, para tener informes fiables con decenas de agrupaciones posibles, con tiempos de respuesta de menos de 5 segundos) mantener un cluster de servidores de bases de datos se iría de presupuesto, y con cosas como Amazon Redshift te lo dan todo hecho y no te has de comer la cabeza para exprimirle hasta la última gota a cada servidor.

    Cedes tus datos y te haces dependiente del servicio que te ofrecen otros... pero a cambio te sale por una fracción muy pequeña del coste de hacértelo tú mismo. Hasta que tus ingresos te permitan pagarte tu propio CPD y tus técnicos para mantenerlo operativo, personalmente, me parece una solución adecuada.

    Por otro lado, que he visto críticas a nodejs, y alabanzas a Java (no me gustan ni uno ni el otro)... vamos a ver, si eliminas los bugs que pueda tener la máquina virtual en la que se ejecuta el código, los problemas de seguridad suelen ser debidos a un mal diseño o una mala implementación del código. Si contratas a gente chapucera y la pones al cargo de partes críticas del sistema, luego no te extrañes de que te salga una puta mierda.

    Si en vez de enseñar lenguajes se enseñase a programar, las cosas probablemente saldrían mucho mejor. Y lo digo desde mi experiencia auditando código realizado por supuestos "senior". Cortarles las manos sería incluso amable.
  25. #3 #7 #14 #10 #27

    Me gustan este tipo de envíos donde los comentarios aportan incluso más que la propia noticia. La de cosas que uno aprende por aquí...

    Soy teleco, no informático pero en su día para mi trabajo de fin de carrera decidí desarrollar una aplicación web y una API REST. Intrusismo a tope. Yo iba a ciegas completamente, aunque para no tener ni pajolera idea al final acabé sintiéndome bastante orgulloso de lo que pude llegar a construir, en un par de meses, aprendiendo por mi cuenta y sin ayuda de ningún tipo... Así que seguramente os parezca una mierda xD

    Resumiendo, se trataba de dar soporte a una serie de máquinas que poseían unos sensores con los que analizaban diferentes sustancias. Mediante el uso de la API subían los resultados de los experimentos a la infraestructura nube que monté exprofeso haciendo posible al personal de laboratorio gestionar esa información a través de una aplicación web.

    Lo único que tenía claro al principio es que quería programarlo todo en Python, principalmente porque ser el lenguaje más simpático de todos los que conocía y era una buena oportunidad de aprenderlo aún en mayor profundidad, y de paso comprobar si realmente servía para hacer algo así. Al final me decanté por Django como entrono de desarrollo, algo que me simplificó bastante trabajo porque logré integrar todo perfectamente con la infraestructura de AWS.

    (esquema chapucero de mi querida chapuza)
    i.imgur.com/ovO7kOP.png

    Como servidor web opté por Nginx (Apache ya lo tenía muy visto y se trataba de aprender cosas nuevas) y para comunicarlo con las apps de Django (Python) usé uWSGI. Como sistema operativo Ubuntu. Todo en EC2 usando instancias T2.micro pudiendo escalarlas horizontalmente (y así sacarle el máximo partido a la capa gratuita que ofrecía AWS durante un año). Pero para ello tuve que separar cosas. Los estáticos y el contenido multimedia de la aplicación web los puse en S3 (luego los distribuía con CloudFront) y para el servidor de bases de datos use una instancia en RDS. Como sistema de gestión usé MariaDB.

    i.imgur.com/MxWGcqa.png

    La web app no era nada del otro mundo. Django me gustó bastante y en Python se hace todo muy rápido. En cuanto a la apariencia y sin entrar en mucho detalle, usé Bootstrap para que fuera adaptable (cogí el ejemplo del dashboard y a partir de ahí fui trabajando) y Google Charts para las gráficas. Poco más... La API la hice con Django REST framework. Una gozada, aunque tuve que tocar demasiadas cosas para dejarla a mi gusto.

    En total usé bastantes cosas... :shit:
    i.imgur.com/6Xfx7wa.png


    Adjunto un esquema algo más profesional de la infraestructura final que puse en Amazon Web Services y que daba soporte a todo eso.  media
  26. #32 Pues es un stack cojonudo ;) Salvo por MariaDB y añadiendo una cola de tareas asíncronas como Celery y un message broker como RabbitMQ yo apostaría a que es el más utilizado actualmente para desarrollar web apps en Python.
  27. #3 Tu comentario no hay por donde cogerlo. Échale un vistazo a docker, kubernetes y todo el ecosistema alrededor.
  28. #28 Ah, disculpa, te entendí mal. Hablabas de SaaS (como G Suite), no de FaaS.

    Entonces posiblemente tengas toda la razón. La verdad es que no conozco mucho ese ecosistema pero me puedo imaginar a un montón de ejecutivos dándose palmaditas en la espalda por lo que se han ahorrado en IT y abrazando alegremente el "yes, whatever, pase usted hasta la cocina que ya tengo el ojete dado de sí".

    De hecho, apostaría a que gran parte del interés de Google en el NLP en Tensorflow se debe precisamente al afán por extraer toda esa información con la que miles de empresas les obsequian diariamente.
  29. #35 docker en pañales????

    Google funciona completamente con contaieners desde hace más de 10 años
  30. #35 He trabajado con una aseguradora que esta moviendo parte de su carga a contenedores docker en Azure, y el resto lo mantiene en una nube privada (que tambien van a migrar a docker), pero supongo que no tienen ni idea de lo que estan haciendo, en temas de seguridad, normativa y tal ¯\_(ツ)_/¯
  31. #40 La idea es mover a Azure todo lo posible, y lo que no se pueda se migra también a contenedores, pero en la nube privada.

    Estoy enterado de los temas de compliance, para eso existen las zonas de disponibilidad.

    Pero me parece que mejor me voy a callar, porque según los gurus de meneame no tenemos ni idea :-(
  32. #38 Tu confundes docker con los containers, docker es una reimplementación libre de los contenedores que están funcionando en google desde hace más de una década. Es una tecnología madura desde su nacimiento.

    Google maneja más dinero que un banco, tiene que controlar las cuentas de adsense y adwords que son como 80.000 millones de dolares anuales.

    Y otra cosa, tu puedes levantar, parar y destruir contenedores pero no tienes porque perder nada porque los datos suelen estar en un volumen compartido, una base de datos o lo que sea. Docker está pensado para procesar, los datos no deberían estar dentro del mismo docker en el que trabajas con ellos.

    ¿Cómo monitorizas un conjunto de dockers si tienes varios asociados a un servicio y varios a otro si se crean y destruyen?
    Para eso hay sistemas de gestión de contenedores. Nadie usa docker sin un sistema de gestión de contenedores salvo que sea una práctica de la carrera y solo estés usando 3.

    ¿cuando tengo una aplicación web que requiere un giga de JVM que hago generar un docker de 4 gigas y 4 cpus que crece segúne le de la gana?
    Con docker escalas en horizontal, no en vertical. Escalar en vertical está obsoleto.

    ¿Cómo consigo que el sistema si genera 200 docker que son clones con cada uno 50 conexiones a BBDD no tiren abajo la base de datos por exceso de conexiones?
    ¿Quien te impide tener también distribuida la base de datos?

    Todo lo que comentas está resuelto, yo no soy ningún guru de docker para asesorarte, si te puedo decir que este año lo hemos empezado a usar y a partir del año que viene todo lo vamos a hacer sobre docker.
    Si viajas al pasado también te encontrarías con problemas al migrar a tecnologías nuevas, siempre hay problemas, pero los beneficios a largo plazo supera el coste inicial.
  33. #43 Iba a editar mi comentario anterior pero ya que estoy te contesto.

    Aquí va un ejemplo real de uso de docker en producción, uno de tantos.

    schd.ws/hosted_files/cloudnativeeu2017/e2/Kubernetes-From-Dev-To-Prod-

    Ahí desmonta las gilipolleces de compliance, escalabilidad, y ahora que lo mencionas motorización (porque por supuesto no existen los sistemas de motorización).
  34. #45 se me haría muy largo rebatir cada uno de los puntos, pero alguno denota que has visto docker muy de lejos o no lo has visto nunca.
  35. #36 efectivamente. Cuando el big data mejore y con redes neuronales y/o computación cuántica se cepillen cualquier cifrado van a saber hasta la marca de los calzoncillos de todo el mundo con tres clicks de ratón, a no ser que los del lado del bien inventen otras cosas (eso ha ocurrido siempre y eso espero que siga ocurriendo).
  36. ¿Cómo veis las aplicaciones "12 factor", como las que se despliegan en Heroku?
  37. #50 no vale para todo, pero para lo que vale es la mejor alternativa.

    El error es intentar hacerlo todo con la misma tecnología. Cada tecnología tiene unos determinados casos de uso.
  38. #53 en tu caso opinaras eso, en el mio opino que es la mejor opción y de ahora en adelante lo vamos a usar en todos los proyectos
comentarios cerrados

menéame