Challenge Overview
Challenge Overview
Welcome to Operation Absorb! In this exploratory challenge we are taking a close look at an existing system architecture and asking for recommendations on a modern application architecture which could support the application features. We’d want something where the thousands of lines of Java already written could be leveraged to some extent as well!
There is no code deliverable for this challenge. Please see Submission Guidelines for details on the expected deliverables.
Application background:
First check out the architecture diagram attached to the challenge. This should give you a good idea of how things are currently built. See JBOSS Seam in there? That is no longer supported, so at the very least, it needs to be replaced.
The Learning Management System (LMS) is an enterprise web application that enables users worldwide to access their virtual training. With this application, the training community has the ability to deliver, manage, and track training. Primary users of the system would be students where students can enroll to virtual trainings and launch course contents from the application. System administrators and course manager/instructors are the privileged users where they can create and manage courses available on the application.
Some of the core functionalities of the application includes but not limited to: administrators to create and manage courses, upload course content package to add course materials, students to view course catalog and enroll into courses, students to launch courses in the course player and the player tracks student progress, gradebook functionalities where students can view their progress towards course, students registration and account creation functionality.
The current version of the application is a single web application written in J2EE stack with JSF for the front-end and Java/JBoss Seam as the main framework. In the future generation of architecture, we would like to see more API based design with modular system approach. Another main consideration is the responsive design to make mobile friendly application.
Requirements:
With your understanding of the applications use case and existing architecture, please compile a new architecture diagram which will support the same feature using a modern technology stack in the cloud. Remember, the existing logic is written in Java and we would like to reuse as much as possible.
Along with your diagram compile a document which outlines each technology selected, and why you selected it. Explain in detail why your selection would be the strongest possible version of the new architecture. All participants in this challenge should be equipped to defend their decisions - we may ask you directly to explain your reasoning! The more you do this in the document the better the submission will be reviewed.
Final Submission Guidelines
Submit your submission files in a zip file. This zip must include:
- Architecture Diagram
- Documentation explaining technology decisions
- Documentation with recommendations on migrating to the new architecture
No code is required to be delivered in this challenge.