• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
 

Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)

on

  • 2,290 views

Esta ponencia tiene como objetivo mostrar como conjuntar y aprovechar las ventajas de trabajar con Groovy & Grails, llevar el control del versionado con Git y simular la puesta en producción de la ...

Esta ponencia tiene como objetivo mostrar como conjuntar y aprovechar las ventajas de trabajar con Groovy & Grails, llevar el control del versionado con Git y simular la puesta en producción de la aplicación en GoogleAppEngine.

Statistics

Views

Total Views
2,290
Views on SlideShare
2,275
Embed Views
15

Actions

Likes
3
Downloads
41
Comments
0

2 Embeds 15

http://www.slideshare.net 14
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine) Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine) Presentation Transcript

    • Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
      José Juan Reyes Zuñiga
      CIO
      SynergyJ
    • 2
      Objetivo
      Demostrarlasventajascompetitivas al desarrollarcon Groovy & Grails, llevar el control del versionado con Git ysimular la puesta en producción de la aplicación.
    • Agenda
      Groovy
      Grails
      Git
      Google AppEngine
      3
    • Groovy…¿Qué es…?
      Es un lenguaje dinámico para la JVM
      Construido con la fuerza de Java pero incluyendo características poderosas inspiradas en lenguajes como Python, Ruby y Smalltalk
      Es un proyecto con licencia Open Source-Apache
      Gramática relajada derivada de Java 5
      Integración fluida con todos los objetos Java y los cientos de librerías
      Compila a bytecode Java, por lo tanto, se puede usar donde sea
      Simplifica las pruebas
      Aumenta la productividad del desarrollador
      Su curva de aprendizaje mínima
    • HolaMundo en Java
      publicclassHolaMundo {
      privateStringnombre;
      publicStringgetNombre() {
      returnnombre;
      }
      publicvoidsetNombre(String nombre) {
      this.nombre = nombre;
      }
      publicString saluda() {
      return"Hola " + this.nombre + " !!!";
      }
      publicstaticvoidmain(String[] args) {
      HolaMundo objeto = newHolaMundo();
      objeto.setNombre("@SG09Conf");
      System.out.println(objeto.saluda());
      }
      }
    • HolaMundo en Groovy
      publicclassHolaMundo {
      privateStringnombre;
      publicStringgetNombre() {
      return nombre;
      }
      publicvoidsetNombre(String nombre) {
      this.nombre = nombre;
      }
      publicString saluda() {
      return"Hola " + this.nombre + " !!!";
      }
      publicstaticvoidmain(String[] args) {
      HolaMundo objeto = newHolaMundo();
      objeto.setNombre("@SG09Conf");
      System.out.println(objeto.saluda());
      }
      }
    • Mejor a la manera Groovy
      classHolaMundo {
      Stringnombre
      def saluda() { "Hola ${this.nombre} !!!" }
      }
      def objeto = newHolaMundo(nombre:"@SGConf")
      println(objeto.saluda())
    • ¿Cómo llegamos a esto…?
      Tener el JDK instalado
      Establecer la variable JAVA_HOME y agregarla al PATH en el subdirectorio /bin
      Descargamos la distribución de Groovy en http://groovy.codehaus.org/
      Creamos una variable de entorno GROOVY_HOME apuntando al directorio donde se descomprimió la distribución
      Adicionalmente, incluir en el PATH el directorio /bin de la variable de entorno GROOVY_HOME, es decir: %GROOVY_HOME%/bin
      Let’s rock thecode!!!
    • + Groovy en una mirada
      Totalmente Orientado a objetos
      Perfecta integración con Java
      Closures
      Convención de JavaBeans
      Esencia vs. Ceremonia
      Aritmética con BigDecimal por default para la operación de punto flotante
      API’s amigables y prácticas
      XML, JDBC, JMX, Swing
      DSL(DomainSpecificLanguage)
      Builders
      Sobrecarga de operadores
      GDK
    • Azúcar sintáctica + GDK
      Listas
      defnumeros = [1,2,3,4,5]
      Mapas
      def mapa = [DF:'Distrito Federal',MTY:'Monterrey']
      Rangos
      def rangos = 199..299
      Asignación Múltiple
      def (a,b) = [10,20]
      Return Opcional
      defmetodo(bool) { if(bool) 1else0 }
    • Groovy en profundidad
      Meta-programación
      La habilidad de un lenguaje para modificarse a sí mismo
      Transformaciones AST
      @Singleton
      @Inmutable, @Lazy, @Delegate
      @Newify
      @Category & @Mixin
      @PackageScope
      @Bindable & @Vetoable
      @Grab
    • Ahora hablemos de …
    • ¿Que es Grails?
      Una plataforma para desarrollo ágil en Web
      Un framework MVC full-stack
      Un proyecto Open Source
      Corre en la JVM
      Desarrollo de Aplicaciones con Groovy
      Altamente expresivo
      Totalmente orientado a Objetos
      Dinámico
      Sintaxis familiar
      Perfecta integración con Java
      Convención sobre configuración
      DRY(Don'tRepeatYourself)
    • Stack de tecnologías
    • ¿qué me provee?
      MVC zero-configurationDependency_Injectiongsptransacciones JNDI groovyInternacionalización Web_FlowTag_librariesCachinghibernatescaffolding REST LayoutsAJAX JettyUnit testingIntegrationtestinggrailsplugins quartzacegiactivemqamazon-s3 gaeaxiscamelcriteriaGORM dwrextSpring
      flexfreemarkerjava geoipgwtivyjpajqueryldap mail openidpaypalpdfsakaispringmvctaggableterracottatomcattwitterwebtestxfireyui
    • Let’scodeagain!!!
    • Más Grails…
      Mappings
      Internacionalización
      Ajax
      WebFlow
      GORM
      Servicios
      Plugins
      Seguridad
      Web Services
      Más…
    • La vida y los proyectos…
      “…así la vida como los proyectos de software son aburridos si se cuentan y se desarrollan de manera líneal…”
    • Git– Control de versiones
      Git es:
      “Un sistema de control de versiones distribuido libre y open source, diseñado para manejar cada objeto en proyectos pequeños y grandes con velocidad y eficiencia…”
      Creado por Linus Torvalds
    • ¿Distribuido?
      Colaboración
      Cambios sin perturbar a los demás
      Las ramas(branches) que afectan al repositorio local son inaceptables
      Confianza en tus datos
      Sin tener que creer implícitamente en los demás o en el hosting
      Liberaciones de Ingeniería
      Ciclos concurrentes de desarrollo/pruebas/liberaciones
    • Aaahhh Distribuido….
    • Diferencias y ventajas con CVCS
      No hay copias de referencia, solo copias de trabajo locales
      Las operaciones más comunes son regularmente más rápidas ya que no tienen que comunicarse con un servidor central
      No hay necesidad de hacer update antes de hacer commit
      No hay problemas con la red y la latencia generada
      No necesitamos hacer una instalación en un servidor remoto
      Los desarrolladores pueden trabajar sin estar conectados a su red local o a Internet
      Branches experimentales
      Performance
    • Formas de trabajo con Git & DCVS
      Alone
      En pares
      Centralizado
      Descentralizado
    • Instalación de Git
      En función del Sistema Operativo:
      Basado en RedHat
      RPM
      Basado en Debian
      Debs
      Windows
      .exe
      OS X
      DMG
      Solaris
    • Continuemos entonces…
    • Puesta en producción…
    • Infraestructura
    • Una opción…
    • Google AppEngine
      Solución de CloudComputing de Google
      Correr aplicaciones en la infraestructura escalable de Google
      El pago es basado en los recursos usados: almacenamiento, ancho de banda(medido en GB)
      De manera gratuita:
      Hasta 500MB de almacenamiento
      Hasta 5 millones de páginas vistas por mes
      Ahora está disponible para la JVM
      Por lo tanto para Scala, JRuby y...
      GROOVY!!!
    • Entorno GAE
      Corre en Java 6(con algunas limitaciones)
      El request será terminado si no se completa en 30 segundos, arrojando excepción
      Además:
      No hay sockets
      No hay hilos o timers
      No hay JNDI
      System.gc(),System.exit(),etc, no hacen nada
      Algunos problemas con el classloader
    • Escalabilidad en GAE
      30 requests dinámicos simultáneos
      El tiempo de procesamiento del lado servidor es de 75ms
      Alrededor de 400 request/seg. Sin latencia adicional
    • Servicios en GAE
      URL Fetch
      Mail
      Memcache
      Manipulación de Imágenes
      Manejo de usuarios
      Consola de administración
      Calendarización
    • Almacenamiento en GAE
      Datastore
      Almacenamiento de datos distribuido y transaccional
      Filtrado y ordenamiento por el valor del propiedad
      No es relacional, es “esquemático”
    • Persistencia en GAE
      Toda la persistencia es definida por clases @not@d@s
      JDO
      JPA
      Todo es almacenado en BigTable
      Es masivamente escalable
      Es un sistema de almacenamiento distribuido
      Usada por Google para muchas cosas
      Para Java, la API usa el optimizador de Datanucleus
    • Desarrollo en GAE
      Cuenta con un SDK descargable
      Incluye un webserver
      Emula los servicios
      Incluye una herramienta de Upload
      Soporta Java 5 y 6
      Existen un plugin de GAE para Eclipse y uno para Grails
      Debemos de cubrir un proceso de registro sencillo
      Solo podemos subir 10 aplicaciones(gratuitamente)
    • Plugin de GAE para Grails
      Crear una appGrails que coincida con el nombre de nuestra app GAE
      Desinstalar el plugin de Hibernate
      Instalar el plugin app-engine(previokit de GAE instalado)
      Establecer la versión(a 1 preferentemente)
      Desplegar
      Listo..
    • GAE es una opción
      Existen también:
      Amazon EC2
      SpringSourceCloudFoundry
      Entre otros…
    • All in one-place
    • em@il: jjuan.reyes@synergyj.com
      facebook, flickr, digg, twitter, delicious: neodevelop
      Comunidad: http://grails.org.mx
      Preguntas y Respuestas