Desarrollo ágil

Qué se programa

jj.github.io/curso-tdd/temas/servicios

Refinement

El README tiene que incluir la palabra "Solución" en el segundo hito

✓ TODO

□ ¿Se ha subido ya el proyecto con sus componentes?

□ ¿Se ha formulado correctamente el problema y se ha entendido quién lo va a usar?

□ ¿Se ha propuesto una solución informática?

□ Posiblemente en diferentes etapas.

Hay servicios imprescindibles en una aplicación

💘 logs

Arquitectura κ

Librerías básicas o externas

Servicios externos (logz.io) o libres (logstash)

use simple_logger::SimpleLogger;

#[derive(Debug)]
pub enum IssueState {
    Open,
    Closed,
}

#[derive(Debug)]
pub struct Issue {
    state: IssueState,
    project_name: String,
    issue_id: u64,
}

pub fn issue_factory( project_name: String,
                      issue_id: u64) -> Issue {
    log::debug!( "Creating closed issue for project {} with id {}", project_name, issue_id );
    return Issue { state: IssueState::Closed,
                   project_name: project_name,
                   issue_id: issue_id }
}

Usando los logs siempre

fn main() {
    SimpleLogger::new().init().unwrap();
    let this_issue = issue_factory(String::from("CoolProject"), 1 );
    let mut that_issue = issue_factory( String::from("CoolProject"), this_issue.issue_id + 1 );
    that_issue.state = IssueState::Open; // Avoid warning
    log::debug!("Changed state to Open");
}

Configuración remota

Parte de los 12 pasos

Configuración en el entorno

Hay muchas formas de almacenar los datos

SGBD con SQL

Documentales

Clave-valor

Tiempo real

Grafos

Los sistemas de ficheros son excelentes

Y hay sistemas de ficheros comerciales

No nos olvidemos

Servidores web: nginx

RabbitMQ y otros de mensajería

✓ TODO

¿Qué servicios vas a usar y por qué es un logger?

Considerar el resto de los servicios para más adelante...