SlideShare a Scribd company logo
1 of 52
Download to read offline
CMPE 273 – Team Project Report TEAM 3
Team Project
Workforce Management System
Department of Computer Engineering
San José State University
CMPE 273: Enterprise Distributed Systems
TEAM – 3
Name: Ashok Kumar Mishra Student ID: 009991514
Name: Nishant Sharma Student ID: 010028226
Name: Shruthi Narayanan Student ID: 009984494
Name: Akanksha Singh Student ID: 010030839
Name: Mahesh Dhamgunde Student ID: 010019165
Name: Deep Tuteja Student ID: 010119941
May 6th
, 2015
CMPE 273 – Team Project Report TEAM 3
Contribution of Team members
1. Ashok Kumar Mishra - In initial phase, I worked on requirement analysis. I analyzed all
functionalities and worked on flow of activities. With help of this, I worked on navigation
of wireframe with Shruthi. I worked on CRUD of categories and sub categories with
Nishant. I worked on Redis caching with Shruthi. I worked on error handling and
validations. I handled Building module as well.
2. Nishant Sharma - I worked on creation of API documentation after requirement analysis. I
decided different error codes and error messages for all possible errors. I worked on
CRUD of categories and sub categories with Ashok. I worked on integration, testing and
removed errors after integration with Akansha. I implemented Report module. I also
worked on Request caching. I also worked on performance testing using JMeter.
3. Shruthi Narayanan - I worked on Wireframe design of different windows in our application.
I decided navigation from one page to other. I worked on List of users and edit user
functionality. I worked on basic UI design. I populated DB with mock data. I worked on
normalization and de normalization of DB with Mahesh. I handled Guard module. I
worked on Redis caching with Ashok.
4. Akanksha Singh - I worked on DB design with Deep and Mahesh. We designed DB schema
and normalized - de normalized according to initial requirements. I created header and
changed view of header according to user logged in. I worked on integration, testing and
removed errors after integration with Nishant. I implemented connection pooling. I also
implemented Alert module.
5. Mahesh Dhamgunde - I worked on DB design with Deep and Akansha. We designed DB
schema and normalized - de normalized according to initial requirements. I handled Client
module. I worked on integration of different modules and perform test-cases. I worked
with Deep to analyze performance of application.
6. Deep Tuteja - I worked on DB design with Akansha and Mahesh. We designed DB schema
and normalized - de normalized according to initial requirements. I worked on preventing
SQL injection. I handled Billing module. I also worked on SQL cache as well. I also worked
on integration of code. I worked on creation of report of our application and analyzed
performance of application with with Mahesh.
CMPE 273 – Team Project Report TEAM 3
Design
i. Client
To design our client, we have used HTML and angular in .ejs pages. We have designed single
page application. Which means our page will not reload for each user request. Either you want
to submit any data or you want to get any data, our web page will be dynamically updated
based on the O/P of previous step.
HTML is great for static web pages. But it cannot handle when we try to use it for dynamic data.
Angular has been developed to overcome HTML’s this problem. Angular JS is developed for
dynamic UI. It has its own MVC architecture.
Following are some of the advantages of Angular JS.
 Angular JS supports single page application.
 Data injection into page is very simple.
 Angular JS handles dependencies very well.
ii. Server
We have used “Express Framework of node.js” to implement business logic in our application.
And we have also used “Rabbit Message Queue” as Message Oriented Middleware.
Node JavaScript
“node.js” is server side JavaScript. Its basic idea is “Event Driven asynchronous callbacks”. It is
basically an single thread application. Whenever there is any request from client, it will assign
that operation to a thread from thread pool available to it. It will also assign one call function to
that task which will be called when task assigned to that particular thread is over by main
thread and appropriate response will be send to client.
Advantages of node.js
 Asynchronous, so server does not get blocked. And it remains available to handle client
request.
 Non-blocking I/O.
Rabbit Message Queue
We have used rabbit mq as a message oriented middleware. It is an open source message
broker that implements Advanced Messaging Queue Protocol. It uses queue structure in
between client and server to exchange messages. Client puts messages on a queue. Servers
which are listening on that queue will consume that message, and will provide necessary data
CMPE 273 – Team Project Report TEAM 3
back to that client through a temporary queue. Following are some of the advantages of Rabbit
MQ.
 Robust messaging for messages
 Very easy to integrate in code and easy to use.
 Runs on all major operating systems.
 Open source and commercially supported.
iii. DB design
We have used Stored Procedures to perform any operation on database. Following are the
advantages of SPs.
 Stored Procedure can help us in achieving a consistent implementation of logic across
various applications. We can club, code and test commonly performed tasks under single
SP.
 SPs can also help enhance performance of our application. Many tasks are implemented in
SP as series of SQL statements. So using only single request to DB server we can execute
multiple SQL statements and get desired output.
 We can also write business logic in SPs. And execute next query based on o/p of previous
query. So instead of coming back to our application for business logic, we can implement
that logic in SPs itself and all tasks are done in single DB server call only.
 Stored procedure also eliminates the need for all users to know the details of tables in
database.
Following is the DB structure and their connection with other tables.
CMPE 273 – Team Project Report TEAM 3
CMPE 273 – Team Project Report TEAM 3
Different modules
i. Client
Following functionalities were implemented as a part of client module.
 Add a client
 Edit a client
CMPE 273 – Team Project Report TEAM 3
 Search for client based on various criteria
 Delete a client
CMPE 273 – Team Project Report TEAM 3
 Client dashboard
CMPE 273 – Team Project Report TEAM 3
 Client details
ii. Building
Following functionality are implemented as a part of a building module.
CMPE 273 – Team Project Report TEAM 3
 Add a building for registered clients
 Edit a building
 Delete a building
CMPE 273 – Team Project Report TEAM 3
 Get details of each building
iii. Guard
Following functionality are implemented as a part of a guard module.
CMPE 273 – Team Project Report TEAM 3
 Add a Guard
 Edit any specific Guard
 Assign duties to a Guard
CMPE 273 – Team Project Report TEAM 3
 Search for a Guard. We can have any combinations of following criteria to search a Guard.
 Get Duty Details of any Guard
CMPE 273 – Team Project Report TEAM 3
 Delete a Guard
 Home screen when guard logged in
CMPE 273 – Team Project Report TEAM 3
 Guard can modify his details
iv. Alert
Following functionality are implemented as a part of a Alert module.
CMPE 273 – Team Project Report TEAM 3
 Create any Alert by Admin
 List all Alerts
 List Alerts by Building , Client
CMPE 273 – Team Project Report TEAM 3
 Delete any Alert
 Search for an alert on basis of following criteria
CMPE 273 – Team Project Report TEAM 3
 Alert page when client is logged in
CMPE 273 – Team Project Report TEAM 3
 Client can search for alerts
 Alert page when Guard is logged in
CMPE 273 – Team Project Report TEAM 3
 Search by Guard on basis of Building
 Search by Guard
CMPE 273 – Team Project Report TEAM 3
v. Report
Following functionality are implemented as a part of a Report module.
 List of all Reports
 Get Details of one Report
CMPE 273 – Team Project Report TEAM 3
 Submit Report
 Search Report
CMPE 273 – Team Project Report TEAM 3
 Client Search Report
vi. Billing
Following functionality are implemented as a part of a billing module.
 Submit a Bill. Following details will be required at time of submission
CMPE 273 – Team Project Report TEAM 3
 List all bills and bills for specific client
CMPE 273 – Team Project Report TEAM 3
 Update a bill
 Billing page for Client
CMPE 273 – Team Project Report TEAM 3
CMPE 273 – Team Project Report TEAM 3
Role Management
In our application user can have any of following roles.
 Admin
Admin have the highest privileges in each module as shown below.
o Client
 Add client
 Search Client
 Edit Client
 Delete Client
 View client details
o Guard
 Create a guard
 Assign him his weekly duties
 Edit any guard
 Search for guard
 Delete any guard
 View all guards details
o Building
 Add building
 Delete building
 View building details
 Edit building
o Alerts
 Create alerts
 Search alerts by client and building
 Search alerts
o Report
 List all Reports
 Search Report
 View single Report
o Bill
 Submit bill
 List all bills and bills by client
 Update a bill
 Client
Client has following privileges in each module.
o Client
CMPE 273 – Team Project Report TEAM 3
 View and modify his details
 Client dashboard
o Alerts
 View submitted alerts
 Search alerts
o Report
 List all Report for his account
 Search Report
o Bill
 View all his bills
 Guard
Guard has access to following modules only.
o Guard
 View his details
 Modify his details
o Alert
 View alerts based on building
o Report
 Submit Report
 Search Reports
 List his Reports
CMPE 273 – Team Project Report TEAM 3
Performance Enhancement Technique
To measure performance in each of following criteria, we have simultaneously send request for
1, 10, 100, 250 and 500 users. We have plot graph after adding each of the following techniques
one by one.
We applied following enhancement methods on Report Module one by one. On other modules
also we have applied all enhancement methods. During taking below snapshot, there were
5000 guards, 5000 building and 12,000 alerts present in our database. Average data that was
being fetched during following Test cases was around 1.4 MB.
i. Base Graph
Following is the performance graph of very basic application. During taking following O/P, there
wasn’t any technique was used explained below.
o 1 User
o 10 Users
CMPE 273 – Team Project Report TEAM 3
o 100 Users
o 250 Users
CMPE 273 – Team Project Report TEAM 3
o 500 Users
ii. De-normalization
De-normalization is method to allow duplicate data in our database so that when we try to
fetch that data back, we will not have to apply any joins on db tables and all required data is
already present in single db table. This will greatly improve application performance because of
the use of simple queries and data being fetched from single table.
While designing our DB tables, we used above principle. And we can see the improvement in
performance of our application as shown in below graph.
CMPE 273 – Team Project Report TEAM 3
o 1 User
o 10 Users
o 100 Users
CMPE 273 – Team Project Report TEAM 3
o 250 Users
o 500 Users
CMPE 273 – Team Project Report TEAM 3
iii. SQL caching
SQL database tables are stored in hard disks. So whenever we want to fetch any data from a
table we will have to perform hard disk I/O, which is very time consuming operation. But SQL
cache eliminates this I/O operation. Whenever we fetch data from any table first time SQL
server will not only returns the desired data but it will also store that data in SQL cache as well
which usually resides in RAM. So whenever we fetch any data from that table again, instead of
going to hard disk to fetch data, SQL server will read it from SQL cache and will directly returns
the desired data.
SQL servers always caches data. To measure the performance first we can disable the SQL
cache. Measure the performance and than measure the performance with SQL cache enabled.
In our application we have used SQL cache and performance has been improved due to this
which is shown below.
o 1 User
CMPE 273 – Team Project Report TEAM 3
o 10 Users
o 100 Users
CMPE 273 – Team Project Report TEAM 3
o 250 Users
o 500 Users
CMPE 273 – Team Project Report TEAM 3
iv. Connection Pooling
Opening and Closing database connections is an expensive and time consuming process. If we
can derive any mechanism that can minimize this time then our application’s performance will
improve for sure. Connection pool is answer to this problem.
A connection pool is a cache of database connections maintained so that database connections
can be reused when future request to the database required. Every time there is an need to
access database, the pool is searched for any free db connection. Once it is found, we can use it
to access database. Once our use is over we need to put that connection back to connection
pool to be used again.
What will happen if all the connections in connection pool are busy? Either we can drop that
request and user will again have to send request to access database. Or we can implement wait
queue which will be used to store user request for the time any database connection becomes
free. By using this method success% will increase.
We have used both of the above methods in our application. And performance has been
increased for above mentioned reasons. JMETER graphs are shown below.
o 1 User
CMPE 273 – Team Project Report TEAM 3
o 10 Users
o 100 Users
CMPE 273 – Team Project Report TEAM 3
o 250 Users
v. Data Caching
Data caching is a mechanism to store query and its output, so that we will not have to access
database if the o/p of our desired query is already present in cache. This mechanism will save
our time in creating new database connection and fetching data from the database server
which is the most time taken by in any application.
CMPE 273 – Team Project Report TEAM 3
We used “Redis” server in our application to store query and its result as an additional cache
before database server. It stores data in key-value pair. Here database query will be the key and
result from the database will be value.
If we do not find any query’s o/p in data cache then we will fetch the data from database and
stored it in data cache to be used later when same dataset may be required.
Performance of our application was improved after introducing data cache in our application.
Graphs are shown below.
o 1 User
o 10 Users
CMPE 273 – Team Project Report TEAM 3
o 100 Users
o 250 Users
CMPE 273 – Team Project Report TEAM 3
vi. Request Caching
Request caching is mainly used to provide a mechanism to application to scale faster and
perform faster. This caching mechanism is applicable only to idempotent requests, because
only such requests will yield same results when executed multiple times. This means only GET
requests can be cached and not POST.
In this mechanism when we get ant http GET request we will search our cache for same
request. If we found one, we will fetch response for that request from cache and response time
for that request will be very less as we will not have to go to application server to fetch the
data.
We have implemented Request caching in our application, And performance has been
improved because of the above reasons. JMETER graph for it are as shown below.
o 1 User
CMPE 273 – Team Project Report TEAM 3
o 10 Users
o 100 Users
CMPE 273 – Team Project Report TEAM 3
o 250 Users
o 500 Users
CMPE 273 – Team Project Report TEAM 3
vii. Paging
Paging is a memory management technique. In this memory is divided into fixed sized pages.
Whenever user wants any data instead of fetching all rows from that table, our application will
fetch only predefined number of rows. We have given user an option to provide number of
rows he wants to see in single page.
So by this technique even though number of database access will be increased, but single
database access will be much faster and more practical.
o 1 User
CMPE 273 – Team Project Report TEAM 3
o 10 Users
CMPE 273 – Team Project Report TEAM 3
o 100 Users
o 250 Users
CMPE 273 – Team Project Report TEAM 3
o 500 Users
CMPE 273 – Team Project Report TEAM 3
viii. Overall Performance
I have integrated all JMeter readings in below table. In this we can see how performance is
getting enhanced after applying each technology.
Load Type Users
Response Time ( In milliseconds) Average Time for
each RequestTest 1 Test 2 Test 3
Base
1 362 393 343 366
10 929 953 912 931.33
100 11738 12032 12403 12057.66
250 30082 29910 29310 29767.33
500 58790 59030 62030 59950
De-Normalize
1 311 308 392 337
10 925 942 1023 963.33
100 11698 11878 12342 11972.66
250 29169 29390 28332 28963.66
500 58422 57034 58203 57886.33
SQL Cache
1 301 322 403 342
10 898 932 1023 951
100 11734 11376 12123 11744.33
250 28343 28290 29143 28592
500 55137 56225 54005 55122.33
Connection
Pool
1 322 323 343 329.33
10 831 841 839 837
100 11179 11340 11430 11316.33
250 27968 27834 28102 27968
500 55894 56340 55943 56059
Data Cache
1 100 84 92 92
10 130 140 124 131.33
100 3619 3232 3354 3401.66
250 9234 9103 9420 9252.33
500 18580 17902 17730 18070.66
Response
Cache
1 68 59 43 56.66
10 71 79 67 72.33
100 2876 2778 2654 2769.33
250 7851 7920 8010 7927
500 16074 15832 15783 15896.33
SQL Paging
1 30 24 32 28.66
10 23 25 22 23.33
CMPE 273 – Team Project Report TEAM 3
100 2221 2403 2389 2337.66
250 7050 6940 7121 7037
500 12460 12093 12392 12315
Graph illustration of above results.
 Graph with respect to response time
CMPE 273 – Team Project Report TEAM 3
 Graph with respect to % improvement over base project
CMPE 273 – Team Project Report TEAM 3
Observations and lessons learnt
1. While applying connection pooling, we learnt that a lot of time can be saved from connection
pooling reducing significant overhead of server. This improves performance of application. This
reduces response time and results in faster application.
2. De-normalization helps in getting better performance in this case. We learnt efficient DB
handling from this.
3. By preventing SQL injection, we learnt how to stop malicious attacks on application. No one
should be able to access any account without having valid access.
4. Redis caching helped in improving the performance of system. Data is accessed once when
application starts. After that cached key value pairs are accessed. As DB is not accessed every
time, execution time is reduced.
5. We learnt asynchronous behavior of node while developing this application.
6. During implementing SQL caching and Request caching, we learnt that even though at small
scale these methods does not give any impact but while working under heavy traffic the
improvement in performance in very significant.
7. While developing all functionalities of application, we learnt why proper modularization of
code is important. This removes redundancy and also helps in making changes easy to apply.

More Related Content

Viewers also liked

Human Resource Management System
Human Resource Management SystemHuman Resource Management System
Human Resource Management SystemAdam Waheed
 
Contingent Workforce Management and the On-Demand Enterprise
Contingent Workforce Management and the On-Demand EnterpriseContingent Workforce Management and the On-Demand Enterprise
Contingent Workforce Management and the On-Demand EnterpriseWork Market
 
Employee Management System
Employee Management SystemEmployee Management System
Employee Management SystemMonotheist Sakib
 
Employee Profile Management System
Employee Profile Management SystemEmployee Profile Management System
Employee Profile Management Systemncct
 
Workforce Management Role-Specific Training
Workforce Management Role-Specific TrainingWorkforce Management Role-Specific Training
Workforce Management Role-Specific TrainingSOWGVolunteerTraining
 
Employee Management System By AZ DATAMALL
Employee Management System By AZ DATAMALLEmployee Management System By AZ DATAMALL
Employee Management System By AZ DATAMALLrohit154
 
Employee Management System in C++
Employee Management System in C++Employee Management System in C++
Employee Management System in C++Jayant Gope
 
Employee management system1
Employee management system1Employee management system1
Employee management system1supriya
 
Employee Management System
Employee Management SystemEmployee Management System
Employee Management SystemAnjali Agrawal
 
HSC Context and data flow diagrams ( DFD )
HSC Context and data flow diagrams ( DFD )HSC Context and data flow diagrams ( DFD )
HSC Context and data flow diagrams ( DFD )greg robertson
 
Library Management System PPT
Library Management System PPTLibrary Management System PPT
Library Management System PPTTamaghna Banerjee
 
Library management system presentation
Library management system presentation Library management system presentation
Library management system presentation Smit Patel
 
3263270 human-resource-management-systems-hrms
3263270 human-resource-management-systems-hrms3263270 human-resource-management-systems-hrms
3263270 human-resource-management-systems-hrmschetanmbhimewal
 
Employee Management System UML Diagrams Use Case Diagram, Activity Diagram, S...
Employee Management System UML Diagrams Use Case Diagram, Activity Diagram, S...Employee Management System UML Diagrams Use Case Diagram, Activity Diagram, S...
Employee Management System UML Diagrams Use Case Diagram, Activity Diagram, S...Mohammad Karim Shahbaz
 
Human Resource Management System (HRMS)
Human Resource Management System (HRMS)Human Resource Management System (HRMS)
Human Resource Management System (HRMS)Samaresh Debbarma
 
Employee Management System
Employee Management SystemEmployee Management System
Employee Management Systemvivek shah
 
Dfd examples
Dfd examplesDfd examples
Dfd examplesMohit
 

Viewers also liked (20)

Human Resource Management System
Human Resource Management SystemHuman Resource Management System
Human Resource Management System
 
Contingent Workforce Management and the On-Demand Enterprise
Contingent Workforce Management and the On-Demand EnterpriseContingent Workforce Management and the On-Demand Enterprise
Contingent Workforce Management and the On-Demand Enterprise
 
E-Book Management — It Sounds Serial!
E-Book Management — It Sounds Serial!E-Book Management — It Sounds Serial!
E-Book Management — It Sounds Serial!
 
Employee Management System
Employee Management SystemEmployee Management System
Employee Management System
 
HR management system
HR management systemHR management system
HR management system
 
Employee Profile Management System
Employee Profile Management SystemEmployee Profile Management System
Employee Profile Management System
 
Workforce Management Role-Specific Training
Workforce Management Role-Specific TrainingWorkforce Management Role-Specific Training
Workforce Management Role-Specific Training
 
Employee Management System By AZ DATAMALL
Employee Management System By AZ DATAMALLEmployee Management System By AZ DATAMALL
Employee Management System By AZ DATAMALL
 
Employee Time and Task Tracking System
Employee Time and Task Tracking SystemEmployee Time and Task Tracking System
Employee Time and Task Tracking System
 
Employee Management System in C++
Employee Management System in C++Employee Management System in C++
Employee Management System in C++
 
Employee management system1
Employee management system1Employee management system1
Employee management system1
 
Employee Management System
Employee Management SystemEmployee Management System
Employee Management System
 
HSC Context and data flow diagrams ( DFD )
HSC Context and data flow diagrams ( DFD )HSC Context and data flow diagrams ( DFD )
HSC Context and data flow diagrams ( DFD )
 
Library Management System PPT
Library Management System PPTLibrary Management System PPT
Library Management System PPT
 
Library management system presentation
Library management system presentation Library management system presentation
Library management system presentation
 
3263270 human-resource-management-systems-hrms
3263270 human-resource-management-systems-hrms3263270 human-resource-management-systems-hrms
3263270 human-resource-management-systems-hrms
 
Employee Management System UML Diagrams Use Case Diagram, Activity Diagram, S...
Employee Management System UML Diagrams Use Case Diagram, Activity Diagram, S...Employee Management System UML Diagrams Use Case Diagram, Activity Diagram, S...
Employee Management System UML Diagrams Use Case Diagram, Activity Diagram, S...
 
Human Resource Management System (HRMS)
Human Resource Management System (HRMS)Human Resource Management System (HRMS)
Human Resource Management System (HRMS)
 
Employee Management System
Employee Management SystemEmployee Management System
Employee Management System
 
Dfd examples
Dfd examplesDfd examples
Dfd examples
 

Similar to Workforce_Management_System

Software Development : Jeremy Gleason Iscope Digital
Software Development : Jeremy Gleason Iscope DigitalSoftware Development : Jeremy Gleason Iscope Digital
Software Development : Jeremy Gleason Iscope DigitalIscope Digital
 
agile with scrum methodology
agile with scrum methodology agile with scrum methodology
agile with scrum methodology rahul reddy
 
Struts & hibernate ppt
Struts & hibernate pptStruts & hibernate ppt
Struts & hibernate pptPankaj Patel
 
Navjot_Resume_2017_Latest
Navjot_Resume_2017_LatestNavjot_Resume_2017_Latest
Navjot_Resume_2017_LatestNavjot Thakur
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patternsMd. Sadhan Sarker
 
N - Tier Applications, Enterprise Java Beans, Component technologies
N - Tier Applications, Enterprise Java Beans, Component technologiesN - Tier Applications, Enterprise Java Beans, Component technologies
N - Tier Applications, Enterprise Java Beans, Component technologiesMartin A
 
Building a microservice architecture for a 100mio# revenue company
Building a microservice architecture for a 100mio# revenue companyBuilding a microservice architecture for a 100mio# revenue company
Building a microservice architecture for a 100mio# revenue companyProjectAcom
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitectureABDEL RAHMAN KARIM
 
Modern webtechnologies
Modern webtechnologiesModern webtechnologies
Modern webtechnologiesBesjan Xhika
 
Service Oriented Architecture in NodeJS
Service Oriented Architecture in NodeJSService Oriented Architecture in NodeJS
Service Oriented Architecture in NodeJSAndolasoft Inc
 
Externalized Distributed Configuration Management with Spring Cloud Config-Se...
Externalized Distributed Configuration Management with Spring Cloud Config-Se...Externalized Distributed Configuration Management with Spring Cloud Config-Se...
Externalized Distributed Configuration Management with Spring Cloud Config-Se...Nikhil Hiremath
 

Similar to Workforce_Management_System (20)

Resume
ResumeResume
Resume
 
Software Development : Jeremy Gleason Iscope Digital
Software Development : Jeremy Gleason Iscope DigitalSoftware Development : Jeremy Gleason Iscope Digital
Software Development : Jeremy Gleason Iscope Digital
 
agile with scrum methodology
agile with scrum methodology agile with scrum methodology
agile with scrum methodology
 
icv
icvicv
icv
 
Struts & hibernate ppt
Struts & hibernate pptStruts & hibernate ppt
Struts & hibernate ppt
 
Navjot_Resume_2017_Latest
Navjot_Resume_2017_LatestNavjot_Resume_2017_Latest
Navjot_Resume_2017_Latest
 
Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patterns
 
resume.ssuganya (1)
resume.ssuganya (1)resume.ssuganya (1)
resume.ssuganya (1)
 
Manual testing notes
Manual testing notesManual testing notes
Manual testing notes
 
Microservices
MicroservicesMicroservices
Microservices
 
N - Tier Applications, Enterprise Java Beans, Component technologies
N - Tier Applications, Enterprise Java Beans, Component technologiesN - Tier Applications, Enterprise Java Beans, Component technologies
N - Tier Applications, Enterprise Java Beans, Component technologies
 
Building a microservice architecture for a 100mio# revenue company
Building a microservice architecture for a 100mio# revenue companyBuilding a microservice architecture for a 100mio# revenue company
Building a microservice architecture for a 100mio# revenue company
 
Siva_Resume
Siva_ResumeSiva_Resume
Siva_Resume
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitecture
 
Modern webtechnologies
Modern webtechnologiesModern webtechnologies
Modern webtechnologies
 
Angularj2.0
Angularj2.0Angularj2.0
Angularj2.0
 
Service Oriented Architecture in NodeJS
Service Oriented Architecture in NodeJSService Oriented Architecture in NodeJS
Service Oriented Architecture in NodeJS
 
J2 ee archi
J2 ee archiJ2 ee archi
J2 ee archi
 
Externalized Distributed Configuration Management with Spring Cloud Config-Se...
Externalized Distributed Configuration Management with Spring Cloud Config-Se...Externalized Distributed Configuration Management with Spring Cloud Config-Se...
Externalized Distributed Configuration Management with Spring Cloud Config-Se...
 
Meera3.9
Meera3.9Meera3.9
Meera3.9
 

Workforce_Management_System

  • 1. CMPE 273 – Team Project Report TEAM 3 Team Project Workforce Management System Department of Computer Engineering San José State University CMPE 273: Enterprise Distributed Systems TEAM – 3 Name: Ashok Kumar Mishra Student ID: 009991514 Name: Nishant Sharma Student ID: 010028226 Name: Shruthi Narayanan Student ID: 009984494 Name: Akanksha Singh Student ID: 010030839 Name: Mahesh Dhamgunde Student ID: 010019165 Name: Deep Tuteja Student ID: 010119941 May 6th , 2015
  • 2. CMPE 273 – Team Project Report TEAM 3 Contribution of Team members 1. Ashok Kumar Mishra - In initial phase, I worked on requirement analysis. I analyzed all functionalities and worked on flow of activities. With help of this, I worked on navigation of wireframe with Shruthi. I worked on CRUD of categories and sub categories with Nishant. I worked on Redis caching with Shruthi. I worked on error handling and validations. I handled Building module as well. 2. Nishant Sharma - I worked on creation of API documentation after requirement analysis. I decided different error codes and error messages for all possible errors. I worked on CRUD of categories and sub categories with Ashok. I worked on integration, testing and removed errors after integration with Akansha. I implemented Report module. I also worked on Request caching. I also worked on performance testing using JMeter. 3. Shruthi Narayanan - I worked on Wireframe design of different windows in our application. I decided navigation from one page to other. I worked on List of users and edit user functionality. I worked on basic UI design. I populated DB with mock data. I worked on normalization and de normalization of DB with Mahesh. I handled Guard module. I worked on Redis caching with Ashok. 4. Akanksha Singh - I worked on DB design with Deep and Mahesh. We designed DB schema and normalized - de normalized according to initial requirements. I created header and changed view of header according to user logged in. I worked on integration, testing and removed errors after integration with Nishant. I implemented connection pooling. I also implemented Alert module. 5. Mahesh Dhamgunde - I worked on DB design with Deep and Akansha. We designed DB schema and normalized - de normalized according to initial requirements. I handled Client module. I worked on integration of different modules and perform test-cases. I worked with Deep to analyze performance of application. 6. Deep Tuteja - I worked on DB design with Akansha and Mahesh. We designed DB schema and normalized - de normalized according to initial requirements. I worked on preventing SQL injection. I handled Billing module. I also worked on SQL cache as well. I also worked on integration of code. I worked on creation of report of our application and analyzed performance of application with with Mahesh.
  • 3. CMPE 273 – Team Project Report TEAM 3 Design i. Client To design our client, we have used HTML and angular in .ejs pages. We have designed single page application. Which means our page will not reload for each user request. Either you want to submit any data or you want to get any data, our web page will be dynamically updated based on the O/P of previous step. HTML is great for static web pages. But it cannot handle when we try to use it for dynamic data. Angular has been developed to overcome HTML’s this problem. Angular JS is developed for dynamic UI. It has its own MVC architecture. Following are some of the advantages of Angular JS.  Angular JS supports single page application.  Data injection into page is very simple.  Angular JS handles dependencies very well. ii. Server We have used “Express Framework of node.js” to implement business logic in our application. And we have also used “Rabbit Message Queue” as Message Oriented Middleware. Node JavaScript “node.js” is server side JavaScript. Its basic idea is “Event Driven asynchronous callbacks”. It is basically an single thread application. Whenever there is any request from client, it will assign that operation to a thread from thread pool available to it. It will also assign one call function to that task which will be called when task assigned to that particular thread is over by main thread and appropriate response will be send to client. Advantages of node.js  Asynchronous, so server does not get blocked. And it remains available to handle client request.  Non-blocking I/O. Rabbit Message Queue We have used rabbit mq as a message oriented middleware. It is an open source message broker that implements Advanced Messaging Queue Protocol. It uses queue structure in between client and server to exchange messages. Client puts messages on a queue. Servers which are listening on that queue will consume that message, and will provide necessary data
  • 4. CMPE 273 – Team Project Report TEAM 3 back to that client through a temporary queue. Following are some of the advantages of Rabbit MQ.  Robust messaging for messages  Very easy to integrate in code and easy to use.  Runs on all major operating systems.  Open source and commercially supported. iii. DB design We have used Stored Procedures to perform any operation on database. Following are the advantages of SPs.  Stored Procedure can help us in achieving a consistent implementation of logic across various applications. We can club, code and test commonly performed tasks under single SP.  SPs can also help enhance performance of our application. Many tasks are implemented in SP as series of SQL statements. So using only single request to DB server we can execute multiple SQL statements and get desired output.  We can also write business logic in SPs. And execute next query based on o/p of previous query. So instead of coming back to our application for business logic, we can implement that logic in SPs itself and all tasks are done in single DB server call only.  Stored procedure also eliminates the need for all users to know the details of tables in database. Following is the DB structure and their connection with other tables.
  • 5. CMPE 273 – Team Project Report TEAM 3
  • 6. CMPE 273 – Team Project Report TEAM 3 Different modules i. Client Following functionalities were implemented as a part of client module.  Add a client  Edit a client
  • 7. CMPE 273 – Team Project Report TEAM 3  Search for client based on various criteria  Delete a client
  • 8. CMPE 273 – Team Project Report TEAM 3  Client dashboard
  • 9. CMPE 273 – Team Project Report TEAM 3  Client details ii. Building Following functionality are implemented as a part of a building module.
  • 10. CMPE 273 – Team Project Report TEAM 3  Add a building for registered clients  Edit a building  Delete a building
  • 11. CMPE 273 – Team Project Report TEAM 3  Get details of each building iii. Guard Following functionality are implemented as a part of a guard module.
  • 12. CMPE 273 – Team Project Report TEAM 3  Add a Guard  Edit any specific Guard  Assign duties to a Guard
  • 13. CMPE 273 – Team Project Report TEAM 3  Search for a Guard. We can have any combinations of following criteria to search a Guard.  Get Duty Details of any Guard
  • 14. CMPE 273 – Team Project Report TEAM 3  Delete a Guard  Home screen when guard logged in
  • 15. CMPE 273 – Team Project Report TEAM 3  Guard can modify his details iv. Alert Following functionality are implemented as a part of a Alert module.
  • 16. CMPE 273 – Team Project Report TEAM 3  Create any Alert by Admin  List all Alerts  List Alerts by Building , Client
  • 17. CMPE 273 – Team Project Report TEAM 3  Delete any Alert  Search for an alert on basis of following criteria
  • 18. CMPE 273 – Team Project Report TEAM 3  Alert page when client is logged in
  • 19. CMPE 273 – Team Project Report TEAM 3  Client can search for alerts  Alert page when Guard is logged in
  • 20. CMPE 273 – Team Project Report TEAM 3  Search by Guard on basis of Building  Search by Guard
  • 21. CMPE 273 – Team Project Report TEAM 3 v. Report Following functionality are implemented as a part of a Report module.  List of all Reports  Get Details of one Report
  • 22. CMPE 273 – Team Project Report TEAM 3  Submit Report  Search Report
  • 23. CMPE 273 – Team Project Report TEAM 3  Client Search Report vi. Billing Following functionality are implemented as a part of a billing module.  Submit a Bill. Following details will be required at time of submission
  • 24. CMPE 273 – Team Project Report TEAM 3  List all bills and bills for specific client
  • 25. CMPE 273 – Team Project Report TEAM 3  Update a bill  Billing page for Client
  • 26. CMPE 273 – Team Project Report TEAM 3
  • 27. CMPE 273 – Team Project Report TEAM 3 Role Management In our application user can have any of following roles.  Admin Admin have the highest privileges in each module as shown below. o Client  Add client  Search Client  Edit Client  Delete Client  View client details o Guard  Create a guard  Assign him his weekly duties  Edit any guard  Search for guard  Delete any guard  View all guards details o Building  Add building  Delete building  View building details  Edit building o Alerts  Create alerts  Search alerts by client and building  Search alerts o Report  List all Reports  Search Report  View single Report o Bill  Submit bill  List all bills and bills by client  Update a bill  Client Client has following privileges in each module. o Client
  • 28. CMPE 273 – Team Project Report TEAM 3  View and modify his details  Client dashboard o Alerts  View submitted alerts  Search alerts o Report  List all Report for his account  Search Report o Bill  View all his bills  Guard Guard has access to following modules only. o Guard  View his details  Modify his details o Alert  View alerts based on building o Report  Submit Report  Search Reports  List his Reports
  • 29. CMPE 273 – Team Project Report TEAM 3 Performance Enhancement Technique To measure performance in each of following criteria, we have simultaneously send request for 1, 10, 100, 250 and 500 users. We have plot graph after adding each of the following techniques one by one. We applied following enhancement methods on Report Module one by one. On other modules also we have applied all enhancement methods. During taking below snapshot, there were 5000 guards, 5000 building and 12,000 alerts present in our database. Average data that was being fetched during following Test cases was around 1.4 MB. i. Base Graph Following is the performance graph of very basic application. During taking following O/P, there wasn’t any technique was used explained below. o 1 User o 10 Users
  • 30. CMPE 273 – Team Project Report TEAM 3 o 100 Users o 250 Users
  • 31. CMPE 273 – Team Project Report TEAM 3 o 500 Users ii. De-normalization De-normalization is method to allow duplicate data in our database so that when we try to fetch that data back, we will not have to apply any joins on db tables and all required data is already present in single db table. This will greatly improve application performance because of the use of simple queries and data being fetched from single table. While designing our DB tables, we used above principle. And we can see the improvement in performance of our application as shown in below graph.
  • 32. CMPE 273 – Team Project Report TEAM 3 o 1 User o 10 Users o 100 Users
  • 33. CMPE 273 – Team Project Report TEAM 3 o 250 Users o 500 Users
  • 34. CMPE 273 – Team Project Report TEAM 3 iii. SQL caching SQL database tables are stored in hard disks. So whenever we want to fetch any data from a table we will have to perform hard disk I/O, which is very time consuming operation. But SQL cache eliminates this I/O operation. Whenever we fetch data from any table first time SQL server will not only returns the desired data but it will also store that data in SQL cache as well which usually resides in RAM. So whenever we fetch any data from that table again, instead of going to hard disk to fetch data, SQL server will read it from SQL cache and will directly returns the desired data. SQL servers always caches data. To measure the performance first we can disable the SQL cache. Measure the performance and than measure the performance with SQL cache enabled. In our application we have used SQL cache and performance has been improved due to this which is shown below. o 1 User
  • 35. CMPE 273 – Team Project Report TEAM 3 o 10 Users o 100 Users
  • 36. CMPE 273 – Team Project Report TEAM 3 o 250 Users o 500 Users
  • 37. CMPE 273 – Team Project Report TEAM 3 iv. Connection Pooling Opening and Closing database connections is an expensive and time consuming process. If we can derive any mechanism that can minimize this time then our application’s performance will improve for sure. Connection pool is answer to this problem. A connection pool is a cache of database connections maintained so that database connections can be reused when future request to the database required. Every time there is an need to access database, the pool is searched for any free db connection. Once it is found, we can use it to access database. Once our use is over we need to put that connection back to connection pool to be used again. What will happen if all the connections in connection pool are busy? Either we can drop that request and user will again have to send request to access database. Or we can implement wait queue which will be used to store user request for the time any database connection becomes free. By using this method success% will increase. We have used both of the above methods in our application. And performance has been increased for above mentioned reasons. JMETER graphs are shown below. o 1 User
  • 38. CMPE 273 – Team Project Report TEAM 3 o 10 Users o 100 Users
  • 39. CMPE 273 – Team Project Report TEAM 3 o 250 Users v. Data Caching Data caching is a mechanism to store query and its output, so that we will not have to access database if the o/p of our desired query is already present in cache. This mechanism will save our time in creating new database connection and fetching data from the database server which is the most time taken by in any application.
  • 40. CMPE 273 – Team Project Report TEAM 3 We used “Redis” server in our application to store query and its result as an additional cache before database server. It stores data in key-value pair. Here database query will be the key and result from the database will be value. If we do not find any query’s o/p in data cache then we will fetch the data from database and stored it in data cache to be used later when same dataset may be required. Performance of our application was improved after introducing data cache in our application. Graphs are shown below. o 1 User o 10 Users
  • 41. CMPE 273 – Team Project Report TEAM 3 o 100 Users o 250 Users
  • 42. CMPE 273 – Team Project Report TEAM 3 vi. Request Caching Request caching is mainly used to provide a mechanism to application to scale faster and perform faster. This caching mechanism is applicable only to idempotent requests, because only such requests will yield same results when executed multiple times. This means only GET requests can be cached and not POST. In this mechanism when we get ant http GET request we will search our cache for same request. If we found one, we will fetch response for that request from cache and response time for that request will be very less as we will not have to go to application server to fetch the data. We have implemented Request caching in our application, And performance has been improved because of the above reasons. JMETER graph for it are as shown below. o 1 User
  • 43. CMPE 273 – Team Project Report TEAM 3 o 10 Users o 100 Users
  • 44. CMPE 273 – Team Project Report TEAM 3 o 250 Users o 500 Users
  • 45. CMPE 273 – Team Project Report TEAM 3 vii. Paging Paging is a memory management technique. In this memory is divided into fixed sized pages. Whenever user wants any data instead of fetching all rows from that table, our application will fetch only predefined number of rows. We have given user an option to provide number of rows he wants to see in single page. So by this technique even though number of database access will be increased, but single database access will be much faster and more practical. o 1 User
  • 46. CMPE 273 – Team Project Report TEAM 3 o 10 Users
  • 47. CMPE 273 – Team Project Report TEAM 3 o 100 Users o 250 Users
  • 48. CMPE 273 – Team Project Report TEAM 3 o 500 Users
  • 49. CMPE 273 – Team Project Report TEAM 3 viii. Overall Performance I have integrated all JMeter readings in below table. In this we can see how performance is getting enhanced after applying each technology. Load Type Users Response Time ( In milliseconds) Average Time for each RequestTest 1 Test 2 Test 3 Base 1 362 393 343 366 10 929 953 912 931.33 100 11738 12032 12403 12057.66 250 30082 29910 29310 29767.33 500 58790 59030 62030 59950 De-Normalize 1 311 308 392 337 10 925 942 1023 963.33 100 11698 11878 12342 11972.66 250 29169 29390 28332 28963.66 500 58422 57034 58203 57886.33 SQL Cache 1 301 322 403 342 10 898 932 1023 951 100 11734 11376 12123 11744.33 250 28343 28290 29143 28592 500 55137 56225 54005 55122.33 Connection Pool 1 322 323 343 329.33 10 831 841 839 837 100 11179 11340 11430 11316.33 250 27968 27834 28102 27968 500 55894 56340 55943 56059 Data Cache 1 100 84 92 92 10 130 140 124 131.33 100 3619 3232 3354 3401.66 250 9234 9103 9420 9252.33 500 18580 17902 17730 18070.66 Response Cache 1 68 59 43 56.66 10 71 79 67 72.33 100 2876 2778 2654 2769.33 250 7851 7920 8010 7927 500 16074 15832 15783 15896.33 SQL Paging 1 30 24 32 28.66 10 23 25 22 23.33
  • 50. CMPE 273 – Team Project Report TEAM 3 100 2221 2403 2389 2337.66 250 7050 6940 7121 7037 500 12460 12093 12392 12315 Graph illustration of above results.  Graph with respect to response time
  • 51. CMPE 273 – Team Project Report TEAM 3  Graph with respect to % improvement over base project
  • 52. CMPE 273 – Team Project Report TEAM 3 Observations and lessons learnt 1. While applying connection pooling, we learnt that a lot of time can be saved from connection pooling reducing significant overhead of server. This improves performance of application. This reduces response time and results in faster application. 2. De-normalization helps in getting better performance in this case. We learnt efficient DB handling from this. 3. By preventing SQL injection, we learnt how to stop malicious attacks on application. No one should be able to access any account without having valid access. 4. Redis caching helped in improving the performance of system. Data is accessed once when application starts. After that cached key value pairs are accessed. As DB is not accessed every time, execution time is reduced. 5. We learnt asynchronous behavior of node while developing this application. 6. During implementing SQL caching and Request caching, we learnt that even though at small scale these methods does not give any impact but while working under heavy traffic the improvement in performance in very significant. 7. While developing all functionalities of application, we learnt why proper modularization of code is important. This removes redundancy and also helps in making changes easy to apply.