miércoles, 23 de marzo de 2011

En pocas y sencillas palabras: ¿Qué es cloud computing?

Cloud computing sería la tendencia a basar las aplicaciones en servicios alojados de forma externa, en la propia web. Por ejemplo sistemas operativos para la web, el hecho de que nuestros datos o aplicaciones estén disponibles desde cualquier lugar.

Una de las principales caracteristicas del Could Computing es que no se sabe lo que hay detrás (la infrastructura), pasa a ser “una nube” donde las aplicaciones y servicios pueden fácilmente crecer, funcionar rápido y casi nunca fallan.
Este tipo de servicio se paga según alguna métrica de consumo, no por el equipo usado en sí, sino por ejemplo en el consumo de electricidad o por uso de CPU/hora, o por transacción…
Muchas veces las empresas tienen que instalar una granja de servidores para poder prestar servicios en horas pico, por ejemplo a las 16:00 horas, pero ¿Qué pasa con el resto del día? Es decir, la empresa realiza tiene que realizar una inversión millonaria… ¿Sólo para una hora diaria?
Cloud computing regula esto. No hace falta esta inversión inicial (prácticamente imposible de amortizar) en carísimos servidores que se usan sólo por minutos, sino que se paga por lo que se usa, por el procesador y memoria usados, absorbiendo así los picos de consumo, evitando también consumo excesivo de energía en horas no pico.

Entre otras características podemos mencionar:
  • Auto Reparable: En caso de fallo, el último backup de la aplicación pasa a ser automáticamente la copia primaria y se genera uno nuevo.
  • Escalable: Todo el sistema/arquitectura es predecible y eficiente. Si un servidor maneja 1000 transacciones, 2 servidores manejaran 2000 transacciones.
  • Regidos por un Acuerdo de Nivel de Servicio (SLA) que define varias políticas como cuales son los tiempos esperados de rendimiento y en caso de pico, debe crear más instancias.
  • Virtualizado: las aplicaciones son independientes del hardware en el que corran, incluso varias aplicaciones pueden corren en una misma máquina o una aplicación puede usar varias maquinas a la vez.
  • Multiproposito: El sistema está creado de tal forma que permite a diferentes clientes compartir la infraestructura sin preocuparse de ello y sin comprometer su seguridad y privacidad

Varias son las grandes empresas que se han dedicado a ofrecer estos servicios, entre ellas podemos mencionar:

Si bien es mucho más probable perder información desde servidores locales, a través de un intruso que pueda evadir el sistema de seguridad de la red interna, el principal miedo de las empresas es: ¿Qué pasa con nuestra información?
·         ¿Dónde se guarda? ¿Qué nos garantiza que no se pierda o dañe?
Se almacena la información replicada en (según el convenio) al menos dos ubicaciones geográficas en distintas partes del mundo (que no se dan a conocer),  por si se produce alguna catástrofe natural o algún atentado.

·         ¿Quién nos garantiza que no la vea un tercero?
Se incorpora en sus infraestructuras hardware y software que encripta la información de manera unidireccional. Es decir, ni la gente que desarrolla y mantiene el producto cloud computing tiene acceso directo a información sensible.

SAP en Cloud computing:
Actualmente ya existe la posibilidad de utilizar sistemas SAP en “la nube” de forma que cualquier empresa, aunque sea muy pequeña o se encuentre en una localidad remota, pueda consumir su aplicación SAP para gestionar sus finanzas, sin tener que preocuparse de instalaciones, ni de proyectos de implementación, ni de administradores informáticos. Simplemente accede a la red y aprovecha la experiencia de la mejor herramienta de getión del mercado.

Eventos en Table Maintenance Dialog - SAP

Una vez creada la vista de actualización de la tabla, pordemos ver que la misma trabaja con un table control. Para saber el nombre del module pool creado automáticamente con el cual va a trabajar la dynpro que contiene a dicho table control:

1)      Desde la transacción SE11, donde creamos la tabla Z, vamos a utilities à Table Maintenance Generator.

