cómo construir una plataforma de libro electrónico y no morir en el intento

87
CÓMO CONSTRUIR UNA PLATAFORMA DE LIBRO ELECTRÓNICO Y NO MORIR EN EL INTENTO

Upload: alberto-vilches

Post on 21-Jun-2015

2.124 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Cómo construir una plataforma de libro electrónico y no morir en el intento

CÓMO  CONSTRUIR  UNA  PLATAFORMA  DE  LIBRO  

ELECTRÓNICO  Y  

NO  MORIR  EN  EL  INTENTO  

Page 2: Cómo construir una plataforma de libro electrónico y no morir en el intento

Los speakers

Alberto  Vilches    •  Programando  desde  1998  

•  5  años  de  experiencia  con  Grails  

•  Soy  el  que  organiza  todo  esto  

•  TwiIer:  @albertovilches  

Roberto  Mar=n    •  Programador  desde  2008  

•  4  años  de  experiencia  con  Grails  

•  Miembro  de  plataforma  Java  en  BQ  

•  TwiIer:  @roberto_mf  

Page 3: Cómo construir una plataforma de libro electrónico y no morir en el intento

De que vamos a hablar

10%  Negocio  

 20%  Experiencia    30%  Arquitectura    40%  Grails  (con  algo  de  código!)    

Page 4: Cómo construir una plataforma de libro electrónico y no morir en el intento

Donde trabajamos

Page 5: Cómo construir una plataforma de libro electrónico y no morir en el intento

Donde trabajamos

Mundoreader  –  BQ  Readers    •  Empresa  100%  española  (sedes  en  todo  el  mundo)  

•  2º  fabricante  y  vendedor  de  tablets  en  España  (después  de  Apple)  

•  Primera  plataforma  completa  de  libro  electrónico.  

•  Y  otros  negocios:  memorias  USB,  accesorios,  etc.  

Page 6: Cómo construir una plataforma de libro electrónico y no morir en el intento

Negocio

Negocio  principal:  venta  de  disposiNvos  (tablets,  ereaders)  

Siguiente  objebvo:  venta  de  contenidos  

 

Beneficios  €  

Inversión  

Page 7: Cómo construir una plataforma de libro electrónico y no morir en el intento

Negocio

Venta  de  contenido  

•  Diseño,  creación  y  distribución  de  E-­‐readers  

•  Acuerdos  con  editoriales  

•  Creación  de  plataforma  de  venta  de  libros  

Page 8: Cómo construir una plataforma de libro electrónico y no morir en el intento

Modelo de negocio

1.  BQReaders  NO  es  una  benda  de  libros  

2.  Los  libros  los  venden  las  Nendas  grandes  librerías  y  superficies  /  pequeños  comercios  no  podemos  decir  quienes…    

3.  Lo  hacen  a  través  de  nuestra  plataforma  

4.  Y  nos  llevamos  comisión  por  libro  vendido  -­‐>                    !!!  

5.  ¿Tienes  una  benda?  ¿Eres  una  editorial?  Habla  con  nosotros!  

 

 

Page 9: Cómo construir una plataforma de libro electrónico y no morir en el intento

Modelo de negocio

1.  Las  bendas  usan  nuestra  plataforma  para  crear  una  web  y  vender  libros  

 aunque  a  veces  se  la  hacemos  también  nosotros…                !  

 2.  Las  bendas  venden  E-­‐readers  a  sus  usuarios  

3.  Lo  hacen  con  su  marca,  pero  nos  los  compran  a  nosotros…              !  

4.   Vendemos  la  solución  completa  

 

 

Page 10: Cómo construir una plataforma de libro electrónico y no morir en el intento

Modelo de negocio

Y  más  cosas    

1.  Suscripción  Esblo  Spobfy:  cuota  mensual  y  barra  libre    

2.  Bibliotecas  Préstamos,  adquisición  de  licencias  

3.  Aplicaciones  en  IOS  y  Android  

 

 

