Charla que di en la Bilbostack 2022 sobre Kubernetes.
Discutía casos de uso, cuando usarlo y cuando no y algunos consejos destinados a aquellos que se están planteando usarlo.
Microservicios es una aproximacion de desarrollo en pequeños servicios, independientes uno del otro, que pueden ejecutarse en procesos aislados y que se comunican mediante un mecanismo ligero basado en api http
Charla que di en la Bilbostack 2022 sobre Kubernetes.
Discutía casos de uso, cuando usarlo y cuando no y algunos consejos destinados a aquellos que se están planteando usarlo.
Microservicios es una aproximacion de desarrollo en pequeños servicios, independientes uno del otro, que pueden ejecutarse en procesos aislados y que se comunican mediante un mecanismo ligero basado en api http
Divide y Vencerás: introducción a los MicroserviciosThoughtworks
Actualmente está muy de moda los términos SOA, descentralización de servicios, microservicios... pero, ¿qué significan realmente?
En esta charla intentaremos aclarar estas dudas además de explicar como podemos utilizar los nuevos paradigmas y diseños arquitectónicos para crear aplicaciones sencillas de construir, escalables y que sigan cumpliendo los requerimientos del negocio.
Esta charla se presentó por primera vez en el evento ComparTI/Tech Stage en las oficinas de Thoughtworks Quito en Enero de 2015. http://info.thoughtworks.com/ComparTI-Quito-Enero_Registration-Page.html
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
En esta charla se pretenden tocar todas las cosas que debemos tener en cuenta para sacar el máximo rendimiento y poder escalar usando Symfony2.
Se toca desde parámetros de configuración de PHP y APC, optimización de Composer, dónde optimizar, quick wins varios, cómo hacer profiling correctamente, BBDD NoSQL vs SQL y por supuesto lecciones aprendidas en mis anteriores trabajos
Presentación hecha en el SpringIO 2012 en Madrid España. Donde se muestra un poco de la experiencia adquirida durante el desarrollo y puesta a producción de la plataforma de eCommerce mas grande de LatinoAmerica construida con Grails
Esta sesión comparte desde un punto de vista técnico las experiencias y aprendizajes obtenidos al orquestar contenedores usando la tecnología Kubernetes en SUNAT, la dependencia de gobierno federal en Perú encargada de la administración tributaria.
Siempre que hablamos de Azure, decimos que pese a que es un ecosistema 100% Microsoft no importa el lenguaje en el que esté desarrollada tu aplicación. Pero todas las demos que vemos son con aplicaciones desarrolladas en .NET...
Vale speaker, ya está bien, sal de tu zona de confort y enséñame como desplegar algo que no sea .NET!!
En esta sesión, mezclaremos agua y aceite, es decir, JavaScript con Azure. Veremos qué es Node.js, como desarrollar una API en Node.js (desde VS 2017 y desde VS Code), y lo mejor, como mezclarla con las cositas de azure.
Automatización del despliegue de aplicaciones multi cloudSoftware Guru
Platicaremos sobre opciones para la automatización del despliegue de aplicaciones en ambientes multi cloud (AWS, Azure), utilizando herramientas de Infrastructure as Code y configuration management. Primero daremos un panorama teórico de lo que sucede y luego mostraremos ejemplos usando Terraform y Ansible.
Con la ciencia en las Nubes
Present y futuro de la Nube Privada Corporativa del CSIC
Talk held in Techday Madrid, 2017. More info:
https://opennebula.org/community/techdays/techday-madrid-2017/
Kubernetes es mas conocido por hacer despliegues de contenedores no dependientes del estado, pero tambien es capaz de manejar cargas de trabajo que dependen del estado, como las bases de datos. Con Kubernetes es muy facil tener aplicaciones que tengan alta disponibilidad y que los cambios se hagan de una forma transparente. Pero, ¿Podemos/Queremos tener estos beneficios para las bases de datos? ¿Que pasa con los servicios gestionados como Azure SQL? En esta sesion mi objetivo es introducirte al mundo de Kubernetes respecto al manejo de aplicaciones dependientes del estado y cuales son las opciones junto a los conceptos que existen en el ecosistema. Luego, a travez de una demostracion podras ver si te vale desplegar tu base de datos en Kubernetes, o no.
Divide y Vencerás: introducción a los MicroserviciosThoughtworks
Actualmente está muy de moda los términos SOA, descentralización de servicios, microservicios... pero, ¿qué significan realmente?
En esta charla intentaremos aclarar estas dudas además de explicar como podemos utilizar los nuevos paradigmas y diseños arquitectónicos para crear aplicaciones sencillas de construir, escalables y que sigan cumpliendo los requerimientos del negocio.
Esta charla se presentó por primera vez en el evento ComparTI/Tech Stage en las oficinas de Thoughtworks Quito en Enero de 2015. http://info.thoughtworks.com/ComparTI-Quito-Enero_Registration-Page.html
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
En esta charla se pretenden tocar todas las cosas que debemos tener en cuenta para sacar el máximo rendimiento y poder escalar usando Symfony2.
Se toca desde parámetros de configuración de PHP y APC, optimización de Composer, dónde optimizar, quick wins varios, cómo hacer profiling correctamente, BBDD NoSQL vs SQL y por supuesto lecciones aprendidas en mis anteriores trabajos
Presentación hecha en el SpringIO 2012 en Madrid España. Donde se muestra un poco de la experiencia adquirida durante el desarrollo y puesta a producción de la plataforma de eCommerce mas grande de LatinoAmerica construida con Grails
Esta sesión comparte desde un punto de vista técnico las experiencias y aprendizajes obtenidos al orquestar contenedores usando la tecnología Kubernetes en SUNAT, la dependencia de gobierno federal en Perú encargada de la administración tributaria.
Siempre que hablamos de Azure, decimos que pese a que es un ecosistema 100% Microsoft no importa el lenguaje en el que esté desarrollada tu aplicación. Pero todas las demos que vemos son con aplicaciones desarrolladas en .NET...
Vale speaker, ya está bien, sal de tu zona de confort y enséñame como desplegar algo que no sea .NET!!
En esta sesión, mezclaremos agua y aceite, es decir, JavaScript con Azure. Veremos qué es Node.js, como desarrollar una API en Node.js (desde VS 2017 y desde VS Code), y lo mejor, como mezclarla con las cositas de azure.
Automatización del despliegue de aplicaciones multi cloudSoftware Guru
Platicaremos sobre opciones para la automatización del despliegue de aplicaciones en ambientes multi cloud (AWS, Azure), utilizando herramientas de Infrastructure as Code y configuration management. Primero daremos un panorama teórico de lo que sucede y luego mostraremos ejemplos usando Terraform y Ansible.
Con la ciencia en las Nubes
Present y futuro de la Nube Privada Corporativa del CSIC
Talk held in Techday Madrid, 2017. More info:
https://opennebula.org/community/techdays/techday-madrid-2017/
Kubernetes es mas conocido por hacer despliegues de contenedores no dependientes del estado, pero tambien es capaz de manejar cargas de trabajo que dependen del estado, como las bases de datos. Con Kubernetes es muy facil tener aplicaciones que tengan alta disponibilidad y que los cambios se hagan de una forma transparente. Pero, ¿Podemos/Queremos tener estos beneficios para las bases de datos? ¿Que pasa con los servicios gestionados como Azure SQL? En esta sesion mi objetivo es introducirte al mundo de Kubernetes respecto al manejo de aplicaciones dependientes del estado y cuales son las opciones junto a los conceptos que existen en el ecosistema. Luego, a travez de una demostracion podras ver si te vale desplegar tu base de datos en Kubernetes, o no.
Zend Framework Taller de SeeD Software, Colombiarazigal
Esta es la diapositiva del taller 'Zend Framework' presentada por Luca Urech de SeeD Software (www.seedcorporate.com), realizada el dia 30 de abril del año 2008.
Symfony-Community: Introducción a Symfony Frameworkexcedesoft
El seminario está dirigido a aquellos estudiantes, profesionales, universidades y empresas dedicados a la industria de software que deseen aprender sobre la iniciación de una aplicación Symfony. Se demostrá como descargar e instalar el framework, configuración inicial y conceptos necesarios para el desarrollo de una aplicación web simple.
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaAMADO SALVADOR
Distribuidor Oficial Ariston en Valencia: Amado Salvador distribuidor autorizado de Ariston, una marca líder en soluciones de calefacción y agua caliente sanitaria. Amado Salvador pone a tu disposición el catálogo completo de Ariston, encontrarás una amplia gama de productos diseñados para satisfacer las necesidades de hogares y empresas.
Calderas de condensación: Ofrecemos calderas de alta eficiencia energética que aprovechan al máximo el calor residual. Estas calderas Ariston son ideales para reducir el consumo de gas y minimizar las emisiones de CO2.
Bombas de calor: Las bombas de calor Ariston son una opción sostenible para la producción de agua caliente. Utilizan energía renovable del aire o el suelo para calentar el agua, lo que las convierte en una alternativa ecológica.
Termos eléctricos: Los termos eléctricos, como el modelo VELIS TECH DRY (sustito de los modelos Duo de Fleck), ofrecen diseño moderno y conectividad WIFI. Son ideales para hogares donde se necesita agua caliente de forma rápida y eficiente.
Aerotermia: Si buscas una solución aún más sostenible, considera la aerotermia. Esta tecnología extrae energía del aire exterior para calentar tu hogar y agua. Además, puede ser elegible para subvenciones locales.
Amado Salvador es el distribuidor oficial de Ariston en Valencia. Explora el catálogo y descubre cómo mejorar la comodidad y la eficiencia en tu hogar o negocio.
HPE presenta una competició destinada a estudiants, que busca fomentar habilitats tecnològiques i promoure la innovació en un entorn STEAM (Ciència, Tecnologia, Enginyeria, Arts i Matemàtiques). A través de diverses fases, els equips han de resoldre reptes mensuals basats en àrees com algorísmica, desenvolupament de programari, infraestructures tecnològiques, intel·ligència artificial i altres tecnologies. Els millors equips tenen l'oportunitat de desenvolupar un projecte més gran en una fase presencial final, on han de crear una solució concreta per a un conflicte real relacionat amb la sostenibilitat. Aquesta competició promou la inclusió, la sostenibilitat i l'accessibilitat tecnològica, alineant-se amb els Objectius de Desenvolupament Sostenible de l'ONU.
Catalogo Cajas Fuertes BTV Amado Salvador Distribuidor OficialAMADO SALVADOR
Explora el catálogo completo de cajas fuertes BTV, disponible a través de Amado Salvador, distribuidor oficial de BTV. Este catálogo presenta una amplia variedad de cajas fuertes, cada una diseñada con la más alta calidad para ofrecer la máxima seguridad y satisfacer las diversas necesidades de protección de nuestros clientes.
En Amado Salvador, como distribuidor oficial de BTV, ofrecemos productos que destacan por su innovación, durabilidad y robustez. Las cajas fuertes BTV son reconocidas por su eficiencia en la protección contra robos, incendios y otros riesgos, lo que las convierte en una opción ideal tanto para uso doméstico como comercial.
Amado Salvador, distribuidor oficial BTV, asegura que cada producto cumpla con los más estrictos estándares de calidad y seguridad. Al adquirir una caja fuerte a través de Amado Salvador, distribuidor oficial BTV, los clientes pueden tener la tranquilidad de que están obteniendo una solución confiable y duradera para la protección de sus pertenencias.
Este catálogo incluye detalles técnicos, características y opciones de personalización de cada modelo de caja fuerte BTV. Desde cajas fuertes empotrables hasta modelos de alta seguridad, Amado Salvador, como distribuidor oficial de BTV, tiene la solución perfecta para cualquier necesidad de seguridad. No pierdas la oportunidad de conocer todos los beneficios y características de las cajas fuertes BTV y protege lo que más valoras con la calidad y seguridad que solo BTV y Amado Salvador, distribuidor oficial BTV, pueden ofrecerte.
En este documento analizamos ciertos conceptos relacionados con la ficha 1 y 2. Y concluimos, dando el porque es importante desarrollar nuestras habilidades de pensamiento.
Sara Sofia Bedoya Montezuma.
9-1.
3. Agenda
Definiciones
Comparaciones con otros Frameworks
Anatomía de una Aplicación Zend
Recomendaciones para lograr Mantenibilidad
Recomendaciones para lograr Alta Disponibilidad
Recomendaciones de Seguridad
5. Agenda
Definiciones
• Framework
• ¿Qué es un Framework?
• Problemas comunes que resuelven los Frameworks
• Tipos
• Zend
• Componentes
• Filosofía
• Proceso de Calidad ZF
• Usos
• MVC
Comparativas otros Frameworks
Anatomía de una Aplicación Zend
Recomendaciones para lograr Mantenibilidad
Recomendaciones para lograr Alta Disponibilidad
Recomendaciones de Seguridad
8. ¿Qué es un Framework?
• Herramientas
• Conceptos
• Prácticas
• Criterios
Enfocados en resolver ciertos tipos de problemas
9. Framework
• Un conjunto estandarizado de conceptos, prácticas y criterios
para enfocar un tipo de problemática particular, que sirve como
referencia para enfrentar y resolver nuevos problemas de
índole similar.
10. Problemas comunes
• Persistencia de Datos • WebServices
• Validación de • Manejo de Sesión
Formularios
• ACL
• Autenticación
• Configuración
• E-mailing
• Seguridad • Manejo de
Excepciones
• Routing
• Cache • Búsquedas
• Log • Paginado
• Etc…
12. • Zend Framework es un framework de código abierto para
desarrollar aplicaciones web, servicios web, scripts con PHP5.
• Zend Framework es una implementación que usa código 100%
orientado a objetos.
• Cada componente está construido con una baja dependencia
de otros componentes.
• Zend Framework ofrece un gran rendimiento y una robusta
implementación MVC.
• Licencia BSD. Business friendly
• Documentación en muchos idiomas
• >80% code covered por pruebas unitarias
13.
14. Componentes de ZF
• MVC • Zend_Controller
– Front Controller
• Database – Router
• I18N – Dispatcher
– Action Controller
• Auth y ACL – Plugins y Helpers
• Web Services – Request y Response
• Zend_View
• Mail, Formats, Search – PHP-based views
• Utilitarios – Helpers
• Zend_Layout
• Zend_Form
15. Componentes de ZF
• MVC • Zend_Db_Adapter
• Database – Adaptadores para la
mayoría de extensiones
• I18N de PHP
• Auth y ACL • Zend_Db_Profiler
• Web Services • Zend_Db_Select
• Mail, Formats, Search • Zend_Db_Table
• Utilitarios – Zend_Db_Table_Rowset
– Zend_Db_Table_Row
24. Filosofía de Zend Framework
• Simplicidad y Extensibilidad
– Soluciones fáciles para el 80% de la funcionalidad comúnmente
requerida en una aplicación web.
– La extensibilidad nos posibilita una fácil adecuación al 20%
restante
– No hay complejos archivos XML de configuración
• Buenas practicas Ágiles y Orientadas a Objetos
– Arquitectura Use-at-Will
– Full Stack Framework
– Diseñado para Extensibilidad
– Unit tested
25. Proceso de Calidad ZF
1. Cuéntanos que es lo que propones
1. Redactar el Proposal Document
2. Impleméntalo
1. Escribe código OO que implemente tu propuesta
2. Escribe las pruebas unitarias, Si usas TDD, aun mejor
3. Documenta cómo funciona
3. Verifica que cumple con la propuesta
1. Publica tu implementación para la revisión de la comunidad
2. Obtener Feedback e introducir mejoras.
3. Revisión del Zend-Team para validar conformidad
Enlace Proposals: http://framework.zend.com/wiki/display/ZFPROP/Home
26. Usos de ZF
• Como Full Stack web framework
– Aplicaciones web
• Como Component Library
– Cron Jobs
• cron_importar_adecsys.php
• cron_despublicar_avisos.php
– Tools
• zf.php
• sync.php
• test_ws.php
• scrapers
Lectura Recomendada:
http://www.slideshare.net/shahar/zend-framework-components-for-nonframework-use
Shahar Evron 2008 – colaborador de ZF
29. Agenda
Definiciones
Comparaciones con otros Frameworks
• Cuadro Comparativo
• Pros & Cons ZF
Anatomía de una Aplicación Zend
Recomendaciones para lograr Mantenibilidad
Recomendaciones para lograr Alta Disponibilidad
Recomendaciones de Seguridad
30. CakePHP CodeIgniter Symfony Yii ZF
Licencia MIT OSL MIT New BSD BSD
Inicio 2005-08 2006-01 2005-10 2008-01 2006-03
PHP 5.2+ 5.1+ 5 5.1+ 5.2.4+
MVC Si Si Si Si Si
I18n Si Incompleto Si Si Si
ORM Active Record Third Party Only Doctrine, Propel DAO, Zend_Db
Data Maper Active Record
Testing Si Next Release Si Si Si
Seguridad ACL Si Plugin ACL, RBAC. ACL
Plugins
Templates Si Si Si Si Si
Caché Si Si Si Si Si
Scaffolding Si No Si Si No
Fuente: http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
31. CakePHP CodeIgniter Symfony Yii ZF
PHP4 SI SI NO NO NO
PHP5 SI SI SI SI SI
Multiple DB SI SI SI SI SI
Validation SI SI SI SI SI
Ajax SI NO SI SI SI
Auth SI NO SI SI SI
Modular SI NO SI SI SI
Fuente: http:///www.phpframeworks.com
32. PROS CONS
• Open Source • Menos CoC que otros FWs
• Bajo acoplamiento • Menos RAD que otros FWs
• Flexibilidad • Pocos ejemplos, tutoriales
• Buena Documentación • Mayor curva de aprendizaje
• 100% OO • No hay scaffolding
• Uso de Patrones
• Amplia Librería
• Business – friendly
– Licencia
– Soporte
• Zend Server
• Certificable
41. Bootstrap
• La clase Bootstrap define que recursos y componentes
que se deben inicializar.
• De forma predeterminada, el Front Controller es
inicializado (Zend_Controller_Front), y configura por
defecto el directorio “application/controllers/” para
manejar los Controladores (Action Controllers).
42. Bootstrap por defecto
al crear un proyecto
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}
?>
43. Bootstrap con métodos _init*
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initFoo()
{
// ...
}
protected function _initBar()
{
// ...
}
protected function _initBaz()
{
// ...
}
}
?>
47. Controlador Zend
<?php
class IndexController extends Zend_Controller_Action
{
public function init()
{
}
public function indexAction()
{
}
public function arraydataAction()
{
$this->view->users = array(
array('nombre'=>'Carlos'),
array('nombre'=>'Pedro'),
array('nombre'=>'Juan'),
array('nombre'=>'José')
);
}
}
48. Pasar variables del controlador a la vista
A través de
$this->view->var = „valor„;
$this->asign(„var„, „valor');
<?php
class IndexController extends Zend_Controller_Action
{
public function seeRequestAction()
{
$this->view->username = ”eanaya”;
}
}
Usuario: <?=$this->username?> <br />
49. Front Controller
• Zend_Controller_Front implementa el patrón Front
Controller usado en aplicaciones MVC .
• También implementa el patrón Singleton
• Su propósito es:
– inicializar el entorno de la solicitud
– rutear la solicitud (Request) entrante
– y luego hacer un envío de cualquier de las acciones
descubiertas
– le agrega las respuestas y las regresa cuando se completa el
proceso.
Ref. http://en.wikipedia.org/wiki/Front_Controller_pattern
50.
51. ¿Cómo es posible que capture todas las peticiones?
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
56. short_open_tag = On
PROS CONS
• Legibilidad • Menos Portabilidad
• Rapidez • Podría llegar a hacer
conflictos si es que se
configura el servidor web
para que mod_php procese
archivos xml
<? foreach ($this->categorias as $categoria): ?>
<tr> … … … </tr>
<? endforeach; ?>
<?xml version="1.0" encoding="UTF-8"?>
<feed>…</feed>
57. Escapar cadenas en la vista
<?php
// mala idea
echo $this->variable;
// buena práctica
echo $this->escape($this->variable);
?>
• No ‘escapar’ las vistas puede ocasionar fallos de seguridad
como Cross Site Scripting[1].
• Se deben escapar las cadenas que fueron ingresadas por
usuarios.
<?php foreach ($this->categorias as $categoria): ?>
<tr>
<td><?php echo $this->escape($categoria[„nombre']) ?></td>
<td><?php echo $this->escape($categoria[„descripcion']) ?></td>
</tr>
<?php endforeach; ?>
[1] http://es.wikipedia.org/wiki/Cross-site_scripting
70. Zend_Form simplifica la creación y manejo de formularios en
nuestra aplicación web. Realiza las siguientes tareas:
• Agregar, eliminar, modificar Elementos
• Filtrar y Validar Elementos
• Ordenamiento de Elementos
• Renderizado de Elementos y Formularios, incluyendo
escape
• Agrupamientos de Elementos
• Configuración a nivel de Formulario y Elemento
configuration
78. View Helpers
• En los templates es frecuente hacer acciones varias veces:
• Formatear fechas
• Bloques
• Widgets
• Etc.
• Pincipio de funcionamiento: “Desacoplar la data de la presentación”
79. View Helpers
• En los templates es frecuente hacer acciones varias veces:
• Formatear fechas
• Bloques
• Widgets
• Etc.
• Pincipio de funcionamiento: “Desacoplar la data de la presentación”
• Zend viene con algunos View Helpers
• Tambien podemos construir los nuestros
88. Ejemplos Plugins: ACL
class My_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request) {
$acl = new Zend_Acl();
$acl->addRole('admin');
$acl->addRole('ventas');
$acl->addRole('supervisor_ventas','ventas');
$acl->addRole('logistica');
$acl->addResource('productos');
$acl->addResource('categorias');
$acl->addResource('fabricantes');
$acl->addResource('reportes');
$acl->allow('ventas','productos','vender');
$acl->allow('logistica','reportes','ultimos10');
$acl->allow('supervisor_ventas','reportes','ultimos10');
$acl->allow('admin');
// guardamos la ACL en sesión
$regAcl = Zend_Registry::get('acl');
$regAcl->acl = $acl;
parent::preDispatch($request);
}
}
89. Registramos los plugins en el bootstrap
protected function _initPlugins()
{
Zend_Controller_Front::getInstance()->registerPlugin(
new My_Controller_Plugin_Acl()
);
Zend_Controller_Front::getInstance()->registerPlugin(
new My_Controller_Plugin_Routes()
);
}
93. Registrando los Action Helpers en el
bootstrap
// bootstrap
protected function _initActionHelpers()
{
Zend_Controller_Action_HelperBroker::addHelper(
new My_Controller_Action_Helper_Auth()
);
Zend_Controller_Action_HelperBroker::addHelper(
new My_Controller_Action_Helper_MyFlashMessenger()
);
}
;Application.ini
resources.frontController.actionhelperpaths.App_Controller_Action_Helper =
"App/Controller/Action/Helper"
94. Ejemplo Action Helper
class My_Controller_Action_Helper_Rand
extends Zend_Controller_Action_Helper_Abstract
{
public function getRand($max)
{
return rand(1, $max);
}
public function direct($max)
{
return $this->getRand($max);
}
}
95. Usando los Action Helpers
public function actionHelpersAction() {
if ($this->isAuth) {
$this->log->debug($this->auth);
}
$randHelper = $this->getHelper('Rand');
$this->view->rand1 = $randHelper->getRand(100);
$randHelper = $this->_helper->getHelper('Rand');
$this->view->rand2 = $randHelper->getRand(100);
$randHelper = $this->_helper->Rand;
$this->view->rand3 = $randHelper->getRand(100);
$this->view->rand4 = $this->_helper->Rand(100);
}
97. Agenda
Definiciones
Comparaciones con otros Frameworks
Anatomía de una Aplicación Zend
Recomendaciones para lograr Mantenibilidad
Parametrización
DRY
View Helpers
Action Helpers
Coding Standards:
PHP_CodeSniffer
Object Calisthenics PHP
Manejo de Errores con Zend
Uso de Logs
Grupo de discusión: php-standards
Recomendaciones para lograr Alta Disponibilidad
Recomendaciones de Seguridad
PHP
98. Parametrización
• El objetivo es evitar futuros cambios de código en la aplicación
; ADECSYS
adecsys.wsdl = "http://dev.wsadecsys.info/AppService.asmx?wsdl"
; Parametros Globales reales DPCH
adecsys.proxy.enabled = 1 adecsys.proxy.param.proxy_host = '192.168.1.5'
adecsys.proxy.param.proxy_port = '8123'
adecsys.proxy.param.proxy_login = 'user'
adecsys.proxy.param.proxy_password = 'pass'
100. Parametrización
[subjects]
nuevoUsuario = '{%subjectMessage%} a Aptitus.pe, {%nombre%}„
nuevoAdm = 'Bienvenido a Aptitus.pe'
nuevaEmpresa = '{%empresa%} registro de empresa en Aptitus.pe'
postularAviso = '{%nombre%}, postulaste al aviso de {%nombrePuesto%} en Aptitus.pe'
confirmarCompra = '{%nombre%}, compraste un aviso en Aptitus.pe'
confirmarVoucherPagoEfectivo = '{%nombre%}, registraste un aviso en Aptitus.pe„
avisoPublicado = 'Su aviso de {%nombrePuesto%} se publicó en Aptitus.pe'
avisoRegistrado = 'Su aviso de {%nombrePuesto%} está pendiente de Publicación'
recuperarContrasenaPostulante = '{%nombre%}, cambia tu contraseña en Aptitus'
recuperarContrasenaEmpresa = 'Cambio de contraseña en Aptitus'
recuperarContrasenaAdministrador = '{%nombre%}, cambia tu contraseña en Aptitus'
invitarPostular = '{%nombre%}, tienes una invitacion en Aptitus.pe'
mensajePostulante = '{%nombre%},tienes un mensaje de la empresa {%empresa%} en Apt.'
132. Agenda
Definiciones
Comparaciones con otros Frameworks
Anatomía de una Aplicación Zend
Recomendaciones para lograr Mantenibilidad
Recomendaciones para lograr Alta Disponibilidad
Performance
Base de datos
Indices
Desnormalizar
Correcto uso de Zend_Paginator
Cache
Adaptadores
Cache Metadata
Escalabilidad
Zend_Sesion_SaveHandler_ DbTable
No hardcodear links
Recomendaciones de Seguridad
PHP
145. • Escalabilidad
Si la aplicación va a ser desplegada en un ambiente
distribuido, se deben de tomar algunas consideraciones
App1
DB
App2
iNET LB
…
Otros
Serv.
AppN
146. • Escalabilidad
• Carga distribuida
• Zend_Sesion_SaveHandler_DbTable
resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable“
resources.session.saveHandler.options.name = "zend_session“
resources.session.saveHandler.options.primary = "id“
resources.session.saveHandler.options.modifiedColumn = "modified“
resources.session.saveHandler.options.dataColumn = "data“
resources.session.saveHandler.options.lifetimeColumn = "lifetime"
Almacenar las sesiones en un punto central
149. Agenda
Definiciones
Comparaciones con otros Frameworks
Anatomía de una Aplicación Zend
Recomendaciones para lograr Mantenibilidad
Recomendaciones para lograr Alta Disponibilidad
Recomendaciones de Seguridad
Top OWASP 2010
Sql Injection
Cross Site Scripting
Cross-site Request Forgery