Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Programa en la nube? (https://www.clubdelphi.com/foros/showthread.php?t=86289)

engranaje 17-07-2014 10:13:36

Según lo leido anteriormente lo que voi a decir no tiene nada que ver con la nube. Tengo una antigua aplicación desarrollada en delphi 2.0 y sobre la que aún tengo que ir haciendo modificaciones de vez en cuando y con la que tuve que adaptarme a los nuevos tiempos. Al final está montada en un servidor citrix. El usuario final solo sabe que tiene que descargar el plugin de citrix para su navegador web, escribir la url que le paso, poner su usuario y contraseña y utilizar la aplicación de escritorio que desee de las que tiene publicadas.

Es cierto que básicamente no es distinto de conectarse mediante la red local al servidor de aplicaciones de la oficina. Pero la sensación que da al usuario final sin demasiados conocimientos se parece bastante. Aún con los quebraderos de cabeza lógicos el proceso no supuso el esfuerzo que habría supuesto realizar la aplicación de nuevo.

Casimiro Notevi 17-07-2014 10:16:27

Primero de todo, como siempre, es coger papel y lápiz y escribir lo que se quiere conseguir, las distintas opciones que podrían ser factibles y luego ver los pros y contras de cada una para escoger a la más idónea para tus necesidades.

(1) Lo más simple es poder usar los programas actuales que tienes (delphi) en windows corriendo sobre un servidor linux. De esa manera puedes aprovechar para tener varios windows al mismo tiempo en un mismo servidor, ahorrando costes de hardware. Siendo fácil añadir más servidores con más clones windows con los programas delphi.
Los clientes, he aquí el problema, tendrían que ejecutar algo similar a "terminal server", algún otro programa VNC o incluso hace años existía un "terminal server" libre y gratis que funcionaba muy bien, era más ágil que el "original" y no tenía problema con las impresoras. El problema es que le perdí la pista hará unos ocho o diez años, pero supongo que existirá algo similar o mejor.
Esta opción obliga a los usuarios usar pcs, portátiles o tabletas con windows.

(2) Si se quiere que el usuario pueda usar "lo que quiera", ya sea windows, android o iOS, entonces no vale, principalmente por la impresora, aunque hay posibilidades distintas, como por ejemplo: que los listados no se envien directamente a una impresora, sino a un documento PDF, ese documento PDF es enviado al usuario e independientemente del sistema que tenga (windows, android, etc.) se imprime porque es un pdf. (O sea, no enviar documento a impresora, sino a PDF y enviar el PDF al usuario. El usuario lo imprime como quiera y con lo que quiera y pueda)

Las otras opciones pasan por hacer nuevos programas, así que de momento creo que no es lo que estás buscando.

Creo que la opción (2) puede ser bastante factible, habría que investigar un poco, pero así sin darle muchas vueltas a la cabeza, puede ser factible.

Casimiro Notevi 17-07-2014 10:31:05

je, je... 3 respuestas en menos de 10 minutos.

La opción citrix tiene varios inconvenientes, pero el principal es el precio, creo que newtron, aunque no lo ha especificado (realmente no ha especificado nada :p ), está pensando en el menor gasto posible añadido para él y sus clientes, sería un sobrecoste más, que tal y como están las cosas... :(
La opción terminal server tiene el mismo inconveniente, otro gasto añadido, aunque también tiene la obligatoriedad de usar windows, cosa que es peor. Al menos con citrix tiene un abanico mayor de posibilidades.

Yo me decantaría (previo análisis, investigación, estudio, etc. etc. etc.) por crear una máquina virtualbox, por ejemplo, básica de winXP, eliminando todo lo innecesario, dejándola en la mínima expresión posible, y la tendría como "plantilla" para todas las nuevas que se vayan necesitando.
Esas máquinas virtuales winXP correrían sobre un servidor linux con una buena cantidad de memoria ram (para ejecutar la mayor cantidad posible de esos clones winXP). Por cpu no hay que preocuparse hoy en día.
Habría que calcular qué memoria usa la gestión actual de newtron, pero casi seguro que con 1 giga va más que sobrado, así que con un equipo ubuntu server, debian o similar con, por ejemplo 8 gigas de ram y una cpu de 6 u 8 cores, puedes ejecutar tranquilamente y totalmente sobrado, al menos 6 máquinas virtuales (dejando 2 gigas para linux), de sobra para la mayoría de pequeñas empresas. Con 16 gigas de ram ya abarcaría 14 máquinas virtuales. Y si hace falta se añade otro servidor y... hasta el infinito :p

Evidentemente, todos estos son números a lo bruto, habría que probar, investigar, afinar, etc.

Al González 17-07-2014 18:07:00

Cita:

Empezado por Casimiro Notevi (Mensaje 479087)
je, je... 3 respuestas en menos de 10 minutos.

Como en los viejos tiempos, señor Veintidós mil (o Casi). ;) v:-)v

