"Elements" Application

Current State

Prepared By: Kianosh Pourian, UI Consultant Cielo Concepts Inc.

Objectives

Areas of Concern:

  • Code Structure

  • Performance standards

  • Flexibility and extensibility

  • Features: currently available features and integration in future state

Goals

  • Ease of development
  • "Componentize" the application 
  • Responsive application
  • Improve performance
  • Improve build process
  • Separation of presentation layer from business layer

App Stability

  • The general code structure of the site is sound.
  • The usage of JavaScriptMVC framework has allowed for an organized structure for the code.
  • Third party software integration have in the majority of scenarios is working well with current structure
  • Some good coding practices and documentation but implemented inconsistently

Areas of improvement

  • Low performance due to excessive I/O requests
    • ​Total: 137 request, 3.0 MB 
      • ​fast connection - 25.26s, slow connection - 3.7mins
      • Documents: 4 requests 7.7KB
      • Stylesheets: 34 requests 99.4KB
      • Images: 14 requests 108KB
      • Scripts: 52 requests 2.7MB
      • XHR: 26 requests ~60KB
      • Fonts: 2 requests 59.5KB

Areas of improvement (continued)

  • Too many third party software.
  • Embedded logic inside the javascript which creates tightly coupled code

  • The CSS of the site is a bit fractured and verbose. 34 separate CSS files is not a good idea.

  • No offline solution. Pinging the server every 200ms for availability only results in a chatty application. In return, we should consider an offline approach.

  • Currently the application is a single page application. Should we continue down this path in the future? Can the application be re-assembled as separate modules?

Areas of improvement (continued)

  • There is a heavy reliance on jQuery. This reliance is also to multiple versions of jQuery.
  • Testing framework for the front end.
  • Excessive logging. Add proper logging only when needed and reduce the logging in production environment
  • There seems to be some sparse documentation. 
  • Build system for the front end(not one existing)
  • There is no usage of modern development tools i.e. Bower, Grunt or Gulp, Yeoman, and RequireJS as just a few examples.
  • The UI Layout does not take advantage of any grid layout.
  • Poor CSS structure.

architecture & Framework issues

Lethargic development cadence resulted from:

  • Age of the current JavaScript framework and libraries
  • Heavy reliance on Grails for:
    • Initial server side templating
    • Portions of the presentation logic
    • Testing
    • Build and deployment
  • Tightly coupled front end with back end and Grail technology:
    • ​Usage of lighter or more customizable web servers like NodeJS or NGinx
    • Bower and NPM for package management
    • Grunt or Gulp for task management

architecture & Framework issues

architecture & Framework issues

A monolithic application

Disadvantages of a monolithic application

  •  Tightly coupled front end with the back end. 

  • Restrictive infrastructure

  • Any change in the system will require a build and deploy of the entire system

  • Single point of failure

  • Scaling of the system require the cloning of the entire system

architecture & Framework issues

Elements Application - Current State

By Kianosh Pourian

Elements Application - Current State

  • 751