desarrollo de una aplicación de gestión y monitorización ... behaviour- driven development (bdd)...

29
Desarrollo de una aplicación de gestión y monitorización de nodos de red Sergio Gómez Bachiller Operador del Servicio de Informática Área de Apoyo a la Docencia y a la Investigación Universidad de Córdoba

Upload: others

Post on 17-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión

y monitorización de nodos de red

Sergio Gómez Bachiller Operador del Servicio de Informática Área de Apoyo a la Docencia y a la Investigación Universidad de Córdoba

Page 2: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

2

¿Quién soy y de dónde vengo?

Page 3: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

3

Área de Sistemas

Área de Apoyo a la Docencia y a la Investigación

Área de Comunicaciones

Área de Aplicaciones

Área de Atención al Usuario

Jefe de Servicio + Administrativo

Page 4: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

4

Aplicación en Microsoft AccessDesarrollo propio 20 años de antigüedad Problemas inherentes al tiempo y a la arquitectura

Cisco WorksSoftware privativo Sustituido por Cisco Prime en el año 2011 Sin soporte desde el año 2015 Problemas por falta de actualizaciones

Estado del arteHerramientas previas

Page 5: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

5

Metodologías clásicas¿Qué salió mal?

Diseño

Implementación

Verificación

Mantenimiento

Análisis

Demasiado amplio

No hay suficiente personal

No hay producto hasta el final

Page 6: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

6

Metodologías ágilesProgramación

#&$

%

"

!

Reducir objetivos

Definir los MVP

Pruebas

Page 7: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

7

UsuariosGestión e

identificación de usuarios

PermisosGestión de roles y

seguridad

OrganizaciónGestión de unid.

organizativas, edificios y racks

NodosGestión de elementos de

la red

EsquemaGestión de los datos

de la red

AuditoríaRegistro y consulta de

conexiones

MonitorizaciónControl de estados y

envío de alertas

Objetivos

Page 8: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

8

DesarrolloPlanificación

2016 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Abril

Mayo

Junio

Julio

Primera iteración Segunda iteración

Tercera iteración Cuarta iteración

Alfa Beta

1.31.0

1.5Tareas sysadmin Documentación

Page 9: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

9

Metodologías ágilesPruebas

)(

(

(

* * *

* * *

'

'

'

Behaviour-driven Development (BDD)

Page 10: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

10

Metodologías ágilesPruebas

** *** *** *

Iteración

Iteración

Iteración

Page 11: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

11

RestriccionesFactores dato

Page 12: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

12

RestriccionesFactores estratégicos

Page 13: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

13

Page 14: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

750450

14

El problemaCatalogar y gestionar

Page 15: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

15

La soluciónFuncionamiento

LAN

WAP

LAN

WAP

LAN

WAP

LAN

WAP

LAN

WAP

Page 16: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

16

Gestión de tareas Estadísticas

Control de versiones Documentación

DesarrolloGestión

https://gitlab.uco.es/si/nodos

Page 17: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

17

Desarrollo orientado a comportamientoPruebas

- -**

*

Desarrollador Cliente

+, ?aA

Page 18: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

18

class NodeEventLogMailerSpec extends ObjectBehavior{ function let(…) {} function it_is_initializable(…) {} function it_sends_email(…) {} function it_not_sends_email_if_logs_are_empty(…) {}}

Pruebas de unidadPHPSpec

Page 19: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

19

class NodeEventLogMailerSpec extends ObjectBehavior{ function it_sends_email( \Swift_Mailer $mailer, EngineInterface $engine, NodeEventLog $nodeEventLog ) { $nodeEventLog->getAction()->willReturn(NodeEventLog::UP);

$engine->render('NodeEventLog/email.html.twig', [ 'nodos_down' => [], 'nodos_up' => [$nodeEventLog], ])->shouldBeCalled();

$mailer->send(Argument::type('\Swift_Message'))->shouldBeCalled();

$this->notifyTo(['[email protected]'], [$nodeEventLog]); }}

Pruebas de unidadPHPSpec

Page 20: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

20

class UserNodeVoterSpec extends ObjectBehavior{ function let(…) {} function it_is_initializable(…) {} function it_is_a_voter(…) {} function it_votes_access_granted_to_edit_to_faculty_staff(…) {} function it_votes_access_denied_to_edit_if_operator_not_belong_to_building(…) function it_votes_access_granted_to_view_to_faculty_staff(…) {} function it_votes_access_denied_to_show_if_operator_not_belong_to_building(…) function it_votes_access_denied_if_operator_have_no_buildings(…) {} function it_votes_access_abstain_to_other_actions(…) {} function it_votes_access_abstain_to_other_objects(…) {} function it_votes_access_granted_to_other_roles(…) {}}

Pruebas de unidadPHPSpec

Page 21: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

21

class UserNodeVoterSpec extends ObjectBehavior{

function let(…) { $token->getUser()->willReturn($user); $user->hasRole('ROLE_FACULTY')->willReturn(true); $user->getUsername()->willReturn('johndoe'); $networkNode->getBuilding()->willReturn($building); $building->getOperators()->willReturn([$operator])); }

function it_votes_access_denied_to_edit_if_operator_not_belong_to_building(…) { $operator->getUsername()->willReturn('johnnydoe'); $this->vote($token, $networkNode, ['ROLE_APP_ADMIN_USER_NODE_EDIT']) ->shouldReturn(Voter::ACCESS_DENIED) ; }

}

Pruebas de unidadPHPSpec

Page 22: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

22

DesarrolloCobertura de las pruebas

Page 23: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

23

Pruebas de integraciónBehat

# login.feature Feature: Managing node connections In order to know the devices connected to our network As a network administrator I want to register all device connections on every network port

Page 24: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

24

Background: Given the next network nodes: | name | | switch01 | And the next ports on network node "switch01": | index | name | alias | | 1 | Fa0/1 | Port 1 | | 2 | Fa0/2 | Port 2 | And the next entries on the arp table: | mac | ip | | 00:11:22:33:44:55 | 192.168.0.1 | And the next network connections: | node | port | mac | ip | | switch01 | Fa0/1 | 00:11:22:33:44:55 | 192.168.0.1 |

Pruebas de integraciónBehat

Page 25: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

25

Scenario: Register a new IP in a new port Given the next network connections: | node | port | mac | ip | | switch01| Fa0/2 | 00:11:22:33:44:66 | 192.168.0.2 | Then there are 1 open connection on "switch01" port "Fa0/1" And there are 1 open connection on "switch01" port "Fa0/2"

Pruebas de integraciónBehat

Page 26: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

26

DemoGestión de Nodos de la Universidad de Córdoba

Page 27: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

27

10

MIL4

MIL 228

Líneas de código de pruebas CommitsLíneas de código

ConclusionesEstadísticas

Page 28: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas Técnicas de Rediris 2016

28

Configuración remota vía SNMP.

Configuración

Mantenimiento y asignación de direcciones IP por subred

y configuración DHCP

Gestión IP (IPAM)Adquisición y actualización

automática de datos.

Actualizaciones

Limpieza de datos obsoletos (sharding o borrado).

MantenimientoDesacoplar elementos propios de la UCO para

liberar código.

Liberar código

ConclusionesFuturas mejoras

Page 29: Desarrollo de una aplicación de gestión y monitorización ... Behaviour- driven Development (BDD) Desarrollo de una aplicación de gestión y monitorización de nodos de red Jornadas

Desarrollo de una aplicación de gestión

y monitorización de nodos de red

Sergio Gómez Bachiller Operador del Servicio de Informática Área de Apoyo a la Docencia y a la Investigación Universidad de Córdoba