Page 11: Cómo construir una plataforma de libro electrónico y no morir en el intento

Cómo funciona

   

 

 

 Tienda  WEB  

App  nabva  IOS  

App  nabva  Android  

Compra  y  lee  libros  

Consumen  Servicios  (muchos!)  

Plataforma  contenidos  

E-­‐Reader  

Page 12: Cómo construir una plataforma de libro electrónico y no morir en el intento

Plataforma de contenidos

Tecnologías  usadas  

•  Grails  3  wars:  services,  content,  backoffice    

•  MySql  2  esquemas  en  2  máquinas  disbntas  

1.  SERVICES  (usuarios,  compras,  disposibvos)  2.  CONTENT  (libros,  editoriales,  categorías,  catálogos)  

Page 13: Cómo construir una plataforma de libro electrónico y no morir en el intento

Plataforma de contenidos

Tecnologías  usadas  

•  ElasbcSearch  •  Búsqueda  de  libros,  facetas  •  Evita  acceder  a  la  base  de  datos    •  Si  se  cae,  usamos  la  base  de  datos  (pero  no  tenemos  facetas)  

•  Mahout  •  Recomendaciones  de  libros  en  función  de  las  compras  y  visitas  

•  MongoDB  •  Auditoría  y  tablas  maestras  (paises-­‐ips,  reports,  )  

Page 14: Cómo construir una plataforma de libro electrónico y no morir en el intento

Plataforma de contenidos

Componentes  

•  API  para  bendas:  JSON  100%  (rest  90%)    Listados  de  libros,  búsquedas,  categorías,  compras  

•  API  para  Ereader,  IOS  y  Android    Sincronizar  librería,  descargar  libro,  anotaciones,  bookmarks  

•  Carga  de  contenidos    Proceso  nocturno  desde  editoriales  (tp,  epubs,  pdf,  onix,  carátulas)  

•  Backoffice  Administración  de  libros,  categorías,  catálogos,  reports,  liquidaciones  

Page 15: Cómo construir una plataforma de libro electrónico y no morir en el intento

 Problemas  y…  

 “nuestras”  soluciones  

 

Page 16: Cómo construir una plataforma de libro electrónico y no morir en el intento

Plataforma de contenidos

API  En  caso  de  error:    •  Debe  seguir  devolviendo  JSON  

•  Si  es  un  error  incontrolado,  debe  nobficar  del  error  •  Log,  auditoria,  email  

       

Page 17: Cómo construir una plataforma de libro electrónico y no morir en el intento

Plataforma de contenidos

API    

Page 18: Cómo construir una plataforma de libro electrónico y no morir en el intento

Plataforma de contenidos

API    

Page 19: Cómo construir una plataforma de libro electrónico y no morir en el intento

Plataforma de contenidos

Seguridad  API    

“No  queremos  usar  login/token/sesión  por  cliente”    

 

Page 20: Cómo construir una plataforma de libro electrónico y no morir en el intento

Plataforma de contenidos

Seguridad  API    

“No  queremos  usar  login/token/sesión  por  cliente”    

1.  Las  password  son  siempre  débiles  2.  El  cliente  no  maneja  sesión  

3.  El  servidor  tampoco  (stateless,  más  fácil  de  replicar)  

Solución:  pebciones  firmadas    

Page 21: Cómo construir una plataforma de libro electrónico y no morir en el intento

Plataforma de contenidos

Seguridad  API  Firmar  una  pebción    

•  Se  concatena  la  url  y  todos  sus  parámetros  (get  o  post,  todos)  

•  Se  obbene  su  hash  •  Se  encripta  la  hash  con  la  clave  privada  =  firma  •  Se  envía  la  firma  en  una  cabecera  

hex(  crypt(  sha1(  url+params,  key  )  )  )  

•  El  servidor  hace  el  paso  inverso.  Si  los  parámetros  coinciden,  ejecuta  la  operación.  

 

