Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción 5
Metodologías de desarrollo 6
Ambientes de desarrollo 7
Validación de datos 10
Identificación de datos 13
Datos en tránsito 13
Datos en reposo 13
Manejo de secretos 13
Detección preventiva 14
Compilación limpia 15
Tecnologías de preferencia 17
Lenguajes de programación 17
Tareas de encolamiento 18
Despliegue de aplicaciones 18
Uso de tecnologías 19
Lenguaje 19
Almacenamiento 19
Formateo de código 20
Repositorios de código 20
Uso de HTTP 21
Exposición y autenticación de servicios 22
Licencias 26
GPLv2 y GPLv3 26
LGPLv3 26
Apache 2.0 26
Ejemplos 30
Ejemplo Gitlab-ci.yml 30
Ejemplo Github-action.yml 30
I. Introducción
La adopción de buenas prácticas es fundamental para todas las
etapas de desarrollo de un sistema o aplicación informática.
servidores y administración de
1. Metodologías de desarrollo
sistemas.
Para el análisis, desarrollo e
● Minimizar las diferencias entre los
implementación se sugiere utilizar
entornos de desarrollo y producción,
metodologías ágiles, incorporando al
posibilitando un despliegue
menos las recomendaciones de la
continuo para conseguir la máxima
metodología denominada The
agilidad.
Twelve-Factor App, con el objeto de
satisfacer, al menos, los siguientes ● Poder escalar la arquitectura o las
aspectos: prácticas de desarrollo sin cambios
significativos en términos de
● Usar formatos declarativos para la
herramientas.
automatización de la configuración.
Así es posible minimizar el tiempo y Se recomienda al equipo de desarrollo el
coste que supone que nuevos uso de metodologías ágiles, tales como
desarrolladores se unan al proyecto. Scrum o Kanban, Programación
Extrema, Modelamiento Ágil, Feature
● Tener un contrato claro con el
Driven Development (FDD) o cualquier
sistema operativo sobre el que se
otra que considere relevante; o bien
trabaja, ofreciendo la máxima
otras metodologías de desarrollo de
portabilidad entre los diferentes
productos como Shape Up.
entornos de ejecución.
Dado que actualmente las instituciones
● Disponer, por defecto, despliegues
pueden no contar con un equipo con los
en plataformas modernas en la
conocimientos de metodologías de
nube, obviando la necesidad de
desarrollo ágil u otras, se recomienda
iniciar las capacitación para trabajos
futuros y, de esta forma, iniciar los
nuevos proyectos con estas
metodologías y, con el tiempo, adquirir
la experiencia para aplicarla a proyectos
ya existentes.
2. Ambientes de desarrollo
● Plan de pruebas.
● Registro de su ejecución y
resultados.
➢ NodeJS 8+ ➢ Bootstrap
➢ C# 7.3+ ➢ Grunt
➢ NPM
● Frameworks Javascript
➢ AngularJS ● Kubernetes
➢ ReactJS ● Helm
➢ JQuery ● Docker
● CloudFoundry
2. Almacenamientos de datos
relacionales
● PostgreSQL 10 o superior.
7. Para infraestructura como
● MySQL 5.7 o superior. código
3. Almacenamientos de datos
no relacionales
● MongoDB 4 o superior
4. Tareas de encolamiento
● RabbitMQ
● ZeroMQ
● Logstash
● Kibana
● Sentry
4. Formateo de código
5. Repositorios de código
● Independencia de la plataforma.
3
● Evolución del servicio.
https://www.w3.org/Protocols/rfc2616/rfc2616-
sec9.html
● Encabezados
Todo desarrollo realizado al interior del aportar a las mejoras del software y,
Estado debe propender a estar aquellas que no tengan la capacidad de
licenciado, acorde a las necesidades desarrollo, puedan usarlo sin problemas
de uso con que fue creado. Para el futuros.
Estado es fundamental la colaboración
Para todos los desarrollos, se
entre instituciones, por lo que se sugiere
recomienda el uso de la licencia GPLv3,
la construcción de software cuyo código
pero también se puede utilizar la
fuente sea accesible por otras
licencia GPLv2 en caso de que alguna
instituciones, así como también para
institución requiera modificar software
estar frente al escrutinio de los
que utilice dicha licencia y no pueda
ciudadanos y que éstos puedan realizar
apelar a re-licenciar la misma a partir de
los aportes que consideren necesarios
una fecha específica.
para mejorar el código de aplicaciones
que ellos mismos pueden usar.
2. LGPLv3
Para estos efectos, están a disposición
Esta licencia sirve cuando el software
las siguientes licencias:
debe ser enlazado con módulos que son
privativos o no compatibles con alguna
1. GPLv2 y GPLv3
de las versiones de GPL.
Este conjunto de licencias es conocido
como copyleft, es decir, requiere que las 3. Apache 2.0
modificaciones realizadas al software,
Esta licencia, compatible con GPLv3
incluyendo cambios efectuados por
(no inferiores), supone muchas ventajas
terceros, sean puestos a disposición de
para mantener el código libre y también
los receptores del software utilizando la
permite trabajos secundarios y uso del
misma licencia. Esto impulsa la
código en otros proyectos. Se
colaboración entre instituciones y da la
recomienda su uso en todo proyecto
posibilidad de que todas ellas puedan
que requiera de una cierta interacción
Nombre de aplicación
2. Ejemplo Gitlab-ci.yml
3. Ejemplo Github-action.yml
stages:
- build
- code_quality
build:
stage: build
variables:
DOCKER_DRIVER: overlay2
services:
- docker:stable-dind
script:
- docker login git.gob.cl:4567 -u gitlab-ci-token -p $CI_BUILD_TOKEN
- docker build -t git.gob.cl:4567/chileatiende/chileatiende:$CI_COMMIT_REF_NAME .
- docker push git.gob.cl:4567/chileatiende/chileatiende:$CI_COMMIT_REF_NAME
only:
- master
- staging
code_quality:
stage: code_quality
variables:
DOCKER_DRIVER: overlay2
allow_failure: true
services:
- docker:stable-dind
script:
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed
's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2- stable/')
- docker run
--env SOURCE_CODE="$PWD"
--volume "$PWD":/code
--volume /var/run/docker.sock:/var/run/docker.sock
"registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
artifacts:
paths: [gl-code-quality-report.json]
build site:
stage: build
image: node:10-stretch
script:
- apt-get update
- apt-get -y install libpng16-16 libpng-tools libpng-dev
- npm i npm@latest -g
- npm install
- npm audit fix --force
- npm run prod
artifacts:
expire_in: 30 days
paths:
- public/*