"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
-
Total: 137 request, 3.0 MB
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