Page 22: Cómo construir una plataforma de libro electrónico y no morir en el intento

Plataforma de contenidos

Seguridad  API    

Al  estar  basada  en  una  hash,  la  firma  cambiará  cada  vez  que  cambie  la  url  y/o  los  parámetros.  

 Interceptar  la  firma  no  permite  manipular  la  

pebción    

¡Pero  una  pebción  interceptada  se  puede  replicar  N  veces!  

 

Page 23: Cómo construir una plataforma de libro electrónico y no morir en el intento

Plataforma de contenidos

Seguridad  API  Evitar  que  se  repliquen  las  pebciones    Solución:  nonce  

•  Cada  pebción  debe  enviar  un  parámetro  obligatorio  llamado  “nonce”.  

•  Su  valor  debe  ser  un  número  no  usado  antes  (milesegundos?)  •  El  servidor  conserva  cada  nonce  enviado  y  verifica  que  no  se  

repita.  •  Si  se  envía  el  mismo  “nonce”  se  rechaza  la  pebción.  

Page 24: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Trabajar  con  decimales    

Page 25: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Trabajar  con  decimales  •  Los  números  decimales  pierden  precisión  cuando  se  

transforman  de  binario  a  decimal  

•  No  importa  cuando  trabajamos  con  muchos  decimales  (de  hecho,  es  necesario):  distancias,  pesos  

•  Pero  SI  importa  cuando  trabajamos  con  precios!  

Page 26: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Trabajar  con  decimales:  solución    

1.  Clases  de  dominio:  usar  BigDecimal!

Page 27: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Trabajar  con  decimales:  solución    

1.  Clases  de  dominio:  usar  BigDecimal!2.  Base  de  datos.  Precisión  de  n+1  para  

productos  3  decimales  para  €  -­‐>  DECIMAL(16,  3)  

Page 28: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Trabajar  con  decimales:  solución    

1.  Clases  de  dominio:  usar  BigDecimal!2.  Base  de  datos.  Precisión  de  n+1  para  

productos  3  decimales  para  €  -­‐>  DECIMAL(16,  3)  

3.  Base  de  datos.  Precisión  de  n  para  compras  2  decimales  para  €  -­‐>  DECIMAL(15,  2)  

Page 29: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Trabajar  con  decimales:  solución    

1.  Clases  de  dominio:  usar  BigDecimal!2.  Base  de  datos.  Precisión  de  n+1  para  

productos  3  decimales  para  €  -­‐>  DECIMAL(16,  3)  

3.  Base  de  datos.  Precisión  de  n  para  compras  2  decimales  para  €  -­‐>  DECIMAL(15,  2)  

4.  Evitar  recalcular    Al  hacer  una  compra,  guardar  una  “foto”  con  todos  los  valores  ya  

calculados.  

Page 30: Cómo construir una plataforma de libro electrónico y no morir en el intento

Concurrencia

Típico  problema  de  concurrencia    

Page 31: Cómo construir una plataforma de libro electrónico y no morir en el intento

Concurrencia

Típico  problema  de  concurrencia    1.  Un  usuario  se  conecta  desde  diferentes  

clientes  a  la  vez  (ipad  y  web),…  

2.  …  ejecuta  dos  operaciones  que  escriben  en  el  mismo  registro  de  la  base  de  datos…              

Page 32: Cómo construir una plataforma de libro electrónico y no morir en el intento

Concurrencia

Típico  problema  de  concurrencia    

Page 33: Cómo construir una plataforma de libro electrónico y no morir en el intento

Concurrencia

A)  Cuando  NO  ES  un  registro  importante:      

         Fecha  de  úlbma  conexión/sincronización/actualización            Actualizar  una  anotación  de  un  libro            Datos  personales  del  usuario,…  

   

 

 

Page 34: Cómo construir una plataforma de libro electrónico y no morir en el intento

Concurrencia