mamcx 17-07-2014 19:29:11

Cita:

Empezado por newtron (Mensaje 479078)
Pues....¿sabéis?... cada vez estoy más liado con el asunto.

Mi inquietud es saber si a una empresa como la mía le sería factible abordar de alguna manera el desarrollo de una aplicación de ese tipo o está fuera de mi alcance.

Lo que se perdio entre todo lo que escribí... es que ahora es *trivial* usar el cloud a un costo infimo (o gratuito!) no solo para empresas minúsculas sino para individuos.

Y esto aplica tanto a la hora de desarrollar como a la hora de usar.

Como puse en http://clubdelphi.com/foros/showthread.php?t=86291 la cantidad de recursos disponibles ahora son tantos, que el problema es saber que escoger!

----

Retomando la pregunta " Que hay que hacer para, usando Delphi (y lo que sea) usar la nube?". A nivel tecnico? Casi siempre es cuestion de inscribirse/contratar algun servicio de los mencionados y hacer llamadas a API mediante HTTP y/o usar algun SDK.

Para cosas pequeñas los costos son 0 o muy bajos. Por ejemplo, mis sitios web los monto en http://heroku.com/ y no me cuesta nada.

Tambien puedes obtener 1 año gratis con Amazon y con Azure, junto a http://www.microsoft.com/bizspark/default.aspx que te dan 3 años de licencias de MS, Azure y todo al final pagas como US 200 o algo asi.

Basicamente, todo se reduce a pensar que quieres o necesitas, y mirar si ya hay un servicio que lo resuelve.

Te pongo un ejemplo. Digamos que quieres mandar mensajes de texto a cualquier celular, pero no quieres (como toda persona sana) negociar con cada operador de cada pais.

Entonces usas https://www.twilio.com/. Lees los docs en https://www.twilio.com/docs/api. miras si hay un SDK en tu lenguaje y sino es pan comido, usas llamadas REST y resuelves el problema en menos de 2 dias (lo que generalmente toma hacer un cliente REST).

Asi que si tienes algun tema *concreto* en mente, es solo que preguntes, seguro que tengo por ahi un link a algo que te ayude ;)

En ultimas? Esto no es tan dificil... de hecho es *trivial* para cosas pequeñas. Solo se puede poner interesante si tu app empieza a escalar de alguna manera.

Ñuño Martínez 24-07-2014 17:56:20

Cuando oí hablar por primera vez de la "Computación en la Nube" pensé:
Cita:

Empezado por Ñuño Martínez, hace unos años
Genial: han cogido un concepto más viejo que la pana, le han puesto un nombre nuevo y a venderlo como si fuera lo último de lo último. Otra vez.

Y lo sigo manteniendo. Todavía no veo qué diferencia hay entre la "Computación en la Nube" que nos venden ahora y la "Computación Distribuida" de toda la vida.

nlsgarcia 24-07-2014 19:44:18

Ñuño Martínez,

Cita:

Empezado por Ñuño Martínez
...Todavía no veo qué diferencia hay entre la "Computación en la Nube" que nos venden ahora y la "Computación Distribuida" de toda la vida...

:rolleyes:

Cita:

