1 Problem Domain
1.1 Engineering Adoption
In the past, applications were relatively simple and flat. They ran on a single system and were accessible only from that system. Children and educators could easily pick up a book on Basic and create simple applications. This led to a high level of engineering adoption throughout the 1970s and 1980s.
Unfortunately, as our world grows more complex, our modern application architecture also grows more complex. In our highly interconnected world, applications now exist as a series of layers running on multiple machines (or machine environments). We call this the application stack.
Each layer of this stack requires a different set of skills in order to code effectively. And none of these layers functions independently.
The unfortunate result of this complexity is that the first web application written by a new developer comes as the result of hundreds of hours of study and grueling work, and an experience consisting mostly of failure.
1.2 Prototyping
The complexities of modern systems pose a problem not only in the educational space, but the professional space as well.
Even highly educated senior engineers do not always have the time to invest in creating a complete web application from front to back. Often we need to prototype a system that may well be thrown out.
Code generators can mitigate this problem to some extent. However, often code generators leave you with a system of complex code that is difficult to work with after initial generation of the system.
2 The Rapid Stack Solution
Rapid Stack dramatically reduces the lift in getting a functional web-app up and running by leveraging widely used open source technologies. It gathers all the layers necessary for a modern web application and places them into separate machine environments (Docker containers).
A Docker compose script provides all the configuration necessary to launch this system on the developer's machine, providing an excellent sandbox for experimentation.
The application itself provides several modern features, such as tokenized authentication and single-page application routing. This is not generated code. These advanced features are provided through custom code that would be difficult for a novice to create and tedious for the advanced.
This boilerplate code provides a solid foundation to rapidly create your application so that you have immediate results with less frustration.
Most importantly, all choices made and all code written came from the philosophy of doing the simplest thing that can possibly work.
For this reason you will find navigating and working within Rapid Stack refreshing. For example, the web services that provide authentication and user management exist in a single file of around 100 lines of code. You can work at any level of the stack with nothing more than a text editor.
2.1 Low Cost and Low Risk
After cloning the Rapid Stack repository, issuing the command docker-compose up
will build and launch all required containers for the application.
Furthermore, there is an optional Docker container for the Vue.js CLI development environment itself. By building this container, you get a clean isolated environment for experimenting with Vue.js. You do not have to seek out and download individual dependencies to your host machine. There is no need to manually cobble together a development environment.
For these reasons you can onboard a developer onto an existing Rapid Stack project and provide a complete development environment in minutes.
2.2 Technologies Chosen
At present, Rapid Stack is a prescriptive solution that makes many architectural choices for you. This is partly to mitigate the paralysis that comes from an abundance of choice and partly in an effort to choose technologies that are proven and accessible.
However, the experienced engineer will find the code well organized and the layers themselves highly decoupled. You may readily substitute the technology of your choice. Additionally, Object Computing, Inc. (OCI) stands by to assist in all your application needs.
The stack itself consists of the following:
- A backend data store
MongoDB - Server-side REST services to interact with the data store and manage user accounts and authentication
Python and Flask - Client-side single-page web application capable of asynchronous JavaScript processing
Vue.js - Web server
Nginx
3 Summary
Rapid Stack was designed to encourage software engineering innovation, provide painless prototyping, and ultimately make coding fun again.
The low cost and low risk of Rapid Stack adoption will lead to a creative freedom that developers don't presently have. You can now enjoy the ability to experiment with ideas that you might otherwise dismiss due to lack of time or experience.
The ability to rapidly stand up, experiment, and tear down without fear or risk is critical to innovation.
This is Rapid Stack.
Consulting & Strategy
Outcome-focused, real-world practicality combined with courageous innovation
Technology & Transformation
Expert engineering from project initiation to deployment and beyond
Technical Leadership & Support
Empowerment to scale your solutions long after our engagement has ended