A)  Cuando  NO  ES  un  registro  importante:    1.  Desacbvar  opbmisbc  locking  2.  Acbvar  dynamicUpdate  (opcional)  

 

 

 

Page 35: Cómo construir una plataforma de libro electrónico y no morir en el intento

Concurrencia

A)  Cuando  NO  ES  un  registro  importante:    1.  Desacbvar  opbmisbc  locking  2.  Acbvar  dynamicUpdate  (opcional)  

 

 

  UPDATE … WHERE ID = 2678 AND VERSION = 10!

UPDATE table SET campo_que_ha_cambiado WHERE ID = 2678!

Page 36: Cómo construir una plataforma de libro electrónico y no morir en el intento

Concurrencia

DynamicUpdate  PITFALL!!  LLLLLLL    

Si  se  modifica  un  campo  dentro  de    beforeInsert  /  beforeUpdate  

¡No  se  escribirá!  Bug?    

Solución:  Usar  beforeValidate  

Se  ejecuta  después  de  save(),  al  insertar  o  modificar  

Page 37: Cómo construir una plataforma de libro electrónico y no morir en el intento

Concurrencia

B)  Cuando  ES  un  registro  importante    

                             Modificar  el  saldo  de  un  usuario              Devolver  una  compra  

                 Consumir  un  cupón  prepago  

 

Page 38: Cómo construir una plataforma de libro electrónico y no morir en el intento

Concurrencia

B)  Cuando  ES  un  registro  importante  1.  Iniciar  transacción    

 

Page 39: Cómo construir una plataforma de libro electrónico y no morir en el intento

Concurrencia

B)  Cuando  ES  un  registro  importante  1.  Iniciar  transacción  2.  Bloquear  el  registro      

 

Page 40: Cómo construir una plataforma de libro electrónico y no morir en el intento

Concurrencia

B)  Cuando  ES  un  registro  importante  1.  Iniciar  transacción  2.  Bloquear  el  registro      

 

SELECT * FROM USER … FOR UPDATE!

Page 41: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Operaciones  en  background  Escritura  de  logs,  actualizar  estadísbcas,  envío  de  mensajes,  colas…  

 

Page 42: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Operaciones  en  background  Escritura  de  logs,  actualizar  estadísbcas,  envío  de  mensajes,  colas…    

1.  Objebvo    Finalizar  la  pebción  lo  antes  posible  

2.  Que  necesitamos:    Crear  un  hilo  con  la  sesión  de  Hibernate  

3.  Plugins:  1.  BackgroundThread  plugin  2.  Executor  3.  Quartz  

 

Page 43: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas                  

Si  hay  muchos  registros  (cientes  de  miles  o  millones)  •  Extremadamento  lento  •  Puedo  agotar  el  heap  •  No  es  eficiente  

Page 44: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas        

•  A  veces  se  puede  susbtuir…  J  

 

Page 45: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas    •  Pero  otras  no  se  puede!  

       Cada  registro  requiere  lógica  de  negocio  L  

Page 46: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas    

Solución  •  Hilo  en  background  •  Seleccionar  solo  lo  necesario  (projecbons)  •  Paginar  (hacer  de  1000  en  1000  elementos)  •  Limpiar  la  sesión  de  nivel  de  1  de  Hibernate  •  Introducir  pausas  si  es  necesario  

Si  falla  todo  lo  demás  •  Crear  un  PLSQL  y  llamarlo  on  demand  o  por  la  noche  

Page 47: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas    

Page 48: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas    

Projection

Page 49: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas    

Paginación

Page 50: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas    

Vaciar la sesión de Hibernate Pausa

Page 51: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas    

¿Que  sucede  si  cada  operación  individual  es  muuuuuy  lenta?  

 Cada  operación  una  llamada  a  un  servicio  externo…    

Page 52: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas    

¿Que  sucede  si  cada  operación  individual  es  muuuuuy  lenta?  

 

SOLUCIÓN:  Un  pool  de  hilos    

