SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Docker y JVM
Experiencias en la construcción del
Buscador del Repositorio Nacional
@SuperSerch
La aplicación
La información se debe cosechar de
otros repositorios, incluyendo el
contenido de archivos adjuntos
La información se debe procesar
para trabajarse con SPARQL
Las búsquedas pueden entregar
demasiados resultados
Problemática
Funciones devoradoras de memoria
Canibalización del HEAP
Grandes pausas al liberar la memoria
Competencia por puertos de red
Elementos parte de la
Solución
Docker
¿Qué es Docker?
Plataforma de Contenerización
Aislamiento de procesos
Construcción basada en capas
Stack interno de red
Ligado entre contenedores
JVM y "Microservicios"
Java Enterprise Edition
Java EE 7
Servlet
JAX-RS
CDI
JSON-P
Payara
Basado en Glassfish
Dos versiones: Normal y Blue (IBM)
Ediciones: Server, Embedded y Micro
Cluster mediante hazelcast
Soporte 7/24
Poniendo todo junto
JVM en Docker
¿Cuál JVM?
OpenJDK (si está disponible para el SO del contenedor)
Oracle JVM (no se puede redistribuir)
Instalar vía el repo que acepta automáticamente los
términos de uso (ppa:webupd8team)
Proporcionar el archivo vía ADD en el Dockerfile
Dockerfile base
FROM debian:8.3
ENV LANG C.UTF-8
ADD jdk-8u92-linux-x64.tar.gz /opt
COPY payara-micro-4.1.1.162.jar /opt
ENV JAVA_HOME /opt/jdk1.8.0_92
ENV PATH $PATH:$JAVA_HOME/bin
CMD ["/bin/bash"]
Dockerfile base
El contenedor base da la pauta a las instrucciones y el
tamaño del contenedor
ADD desempaqueta el archivo en la ruta que se le indica
COPY coloca un archivo en la ruta específica.
Dockerfile de una app
FROM serch/payara
COPY portal.war /
ENV SEARCH_ENDPOINT http://search:8080/resource
ENV STATISTICS_ENDPOINT http://statistics:8080/resource
CMD ["java", "-Xmx1024m", "-jar",
"/opt/payara-micro-4.1.1.162.jar", "--noCluster",
"—deploy","/portal.war"]
El ENV para configurar
Utilizar variables de ambiente para
la configuración.
En especial para datos sensibles.
--env MYVAR2=foo
-e MYVAR1
--env-file ./env.list
HAProxy
Reverse Proxy y SSL Terminator
Single-process
Event-driven
Soporte nativo a SSL (1.5)
Opera a nivel TCP y HTTP
Dockerfile HAProxy
FROM debian:8.3
ENV LANG C.UTF-8
RUN echo deb http://httpredir.debian.org/debian jessie-backports main | sed 's/(.*)-sloppy
(.*)/&@1 2/' | tr @ 'n' | tee /etc/apt/sources.list.d/backports.list
RUN apt-get update && apt-get install -y haproxy -t jessie-backports &&
rm -rf /var/lib/apt/lists/*
COPY haproxy.cfg /etc/haproxy/
COPY haproxy.sh /
COPY repositorionacionalcti.mx.pem /etc/haproxy/certs/
WORKDIR /etc/haproxy
CMD ["/bin/bash", "/haproxy.sh"]
EXPOSE 80
EXPOSE 443
HAProxyfrontend http_proxy
bind *:80
reqadd X-Forwarded-Proto: http
acl is_oai_pmh hdr_beg(host) -i oai-pmh
acl is_portal_www hdr_beg(host) -i www
acl is_portal_top hdr_beg(host) -i repositorionacionalcti
use_backend app1 if is_portal_www || is_portal_top
use_backend app2 if is_oai_pmh
frontend www-https
bind *:443 ssl crt /etc/haproxy/certs/repositorionacionalcti.mx.pem
reqadd X-Forwarded-Proto: https
acl is_oai_pmh hdr_beg(host) -i oai-pmh
acl is_portal_www hdr_beg(host) -i www
acl is_portal_top hdr_beg(host) -i repositorionacionalcti
use_backend app1 if is_portal_www || is_portal_top
use_backend app2 if is_oai_pmh
backend app1
redirect scheme https if !{ ssl_fc }
server app1_serv1 portal:8080
Conclusiones
Conclusiones
El diseccionado de las aplicaciones por funciones facilita
su construcción
El uso de REST - JSON como medio de interoperabilidad
entre partes de la aplicación
¿Microservicios?
¿Alta disponibilidad?
¿Preguntas?
Gracias!!!!

Weitere ähnliche Inhalte

Was ist angesagt?

Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10Víctor Leonel Orozco López
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Víctor Leonel Orozco López
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Víctor Leonel Orozco López
 
Rails Against The Machine
Rails Against The MachineRails Against The Machine
Rails Against The Machineguestae6a05
 
Alternativas a Rails para sitios y servicios web ultraligeros
Alternativas a Rails para sitios y  servicios web ultraligerosAlternativas a Rails para sitios y  servicios web ultraligeros
Alternativas a Rails para sitios y servicios web ultraligeroshappywebcoder
 
Marcos quesada caching_sf2
Marcos quesada caching_sf2Marcos quesada caching_sf2
Marcos quesada caching_sf2symfony_bcn
 
Introduccion a Ansible
Introduccion a AnsibleIntroduccion a Ansible
Introduccion a AnsibleOsvaldo
 
Exposicion apache kafka
Exposicion apache kafkaExposicion apache kafka
Exposicion apache kafkaArlin11
 
Exposicion apache
Exposicion apacheExposicion apache
Exposicion apacheArlin11
 
0131 tu aplicacion_gene_xus_en_la_nube_lo_que_se_necesita
0131 tu aplicacion_gene_xus_en_la_nube_lo_que_se_necesita0131 tu aplicacion_gene_xus_en_la_nube_lo_que_se_necesita
0131 tu aplicacion_gene_xus_en_la_nube_lo_que_se_necesitaGeneXus
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magentoOnestic
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)Emanuel Calvo
 
Node.js - Eventos para Todos
Node.js - Eventos para TodosNode.js - Eventos para Todos
Node.js - Eventos para TodosMariano Iglesias
 
Por qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoPor qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoCarlos Granados
 
Distributed Task Processing with Celery - PyZH
Distributed Task Processing with Celery - PyZHDistributed Task Processing with Celery - PyZH
Distributed Task Processing with Celery - PyZHCesar Cardenas Desales
 

Was ist angesagt? (20)

Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
 
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
 
Rails Against The Machine
Rails Against The MachineRails Against The Machine
Rails Against The Machine
 
Alternativas a Rails para sitios y servicios web ultraligeros
Alternativas a Rails para sitios y  servicios web ultraligerosAlternativas a Rails para sitios y  servicios web ultraligeros
Alternativas a Rails para sitios y servicios web ultraligeros
 
Marcos quesada caching_sf2
Marcos quesada caching_sf2Marcos quesada caching_sf2
Marcos quesada caching_sf2
 
Introduccion a Ansible
Introduccion a AnsibleIntroduccion a Ansible
Introduccion a Ansible
 
Ataque por inyección de código sql y sniffing
Ataque por inyección de código sql y sniffingAtaque por inyección de código sql y sniffing
Ataque por inyección de código sql y sniffing
 
Varnish http cache
Varnish http cacheVarnish http cache
Varnish http cache
 
Exposicion apache kafka
Exposicion apache kafkaExposicion apache kafka
Exposicion apache kafka
 
Exposicion apache
Exposicion apacheExposicion apache
Exposicion apache
 
Tomcat yant
Tomcat yantTomcat yant
Tomcat yant
 
0131 tu aplicacion_gene_xus_en_la_nube_lo_que_se_necesita
0131 tu aplicacion_gene_xus_en_la_nube_lo_que_se_necesita0131 tu aplicacion_gene_xus_en_la_nube_lo_que_se_necesita
0131 tu aplicacion_gene_xus_en_la_nube_lo_que_se_necesita
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)LSWC PostgreSQL 9.1 (2011)
LSWC PostgreSQL 9.1 (2011)
 
Mysql Administracion
Mysql AdministracionMysql Administracion
Mysql Administracion
 
Node.js - Eventos para Todos
Node.js - Eventos para TodosNode.js - Eventos para Todos
Node.js - Eventos para Todos
 
Replicación Mysql
Replicación MysqlReplicación Mysql
Replicación Mysql
 
Por qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoPor qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápido
 
Distributed Task Processing with Celery - PyZH
Distributed Task Processing with Celery - PyZHDistributed Task Processing with Celery - PyZH
Distributed Task Processing with Celery - PyZH
 

Ähnlich wie Jvmmx docker jvm

FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020BelnGonzlezGarca1
 
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...Adrián Lois
 
Escuela
EscuelaEscuela
EscuelaMAAP98
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJSBEEVA_es
 
Seguridad Entornos Web Open Source
Seguridad Entornos Web Open SourceSeguridad Entornos Web Open Source
Seguridad Entornos Web Open SourceVictor M. Fernández
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualizaciónMarcelo Ochoa
 
Software Líbre con respaldo de Oracle ~ OTN Tour 2013
Software Líbre con respaldo de Oracle ~ OTN Tour 2013Software Líbre con respaldo de Oracle ~ OTN Tour 2013
Software Líbre con respaldo de Oracle ~ OTN Tour 2013Mysql Latinoamérica
 
Software Open Source – Open Day Oracle 2013
Software Open Source – Open Day Oracle 2013Software Open Source – Open Day Oracle 2013
Software Open Source – Open Day Oracle 2013Erik Gur
 
Introducción a Servidor HTTP Apache
Introducción a Servidor HTTP ApacheIntroducción a Servidor HTTP Apache
Introducción a Servidor HTTP ApacheIker Canarias
 
J2EE - 01 Arquitectura Web
J2EE - 01   Arquitectura WebJ2EE - 01   Arquitectura Web
J2EE - 01 Arquitectura WebNetwork Sens
 
Evasión de Técnicas Forenses
Evasión de Técnicas ForensesEvasión de Técnicas Forenses
Evasión de Técnicas ForensesConferencias FIST
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a TomcatIker Canarias
 

Ähnlich wie Jvmmx docker jvm (20)

Docker 2014 v2
Docker 2014 v2Docker 2014 v2
Docker 2014 v2
 
Usando docker
Usando dockerUsando docker
Usando docker
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
 
FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
Implementación Docker Swarm en Amazon Web Services usando Auto Scaling Groups...
 
Novedades de OpenSolaris 2009.06
Novedades de OpenSolaris 2009.06Novedades de OpenSolaris 2009.06
Novedades de OpenSolaris 2009.06
 
Escuela
EscuelaEscuela
Escuela
 
Tablas de comandos
Tablas de comandosTablas de comandos
Tablas de comandos
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJS
 
Seguridad Entornos Web Open Source
Seguridad Entornos Web Open SourceSeguridad Entornos Web Open Source
Seguridad Entornos Web Open Source
 
Workshop Técnicas Replicacion I
Workshop Técnicas Replicacion IWorkshop Técnicas Replicacion I
Workshop Técnicas Replicacion I
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualización
 
Software Líbre con respaldo de Oracle ~ OTN Tour 2013
Software Líbre con respaldo de Oracle ~ OTN Tour 2013Software Líbre con respaldo de Oracle ~ OTN Tour 2013
Software Líbre con respaldo de Oracle ~ OTN Tour 2013
 
Software Open Source – Open Day Oracle 2013
Software Open Source – Open Day Oracle 2013Software Open Source – Open Day Oracle 2013
Software Open Source – Open Day Oracle 2013
 
Introducción a Servidor HTTP Apache
Introducción a Servidor HTTP ApacheIntroducción a Servidor HTTP Apache
Introducción a Servidor HTTP Apache
 
J2EE - 01 Arquitectura Web
J2EE - 01   Arquitectura WebJ2EE - 01   Arquitectura Web
J2EE - 01 Arquitectura Web
 
Evasión de Técnicas Forenses
Evasión de Técnicas ForensesEvasión de Técnicas Forenses
Evasión de Técnicas Forenses
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
Performance en Drupal 7
Performance en Drupal 7Performance en Drupal 7
Performance en Drupal 7
 

Mehr von superserch

Identificando problemas en el JVM
Identificando problemas en el JVMIdentificando problemas en el JVM
Identificando problemas en el JVMsuperserch
 
Introducción al manejo de memoria en el JVM
Introducción al manejo de memoria en el JVMIntroducción al manejo de memoria en el JVM
Introducción al manejo de memoria en el JVMsuperserch
 
Lambda & Stream API workshop 2019
Lambda & Stream API workshop 2019Lambda & Stream API workshop 2019
Lambda & Stream API workshop 2019superserch
 
OWASP Top 10 2017
OWASP Top 10 2017OWASP Top 10 2017
OWASP Top 10 2017superserch
 
Cloudino workshopcpmx7
Cloudino workshopcpmx7Cloudino workshopcpmx7
Cloudino workshopcpmx7superserch
 
Workshop: Lambdas y Stream API en Java 8
Workshop: Lambdas y Stream API en Java 8Workshop: Lambdas y Stream API en Java 8
Workshop: Lambdas y Stream API en Java 8superserch
 
Chela stress test
Chela stress testChela stress test
Chela stress testsuperserch
 
Zed Attack Proxy
Zed Attack ProxyZed Attack Proxy
Zed Attack Proxysuperserch
 
Inyección, XSS, CSRF en ChelaJS
Inyección, XSS, CSRF en ChelaJSInyección, XSS, CSRF en ChelaJS
Inyección, XSS, CSRF en ChelaJSsuperserch
 

Mehr von superserch (9)

Identificando problemas en el JVM
Identificando problemas en el JVMIdentificando problemas en el JVM
Identificando problemas en el JVM
 
Introducción al manejo de memoria en el JVM
Introducción al manejo de memoria en el JVMIntroducción al manejo de memoria en el JVM
Introducción al manejo de memoria en el JVM
 
Lambda & Stream API workshop 2019
Lambda & Stream API workshop 2019Lambda & Stream API workshop 2019
Lambda & Stream API workshop 2019
 
OWASP Top 10 2017
OWASP Top 10 2017OWASP Top 10 2017
OWASP Top 10 2017
 
Cloudino workshopcpmx7
Cloudino workshopcpmx7Cloudino workshopcpmx7
Cloudino workshopcpmx7
 
Workshop: Lambdas y Stream API en Java 8
Workshop: Lambdas y Stream API en Java 8Workshop: Lambdas y Stream API en Java 8
Workshop: Lambdas y Stream API en Java 8
 
Chela stress test
Chela stress testChela stress test
Chela stress test
 
Zed Attack Proxy
Zed Attack ProxyZed Attack Proxy
Zed Attack Proxy
 
Inyección, XSS, CSRF en ChelaJS
Inyección, XSS, CSRF en ChelaJSInyección, XSS, CSRF en ChelaJS
Inyección, XSS, CSRF en ChelaJS
 

Kürzlich hochgeladen

Presentación de html, css y javascript.
Presentación  de html, css y javascript.Presentación  de html, css y javascript.
Presentación de html, css y javascript.CeteliInmaculada
 
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOELIAMARYTOVARFLOREZD
 
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxcalzadillasluis134
 
Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024Leonardo J. Caballero G.
 
Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024Leonardo J. Caballero G.
 
Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++luzgaray6
 

Kürzlich hochgeladen (6)

Presentación de html, css y javascript.
Presentación  de html, css y javascript.Presentación  de html, css y javascript.
Presentación de html, css y javascript.
 
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVOSISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
SISTEMA INTEGRADO DE ADMINISTRACION FINANCIERA - SIAF MODULO ADMINISTRATIVO
 
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptxMacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
MacOS SISTEMA OPERATIVO CARACTERISTICAS.pptx
 
Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024Introducción a Plone CMS - World Plone Day 2024
Introducción a Plone CMS - World Plone Day 2024
 
Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024Theme design in Plone 6 - World Plone Day 2024
Theme design in Plone 6 - World Plone Day 2024
 
Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++Semana 5-Conceptualización del lenguaje de programación C++
Semana 5-Conceptualización del lenguaje de programación C++
 

Jvmmx docker jvm

  • 1. Docker y JVM Experiencias en la construcción del Buscador del Repositorio Nacional @SuperSerch
  • 2. La aplicación La información se debe cosechar de otros repositorios, incluyendo el contenido de archivos adjuntos La información se debe procesar para trabajarse con SPARQL Las búsquedas pueden entregar demasiados resultados
  • 3. Problemática Funciones devoradoras de memoria Canibalización del HEAP Grandes pausas al liberar la memoria Competencia por puertos de red
  • 4. Elementos parte de la Solución
  • 6. ¿Qué es Docker? Plataforma de Contenerización Aislamiento de procesos Construcción basada en capas Stack interno de red Ligado entre contenedores
  • 8. Java Enterprise Edition Java EE 7 Servlet JAX-RS CDI JSON-P
  • 9. Payara Basado en Glassfish Dos versiones: Normal y Blue (IBM) Ediciones: Server, Embedded y Micro Cluster mediante hazelcast Soporte 7/24
  • 11.
  • 12. JVM en Docker ¿Cuál JVM? OpenJDK (si está disponible para el SO del contenedor) Oracle JVM (no se puede redistribuir) Instalar vía el repo que acepta automáticamente los términos de uso (ppa:webupd8team) Proporcionar el archivo vía ADD en el Dockerfile
  • 13. Dockerfile base FROM debian:8.3 ENV LANG C.UTF-8 ADD jdk-8u92-linux-x64.tar.gz /opt COPY payara-micro-4.1.1.162.jar /opt ENV JAVA_HOME /opt/jdk1.8.0_92 ENV PATH $PATH:$JAVA_HOME/bin CMD ["/bin/bash"]
  • 14. Dockerfile base El contenedor base da la pauta a las instrucciones y el tamaño del contenedor ADD desempaqueta el archivo en la ruta que se le indica COPY coloca un archivo en la ruta específica.
  • 15. Dockerfile de una app FROM serch/payara COPY portal.war / ENV SEARCH_ENDPOINT http://search:8080/resource ENV STATISTICS_ENDPOINT http://statistics:8080/resource CMD ["java", "-Xmx1024m", "-jar", "/opt/payara-micro-4.1.1.162.jar", "--noCluster", "—deploy","/portal.war"]
  • 16. El ENV para configurar Utilizar variables de ambiente para la configuración. En especial para datos sensibles. --env MYVAR2=foo -e MYVAR1 --env-file ./env.list
  • 18. Reverse Proxy y SSL Terminator Single-process Event-driven Soporte nativo a SSL (1.5) Opera a nivel TCP y HTTP
  • 19. Dockerfile HAProxy FROM debian:8.3 ENV LANG C.UTF-8 RUN echo deb http://httpredir.debian.org/debian jessie-backports main | sed 's/(.*)-sloppy (.*)/&@1 2/' | tr @ 'n' | tee /etc/apt/sources.list.d/backports.list RUN apt-get update && apt-get install -y haproxy -t jessie-backports && rm -rf /var/lib/apt/lists/* COPY haproxy.cfg /etc/haproxy/ COPY haproxy.sh / COPY repositorionacionalcti.mx.pem /etc/haproxy/certs/ WORKDIR /etc/haproxy CMD ["/bin/bash", "/haproxy.sh"] EXPOSE 80 EXPOSE 443
  • 20. HAProxyfrontend http_proxy bind *:80 reqadd X-Forwarded-Proto: http acl is_oai_pmh hdr_beg(host) -i oai-pmh acl is_portal_www hdr_beg(host) -i www acl is_portal_top hdr_beg(host) -i repositorionacionalcti use_backend app1 if is_portal_www || is_portal_top use_backend app2 if is_oai_pmh frontend www-https bind *:443 ssl crt /etc/haproxy/certs/repositorionacionalcti.mx.pem reqadd X-Forwarded-Proto: https acl is_oai_pmh hdr_beg(host) -i oai-pmh acl is_portal_www hdr_beg(host) -i www acl is_portal_top hdr_beg(host) -i repositorionacionalcti use_backend app1 if is_portal_www || is_portal_top use_backend app2 if is_oai_pmh backend app1 redirect scheme https if !{ ssl_fc } server app1_serv1 portal:8080
  • 22. Conclusiones El diseccionado de las aplicaciones por funciones facilita su construcción El uso de REST - JSON como medio de interoperabilidad entre partes de la aplicación ¿Microservicios? ¿Alta disponibilidad?