Empezado por wikipedia
Cloud computing is the delivery of computing as a service rather than a product, whereby shared resources, software, and information are provided to computers and other devices as a utility (like the electricity grid) over a network (typically the Internet)

Tomado de: Cloud computing

Cita:

Empezado por wikipedia
...A distributed system is a software system in which components located on networked computers communicate and coordinate their actions by passing messages. The components interact with each other in order to achieve a common goal...Distributed computing also refers to the use of distributed systems to solve computational problems. In distributed computing, a problem is divided into many tasks, each of which is solved by one or more computers, which communicate with each other by message passing.

Tomado de: Distributed computing

Te comento:

1- En Cloud Computing todos los recursos disponibles son ofrecidos como servicios (IaaS, PaaS, SaaS), los cuales pueden hacer o no uso de computación distribuida para su implementación.

2- En Computación Distribuida el objetivo es la unificación coordinada de recursos de computación distribuidos en una red para la ejecución y resolución de problemas de forma conjunta, no incluye en su concepción la idea de servicios ni virtualización.

3- Cloud Computing es una clase de Grid Computing (Una forma de computación distribuida) y su principal tecnología es la virtualización.

En Resumen: A pesar de ser conceptos que tienen puntos en común en lo que a distribución de recursos se refiere, el concepto de Cloud Computing es más amplio e incluye más tecnologías, la idea principal que subyace en el modelo de Cloud Computing es : Servicios a un bajo costo de forma masiva, escalable y resiliente.

Espero sea útil :)

Nelson.

Casimiro Notevi 24-07-2014 21:43:47

¿Resiliente? ¿eso qué es? :confused:

nlsgarcia 24-07-2014 22:16:53

Casimiro,

Cita:

Empezado por Casimiro
...¿Resiliente?...

:rolleyes:

Revisa esta información:
Cita:

Empezado por BusinessDictionary
Ability of an equipment, machine, or system to absorb the impact of the failure of one or more components or a significant disturbance in its environment, and to still continue to provide an acceptable level of service.

Tomado de : resilience

En términos generales, es un concepto tomado de la ingeniería y aplicado a diversas áreas del conocimiento para denotar su grado de flexibilidad, adaptación y resistencia a problemas externos.

Espero sea útil :)

Nelson.

Casimiro Notevi 24-07-2014 22:36:29

¡Ah!, elástico o flexible.

newtron 26-07-2014 10:44:41

Hola a todos de nuevo.

Antes de nada pediros disculpas por este paréntesis de una semanita. He estado dedicado a cuatro cosas fundamentales (se me ocurre alguna más pero este es un foro público y puede haber menores :D): Playa, piscina, comer y beber, y por supuesto sin ningún dispositivo electrónico a mano.

Creo que el amigo Neftali ha resumido perfectamente mi problema, que parece que es un problema común.

La idea es que el cliente pulse en un iconito o llame a una página web, que se le pregunte un nombre de usuario y una clave y que acceda a su programa.

Como se apuntaba por ahí una posible solución sería montar el programa en un servidor y acceder mediante terminal server pero no lo veo una solución elegante para uso genérico por el problema de las impresoras, la idea es que el cliente esté donde esté y tenga la impresora que tenga pueda usar el programa sin mayores complicaciones. Yo tengo bastantes instalaciones de terminal server y van muy bien pero son clientes que están controlados por nosotros en hardware y software y procuramos dejarlo todo instalado y configurado.

Se habla de Citrix pero eso no sé ni lo que es, ¿alguien me lo explica como si yo fuera un niño?. :D

Saludos

mamcx 26-07-2014 15:29:17

Si no necesitas la capacidad de distribución ultra-masiva del html/browser, no le veo un problema a hacer exactamente para escritorio tal cual como se hace en mobiles: Una app nativa que "habla" mediante protocolos de internet a un servidor (de BD y/o de app).

Si se quisiera hacer como una pagina web, se puede generar PDF. O se puede hacer un mini-cliente que se instala en la maquina (como un plugin) que tenga la capacidad embeida de responder a llamadas http/websocket y que desde js se invoke para el control de impresoras y demas.