Page 53: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas  Configuración  pool  de  hilos:  plugin  Executor  

     

Page 54: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas  Configuración  pool  de  hilos:  plugin  Executor  

     

Número de hilos máximos a la vez

Page 55: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas    

     

Se obtienen primero SOLO los ids

Page 56: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas    

     

Operación lenta: Cargo € en tarjeta

Se encola la operación

Page 57: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas    

     

Operación lenta: Cargo € en tarjeta

Esperamos a que acaben todos los hilos

Se encola la operación

Page 58: Cómo construir una plataforma de libro electrónico y no morir en el intento

Algunos trucos

Actualizaciones  masivas    

     

Vaciamos la sesión de Hibernate y volvemos a empezar

Page 59: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

   

   

Page 60: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Arquitectura    

   

hIps://services.mundoreader.com  

hIps://panel.mundoreader.com  

Tiendas  (web)  

Tomcat  Grails  

MySql  

Page 61: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Arquitectura    

   

hIps://services.mundoreader.com  

hIps://panel.mundoreader.com  

Tiendas  (web)  

Tomcat  Grails  

Stateless!!  JJJJ  

MySql  

Page 62: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Arquitectura    

   

hIps://services.mundoreader.com  

hIps://panel.mundoreader.com  

Tiendas  (web)  

Tomcat  Grails  

Stateless!!  JJJJ  

Page 63: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Arquitectura    

   

hIps://services.mundoreader.com  

hIps://panel.mundoreader.com  

Tiendas  (web)  

Tomcat  Grails  

Stateless!!  JJJJ  

Page 64: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Evitar  trabajo  innecesario  -­‐>  Delegar  en  la  bbdd.    Evitar  N+1  consultas.  Peligro!  Gorm!!    

•  Usar  JOINs.  Crear  índices  si  es  necesario.  

•  Inyectar  propiedades  (valores  agrupados,  etc)  

•  Desnormalizar    

   

Page 65: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Inyectar  propiedades  

•  En  vez  de:  

 

 

   

Page 66: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Inyectar  propiedades  

•  En  vez  de:  

•  Usar  

 

   

Page 67: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Analizar  el  rendimiento  de  la  bbdd  

•  OpenNMS  •  Script  de  análisis  •  MySql  Slow  Queries  

   

show variables like 'slow_query_log';!set global slow_query_log='ON';!!/var/log/mysql/mysql-slow.log!!

Page 68: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Arquitectura    

   

hIps://services.mundoreader.com  

hIps://panel.mundoreader.com  Tomcat  Grails  

Stateless!!  JJJJ  

Page 69: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Dividir  el  esquema  en  dos  •  2  MySql  fisicamente  disbntas  •  Relaciones  ligeras  entre  tablas  de  disbnta  bbdd  •  2  datasources  por  Tomcat  •  No  JOINs!  -­‐>  Desnormalizar  

   

hIps://panel.mundoreader.com  Tomcat  Grails  

MySql  1  

MySql  2  

Page 70: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Escalabilidad  Dos  datasources  •  Configuración  

•  Clases  de  dominio  

     

Page 71: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Rendimiento  DESNORMALIZAR  •  Duplicar  datos  de  otras  tablas  •  Evita  joins  -­‐>  más  rápido  •  Perdida  de  consistencia  •  Uso  de  otros  bpos  de  base  de  datos  

•  Libros  -­‐>  ElasbcSearch  •  Auditoría  -­‐>  MongoDb  con  Gorm  

   

Page 72: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Rendimiento  ElasbcSearch    •  Motor  de  búsqueda  en  texto  plano  •  Basado  en  Lucene  •  Api  JSON  100%  •  Alta  escalabilidad:  cluster,  nodos,  shards  •  Facetas  

   

Page 73: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Rendimiento  ElasbcSearch  Problema:  Indexar  desde  diferentes  puntos  de  la  aplicación    •  Al  modificar  un  libro  •  Al  modificar  una  categoría  (actualizar  todos  sus  libros)  