2)      Una vez aquí, hacemos clic sobre el botón “Fn.Gr.Text” y luego en el botón “Main Program”. Esto nos llevará al programa donde se gestiona nuestra vista de actualización que no es más que un programa de tipo module pool con dynpros asociadas.
Ahora bien, si es una dynpro podemos customizarla como queremos? Hay cosas que sí y otras no… podemos deshabilitar campos para la edición, cambiar anchos de columnas, etc… pero con la gestión de los datos con los que va a trabajar el table control, puedo hacer algo?
Sí, para eso se pensaron los eventos.
3)      Los eventos permiten crear programas propios, z,  que sustituyan  las funciones estándares que usa el table control (ya que las mismas no se pueden tocar porque son estándares justamente). Environment à Modification à Events.


4)      Seleccionamos un evento de todos los posibles y le damos un nombre a nuestro form, donde vamos a meter la lógica, en este ejemplo para recuperar datos:
Eventos posibles:
Event
Short Text
1
Before saving the data in the database
2
After saving the data in the database
3
Before deleting the data displayed
4
After deleting the data displayed
5
Creating a new entry
6
After completely performing the function 'Get original'
7
Before correcting the contents of a selected field
8
After correcting the contents of a selected field
9
After getting the original of an entry
10
After creating the header entries for the change task (E071)
11
After changing a key entry for the change task (E071K)
12
After changing the key entries for the change task (E071K)
13
Exit editing (exit main function module)
14
After lock/unlock in the main function module
15
Before retrieving deleted entries
16
After retrieving deleted entries
17
Do not use. Before print: Event 26
18
After checking whether the data has changed
19
After initializing global variables, field symbols, etc.
20
after input in date subscreen (time-dep. tab./views)
21
Fill hidden fields
22
Go to long text maintenance for other languages
23
Before calling address maintenence screen
24
After restricting an entry (time-dep. tab./views)
25
Individual authorization checks
26
Before creating a list
27
After creation or copying a GUID (not a key field)
28
After entering a date restriction for time-dep. views
AA
Instead of the standard data read routine
AB
Instead of the standard database change routine
AC
Instead of the standard 'Get original' routine
AD
Instead of the standard RO field read routine
AE
Instead of standard positioning coding
AF
Instead of reading texts in other languages
AG
Instead of 'Get original' for texts in other languages
AH
Instead of DB change for texts in other languages
ST
GUI menu main program name
AI
Internal use only

5)      Luego, clic sobre el boton:
Creamos un nuevo include, donde van a ir nuestros forms:

                Nota: Acuerdense de ir activando siempre todo!!!
Lo que podemos hacer, para que no quede inconsistente, es copiar la función original y modificar a nuestro gusto el código. Igualmente si se animan, se puede hacer desde cero.
6)      Entonces entramos  a través de la transacción SE38 al programa que vimos en el punto 2. Por lo general el formato del nombre del programa es SAPL[Nombre_de_tabla]. Para este ejemplo SAPLZXX_DEMO.
7)      Una vez dentro del código, buscamos el include L[Nombre_de_tabla]F00 (para este ejemplo LZXX_DEMOF00), que es el que contiene los subprogramas. Dentro de este include veremos otro, LSVIMFTX, igresamos también y aquí vemos todos los programas estándares de manejo de los datos. Buscamos y copiamos el Form TABLE_GET_DATA que es el que nos interesa, y volvemos a nuestro include (LZXX_DEMOF01), y lo pegamos aquí.
Hay que tener cuidado en como trabajamos con este código, ya que al ser standard se maneja mucho con field symbols que no sabremos que traen hasta el momento de la ejecución.
8)      Una vez copiado el código, buscamos dentro de él dónde se realizan los SELECT a la base de datos y modificamos, por ejemplo agregado un where para filtrar los datos obtenidos:

De esta forma cuando se ejecute la vista de actualización de la tabla, los valores aparecerán filtrados, en este caso, se verán solo los registro cuyo campo ZDATE contenga fechas mayores a la fecha actual.