nlsgarcia 26-07-2014 17:11:10

newtron,

Cita:

...Se habla de Citrix pero eso no sé ni lo que es, ¿alguien me lo explica como si yo fuera un niño?...
:rolleyes:

Básicamente es una tecnología de virtualización de servidores, estaciones de trabajo y aplicaciones para su distribución en forma de servicios.

Revisa esta información:
Espero sea útil :)

Nelson.

newtron 27-07-2014 09:00:18

Cita:

Empezado por nlsgarcia (Mensaje 479404)
newtron,

:rolleyes:

Básicamente es una tecnología de virtualización de servidores, estaciones de trabajo y aplicaciones para su distribución en forma de servicios.

Revisa esta información:
Espero sea útil :)

Nelson.

Gracias, le echo un vistazo.

Cita:

Empezado por mamcx (Mensaje 479399)
Si no necesitas la capacidad de distribución ultra-masiva del html/browser, no le veo un problema a hacer exactamente para escritorio tal cual como se hace en mobiles: Una app nativa que "habla" mediante protocolos de internet a un servidor (de BD y/o de app).

Si se quisiera hacer como una pagina web, se puede generar PDF. O se puede hacer un mini-cliente que se instala en la maquina (como un plugin) que tenga la capacidad embeida de responder a llamadas http/websocket y que desde js se invoke para el control de impresoras y demas.

Pero ahora yo pregunto... ¿si hay que instalar apps o clientes no se sale del concepto que estamos hablando?

mamcx 27-07-2014 15:52:28

Ni la nube ni internet dicta que los clientes tienen que ser obligadamente html. El exito de las apps en móviles muestra eso. Y si el cuento es automatizar las actualizaciones de las apps, pues las mismas muestran como se hace (y hacer que una app de escritorio se mantenga al dia es trivial estos dias).

newtron 28-07-2014 09:41:50

Bueno, entonces una posible solución sería descargar la aplicación en modo local y mantener la base de datos en la nube, ¿no?.

Tengo otra pregunta, ¿las aplicaciones que se usan en cualquier dispositivo o sistema operativo qué son, html o hay alguna otra forma?

Ñuño Martínez 28-07-2014 12:53:49

Muchas gracias por la aclaración, Nelson. Por lo que veo, no estaba completamente en lo correcto al decir que son lo mismo, pero muy desacertado no andaba ya que, si no entendí mal, cloud computing es un subconjunto dentro de la computación distribuida.

¿Ahora sí?

nlsgarcia 28-07-2014 16:55:19

Ñuño Martínez,

Cita:

Empezado por Ñuño Martínez
...cloud computing es un subconjunto dentro de la computación distribuida...

:rolleyes:

Cloud Computing es un Super Conjunto que incluye a la Computación Distribuida y otras tecnologías , la Computación Distribuida no incluye en su concepción la idea de servicios ni virtualización que son la base del concepto de Cloud Computing.

Espero sea útil :)

Nelson.

mamcx 28-07-2014 17:25:11

Cita:

Empezado por newtron (Mensaje 479424)
Tengo otra pregunta, ¿las aplicaciones que se usan en cualquier dispositivo o sistema operativo qué son, html o hay alguna otra forma?

Cualquier cosa que se le pueda instalar ;). En iOS/Android cuento a Obj-C, Java (los dos nativos que ademas incluye C/C++), C#/Mono, Lua, Python, Delphi, HTML/JS, y seguro hay otros por ahi.

newtron 28-07-2014 18:25:07

Cita:

Empezado por mamcx (Mensaje 479444)
Cualquier cosa que se le pueda instalar ;). En iOS/Android cuento a Obj-C, Java (los dos nativos que ademas incluye C/C++), C#/Mono, Lua, Python, Delphi, HTML/JS, y seguro hay otros por ahi.

No no... creo que no me he explicado bien... me refiero a aplicaciones que se puedan usar sin descargar ni instalar nada.


La franja horaria es GMT +2. Ahora son las 13:47:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi