With the amount of adoption across domains in JavaScript and the availability of several tools and frameworks on this "open forever" platform, time has come to think big in building complete end-to-end, large scale enterprise applications in JavaScript. Here is a case study of how its leveraged to build a robust end-to-end integrated solution for HEIs
2. Thinking Big in JavaScript
Your Footer Here 2
• Increased
Tooling
across dev
life cycle
• Abundance
of
frameworks
across value
chain
Richer Language
Features
More reliable,
better
performing
server-side
middleware
3. 2 Biggest Motivations of using
JavaScript across layers
10 Jan 2019 https://jsfoo.in/2019-pune/ 3
• Open
source for
life time
One core
technology
across layers
4. Functions of Higher Education
Institution
10 Jan 2019 https://jsfoo.in/2019-pune/ 4
Admissions
Application
Ranking and
Selection
Admissions
Process
Students
Management
Profile
Life cycle
Student
Services
Curriculum
Design
Programmes
and Scheme
Detailed
Syllabus
Review and
Publish
Faculty and
Staff
Management
Profile
Faculty
Services
Performance
Reporting &
Awards
5. Functions of Higher Education
Institution
10 Jan 2019 https://jsfoo.in/2019-pune/ 5
Fees
Collection
Accounting
Structure
Fee
Components,
Structure
Fee Collection
and tracking
Academic
Administration
Calendar,
Workloads,
Attendance
Assessments,
Outcome
Attainment
Academic
Activities, IQAC
Examination
Enrollments,
Exam Fees
Exam Calendar,
Seating, Hall
ticket
Evaluation,
Outcome,
Results
Placements
Company
database
Placement
Schedule,
Student select
Interview
process, Status
tracker
6. Functions of Higher Education
Institution
10 Jan 2019 https://jsfoo.in/2019-pune/ 6
Events
Co-curricular
and Extra-
curricular
Agenda,
Gallery, Write-
up
Registrations,
ticketing
Grievance
/ Feedback
Authorities for
redressal
Logging and
tracking
Escalation
rules
Alumni
Alumni
Database
Periodic News
letter
Posts,
Collaboration
for a cause
Hostels
Requests and
Room
Allotments
Fees, Caution
Deposit, Mess
Bills
In-out tracker,
approval,
notifications
7. Functions of Higher Education
Institution
10 Jan 2019 https://jsfoo.in/2019-pune/ 7
Showcase
through a
dynamic,
engaging
Website
Awards
Events
Courses
Infra
8. Characteristics of the Problem
Domain
• Well-defined, well-managed and controlled functions
• Clear ownership of data
• Ex. Admissions, Students enrollments, Programme scheme
and syllabus
• Predictable peak, average workloads
• Ex. last date of applications, results announcements, last date
of fees payment, important news / events / announcements
• Inherent data partitions – Transactional in an academic
year, Analytical for historical data
• Deadlines are truly real and availability is very critical
• Ex: Exam dates, fees payment due date, reopening date
Your Date Here https://jsfoo.in/2019-pune/ 8
9. Architecture Drivers
• Schema less across layers to cater to varying needs
of different fields of Higher Education
• Loosely coupled across functions
• Scale-up / Scale-down independently
• Distributed deployment, cloud agnostic, hybrid
• Open source reducing Total Cost of Ownership
• Shallow learning curve and Rapid prototyping /
development
• Single-sign-on across functions
1/18/2019 https://jsfoo.in/2019-pune/ 9
10. Design Principles
• Single Responsibility Principle
• Inversion of Control (Dependency Injection)
• Interface over Implementation
1/18/2019 https://jsfoo.in/2019-pune/ 10
11. Microservice
An architectural style that structures an application
as a collection of services that are
• Highly maintainable and testable
• Loosely coupled
• Independently deployable
• Organized around business capabilities
1/18/2019 https://jsfoo.in/2019-pune/ 11
12. Microservice
• Enables the continuous delivery/deployment of
large, complex applications
• Enables an organization to evolve its technology
stack
https://microservices.io
1/18/2019 https://jsfoo.in/2019-pune/ 12
14. A Typical MicroService
• Traditional MEAN Stack
• MongoDB Native Driver
• Auth using KeyCloak
• API based Remoting
• Messaging based Pub / Sub
• Logging – HTTP and Application logging
• pm2 for runtime and process management
• Entry in nginx for routing
• Jenkins Pipeline and Docker
1/18/2019 https://jsfoo.in/2019-pune/ 14
15. Reusable DAO Layer
• Native MongoDB Driver over Mongoose
• Schema and field validation / restriction moved to
Business Logic Layer
• Flexible data model accommodates varying data model
• Generics in Java Vs Closure in JavaScript
• Link to BaseDao -
https://github.com/arunramkrish/hasgeek-jsfoo-
pune-2019/blob/master/dao/baseDao.js
1/18/2019 https://jsfoo.in/2019-pune/ 15
16. Auth using Keycloak
• One user realm for all microservices
• One keycloak application client for each
microservice
• User associated to Groups and each group
associated to client specific roles
• Customized login theme with branding
https://www.keycloak.org/docs/3.0/securing_apps/t
opics/oidc/javascript-adapter.html
1/18/2019 https://jsfoo.in/2019-pune/ 16
17. REST Client for API based
Integration
• Using node-rest-client
1/18/2019 https://jsfoo.in/2019-pune/ 17
18. Rabbit MQ for Messaging / Event
Bus
• Pub-Sub
• P2P
• Reliable
• Link to npm module for connecting to RabbitMQ
• As a sender
• As a receiver
https://www.npmjs.com/package/event-gateway-psg
1/18/2019 https://jsfoo.in/2019-pune/ 18
19. Logging
• Effective use of Log levels, log formats, file roll over
on size / date
• Separate logs for disparate use cases
1/18/2019 https://jsfoo.in/2019-pune/ 19
20. PM2 as Process Manager
• High availability
• Auto-recovery from crashes
• Start-up config with NODE_ENV variable
https://pm2.io/doc/en/runtime/overview/
1/18/2019 https://jsfoo.in/2019-pune/ 20
21. NGINX
• Routes traffic to different Microservice
• Acts as reverse proxy
• Terminates SSL to use HTTP with Microservice
https://docs.nginx.com/nginx/admin-guide/
1/18/2019 https://jsfoo.in/2019-pune/ 21
22. Jenkins and Docker
• Delivery Pipeline Automation
• Build versions and auto tagging
1/18/2019 https://jsfoo.in/2019-pune/ 22
23. PDFKit
• Complete control of PDF
• Text, Images, Fonts, Shapes
• Multiple pages, different page sizes
1/18/2019 https://jsfoo.in/2019-pune/ 23
24. NativeScript Angular
• Truly native mobile App for Android and iPhone
from a single codebase using single skillset
https://www.nativescript.org/nativescript-is-how-
you-build-native-mobile-apps-with-angular
1/18/2019 https://jsfoo.in/2019-pune/ 24
Well-defined, well-managed and controlled functions
Clear ownership of data – Ex. Admissions, Students enrollments, Programme scheme and syllabus
Predictable peak, average workloads – Ex. last date of applications, results announcements, last date of fees payment, important news / events / announcements
Inherent data partitions – Transactional in an academic year, Analytical for historical data
Deadlines are truly real and availability is very critical – Exam dates, fees payment due date, reopening date