Sign inSign up

iulianabr/monkey

By iulianabr

Updated over 6 years ago

Image
0

882

iulianabr/monkey repository overview

Big Brother

Sistem de Monitorizare Brinzoi Iuliana 343C3

Descrierea Aplicatiei

Acest proiect isi propune implementarea unui sistem de monitorizare pentru angajatii unei companii. Ideea este de a tine evidenta gradului de ocupare a salilor din firma si de a asigura o functionare corecta a cartelelor de acces. Spre exemplu, o persoana nu poate intra intr-o sala in care a intrat mai devreme fara sa fi iesit apriori.

Descriere Containere

Data

In cadrul acestui container se vor genera date despre activitatea angajatilor pe parcursul unei zile. Pentru acest proiect nu pot genera date reale, asa ca va exista un script care va simula un demers obisnuit al unei zile in ceea ce priveste numarul de intalniri si sedinte, numarul de ore petrecute la birou, numarul de ore petrecute in sala de recreere etc.

Redis

Acest container se va ocupa de caching-ul continutului bazei de date, in sensul ca va retine activitatea din ziua curenta pentru a fi mai usor de accesat.

Input API

Acest container va asigura corectitudinea si impachetarea datelor ce vor fi trimise masterul-ui. Spre exemplu, un angajat nu poate iesi dintr-o camera la o ora anterioara celei intrarii, nu poate intra in camere care nu exista in cladirea companiei samd. Datele relevate for fi trimise printr-o cerere http master-ului care va actualiza continutul bazei de date. Acest container va comunica si cu serviciul Redis pentru a vedea daca exista date redundante si pentru a asigura corectitudinea noilor date primite.

Master

Master-ul se va ocupa cu operatiile uzuale pe baze de date, anume cele CRUD (create, read, update, delete).

Acest container mentine un whitelist sau un blacklist pentru a controla accesul in diverse camere, pentru anumiti angajati sau pentru anumite roluri. Master-ul proceseaza input-urile si actualizeaza baza de date. Listele de acces (whitelist, blacklist) sunt replicate in serverul de cache-ing. Pentru o scalabilitate buna, container-ul InputAPI poate verifica daca o intrare se regaseste in whitelist, pentru a garanta accesul rapid.

MySQL

Serviciul de MySQL va crea o structura initiala a bazei de date si va adauga o serie de date necesare in avans (angajati, departamente etc). Datele vor fi stocate persistent, deci la o repornire a stack-ului baza de date va avea continutul scris de la ultima accesare.

Baza de date se numeste ‘bigbrother’, iar tabelele necesare sunt urmatoarele: Tabela positions retine pozitiile existente in firma (developer, tester, recruiter, manager etc), iar tabela departments retine departementele (HR, IT etc).

Tabela employees retine datele despre un angajat, precum id, nume, data nasterii etc.

Tabela rooms retine salile existente in firma, dupa nume si capacitate.

In aceasta tabela este retinuta activitatea angajatilor. Aici se retine data si durata in care un angajat a ocupat o anumita camera.

Pentru fiecare tabela am definit niste proceduri stocate pentru a fi usor de interactionat cu tabelele, aceste proceduri fiind mai apoi apelate din cod:

View

Acest container se va ocupa cu realizarea de grafice pentru aplicatie. Va realiza statistici cu privire la gradul si durata de ocupare a salilor pe parcursul unei zile, saptamani, lui si va prezenta traseul angajatilor intr-o anumita perioada.

Implementarea Aplicatiei

Pentru serviciul de baze de date am folosit MySQL. Pentru generearea, gestionarea si impachetarea si interactiunea cu baza de date se va folosi Python. Comunicarea intre servicii se va face folosind cereri HTTP, fiecare serviciu care trebuie sa primeasca date avand un server Flask asociat care poate fi accesat si dintr-un browser Web.

Tag summary

Content type

Image

Digest

Size

364.1 MB

Last updated

over 6 years ago

docker pull iulianabr/monkey