•  Al  modificar  un  catálogo                    “                                “                “              “  •  Bucles,  hilos  de  fondo,  barras  de  progreso…  LLL  

   

Page 74: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Rendimiento  ElasbcSearch  Problema:  Indexar  desde  diferentes  puntos  de  la  aplicación  Solución:  Demonio  de  indexación    •  Único  punto  de  acceso  al  ES  para  escribir  •  Conbnuamente  procesa  libros  encolados  para  

indexar  •  Para  indexar  un  libro,  solo  hay  que  encolarlo      

Page 75: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Rendimiento  ElasbcSearch  Problema:  Indexar  desde  diferentes  puntos  de  la  aplicación  Solución:  Demonio  de  indexación    •  Al  arrancar,  si  no  hay  nodo,  lo  crea  y  reindexa  •  Permite  encolar  reindexaciones  completas  •  Reconstruir  con  alias  (truco)  •  Índice  por  versión  de  app.      

Page 76: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Rendimiento  Cachear  todo!!  

•  SpringCache  •  JCS  •  Implementaciones  propias  

MySql  •  Cluster  Master/Slave  •  Servidores  read  only  •  Amazon  RDS  

Page 77: Cómo construir una plataforma de libro electrónico y no morir en el intento

Escalabilidad

Rendimiento  Pruebas  de  carga:  conoce  tu  límite  •  Antes  y  después  de  aplicar  mejoras.  Mide  lo  que  has  

ganado.  Profile  tus  JVMs  •  YourKit  Java  Profiler:  memory  leaks,  threads  •  Java  Melody  (no  funciona  con  múlbples  datasources)  •  Plugin  BigDesk  para  ElasbcSearch  

Page 78: Cómo construir una plataforma de libro electrónico y no morir en el intento

Monitorización

Crea  tu  propia  página  de  información  

Page 79: Cómo construir una plataforma de libro electrónico y no morir en el intento

Monitorización

Monitorizar:  página  con  información  

Page 80: Cómo construir una plataforma de libro electrónico y no morir en el intento

Monitorización

Crea  tu  propia  página  de  información  

Page 81: Cómo construir una plataforma de libro electrónico y no morir en el intento

Monitorización

Crea  tu  propia  página  de  información    <app>/scripts/_Events.groovy!

Page 82: Cómo construir una plataforma de libro electrónico y no morir en el intento

Monitorización

Crea  tu  propia  página  de  información    1.  Mostrar  estado  de  

servicios  2.  Chequeo  de  

servicios  3.  Mostrar  hosts/ips      

Page 83: Cómo construir una plataforma de libro electrónico y no morir en el intento

Monitorización

Crea  tu  propia  página  de  información    1.  Mostrar  estado  de  

servicios  2.  Chequeo  de  

servicios  3.  Mostrar  hosts/ips      

Page 84: Cómo construir una plataforma de libro electrónico y no morir en el intento

Monitorización

Crea  tu  propia  página  de  información    1.  Mostrar  estado  de  

servicios  2.  Chequeo  de  

servicios  3.  Mostrar  hosts/ips      

Page 85: Cómo construir una plataforma de libro electrónico y no morir en el intento

Pase a producción

Build  •  Scripts  de  update  SVN,  war  y  upload  a  repo  Test  •  SoapUI  y  manuales  Config  •  Configuración  externa  en  SVN  y  por  versión  Deploy  •  Script  de  descarga  de  war  desde  repo  (por  versión)  Rollback  •  Dump  de  base  datos.  Deploy  versión  anterior.  Config  

se  conserva  entre  versiones.          

Page 86: Cómo construir una plataforma de libro electrónico y no morir en el intento

Pase a producción

Config          Un  directorio  por  versión:          

Page 87: Cómo construir una plataforma de libro electrónico y no morir en el intento

     

 

¡Gracias!      

¿Preguntas?  (Tienen  premio!)