Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Full stack JavaScript based microservices for HEIs

181 views

Published on

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

Published in: Education
  • Login to see the comments

Full stack JavaScript based microservices for HEIs

  1. 1. Full-stack JavaScript based micro-services for complete automation of Higher Education Institutions (HEIs) Arun kumar Krishnamoorthy Software Technologies
  2. 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. 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. 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. 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. 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. 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. 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. 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. 10. Design Principles • Single Responsibility Principle • Inversion of Control (Dependency Injection) • Interface over Implementation 1/18/2019 https://jsfoo.in/2019-pune/ 10
  11. 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. 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
  13. 13. JavaScript + MicroService To our rescue
  14. 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. 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. 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. 17. REST Client for API based Integration • Using node-rest-client 1/18/2019 https://jsfoo.in/2019-pune/ 17
  18. 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. 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. 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. 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. 22. Jenkins and Docker • Delivery Pipeline Automation • Build versions and auto tagging 1/18/2019 https://jsfoo.in/2019-pune/ 22
  23. 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. 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
  25. 25. Thank you https://github.com/arunramkrish arunram.krish@gmail.com @arunramkrish 1/18/2019 25

×