AppGlue: New Technology Stack
Carl Hewitt
Fractional CTO – Innovative Technology & Strategic Leadership | Complex Technical Problem-Solving Expertise | Focused on Navigating Global Client Challenges | Hypergrowth Startup Scalability
There is a constant parade of different software frameworks and approaches. I have been designing and building software for 25 years and I cannot even begin to remember the the amazing assortment frameworks and technologies that have come (and gone).
When you build a product you make a choice as to what the macro design patterns and technology stack are going to be. These choices dictate much about the structure of your end solution. Once these foundations have been laid, it is very difficult to change them because many of the follow on design decisions are based on these choices.
Over the last few years there has been a coalescing around some patterns and technologies. These new frameworks and patterns, taken together, form a new approach - one that I am convinced represents a very different way to architect and build software.
One of my favorite books (as it relates to the idea of design and building) is the Fountainhead by Ayn Rand. The central theme of this book is that the shape of something (in the case of a book - buildings) should be dictated by its intended use and that new materials eliminate constraints that prior materials had. These new materials need to be considered when building so that we do not artificially design something built out of new materials with the constraints of old materials and techniques. Buildings with steel beams do not need so many posts to support upper floors, for instance. They can also be taller, rely less on the structure of walls for support, so windows can be larger, etc. New materials need to be respected and leveraged in the design phase.
The new 'materials' for building software allow a product to be built with substantially less code (50-70% reduction) with more responsive user interfaces that are easy to scale. They also help with deployment of new versions and can be deployed on rented (AWS, Azure, Google Cloud) infrastructure that is both better and cheaper than prior approaches. The sharing of server resources and on demand scaling/deployment eliminate the trapped idle cycles that other approaches suffer from.
What are the group of changes that are significant?
- Serverless deployment technology. Docker (And similar) frameworks constrain you to deploying small, deployable service hosts that can be spun up to handle increased load by the hosting platform (or stopped when load is reduced).
- Fully stateless middle tiers.
- NoSQL database. While RDBMS servers are great at many things, the nature of real world data is often complex, inter related objects, not flat rows. Having to manage the disassembly and reassembly of data objects into rows/columns is inefficient, error prone and un-needed in many cases.
- UX Frameworks (React, Angular, Vue).
- Delegated Authentication (SAML).
- Standard configuration and deployment (NPM, Docker Registry, etc). Using standard technology to deploy not only reduces the effort needed to build bespoke installation and deployment for a product, but also shifts the burden of learning and managing deployment to the technologies that are solely focused on this.
- Fully automated testing platforms. By building a system to be testable as a requirement, the system can be fully tested without manual effort ensuring that regressions do ht happen.
Taken together (along with a willingness to not adapt but rethink/start from scratch) the resulting technology is better:
- For user: its much more responsive
- For developers: it leverages much standard code and contains less moving pieces
- For implementors: easy to deploy and scale
- For customers: more reliable, lower total cost of ownership and faster ROI.
On September 27th, I am going to host a virtual event (2pm EST, mark your calendars) to demonstrate AppGlue. AppGlue was envisioned and built leveraging this new technology stack. It is 100% written in nodejs and typescript. It deploys ONLY into docker container infrastructure. It uses NoSQL database (pluggable, RavenDB and Mongo are provided out of the box) for datastorage. It is fully automated testing with over 3,000 tests to date and probably another 3-4,000 tests by september. It is fully multi tenant with all the normal patterns (switching teams, inviting people, requesting access, etc). It uses React on the front end to provide modular and responsive ui. Its pretty amazing technology (at least, its the best thing I ever built).
Mark your calendars and send me a note telling me you want to attend. [email protected]