Technical Debt Management: How To Avoid Technical Debt?
Technical debt is the practice of intentionally introducing faulty code because it appears to have short-term benefits (faster development time etc.)
The other day, a seasoned developer came to us with a big “back end” problem.
No doubt, you are probably familiar.
They came on board with a new company to help scale product engineering. Quickly, they found out that prior decisions were NOT made with scale in mind. It was all about hustle to market. They called it “a nightmare.”
Developers and CTOs always ask us about scale for this reason. Non-technical founders or business leaders should, too. In both cases, investment dollars are wasted while financial risk is added to their startup, new product, or corporate use cases.
At 8base, we consider ourselves design thinkers, and our product philosophy takes a broader view of scale. We look at it three ways ‒ Teams, Features, and Resources ‒ the quick points below make up the summary and outline of this blog:
Features: CI/CD must be native. Multiple environments are mandatory. Custom code should scale, too (not just native functionality). And, testing is a fundamental requirement.
Resources: Serverless and scale are synonymous. Shared, dedicated, and self-hosted instances must be available. Both vertical and horizontal scalability should exist.
Not every BaaS does these things. Many claim to do them well but don’t.
Ensuring that the technologies you acquire for developing a product and managing processes do not become productivity bottlenecks for a growing team is mission-critical. While many platforms and tools make a "Team of 1" hyper-productive, those same technologies can quickly become limitations once hiring ramps up and new team members need to work in parallel and collaboratively.
At 8base, we've architected our platform and tools to accelerate development and enhance productivity, whether for a night-light engineer or 1000+ developer organization. Here are a few highlights of how we do so.
8base enables businesses/teams to organize best and manage their collective development efforts using 8base Organizations. Organizations allow for easy and centralized management of concerns like team members, workspaces, roles & access, and billing.
Thousands of projects have been kicked off on 8base using a Free Developer Account and Free Workspace. Those projects have grown into full-fledged startups and businesses with quickly-growing and ever-changing teams. 8base Organizations play a critical role in helping the managers of these projects maintain all 8base resources in an organized, efficient, and centralized fashion.
Many low-code/no-code platforms have developed proprietary languages and systems that require specialized talent. While these technologies may be effective, they significantly limit a business' ability to grow their teams due to experienced talent for these technologies being scarce. 8base avoids that pit-fall by only developing tools that require developers who know widely available and accepted programming languages and standards.
Additionally, the 8base Console exposes through an intuitive user interface many capabilities that have traditionally required syntax skills. As your business grows, there are more opportunities for team members who don't have syntax skills to become contributors to the development effort.
There are two environments in which a developer can work on an 8base project, the 8base Console and their local development environment. While in the 8base Console, developers can manage a workspace's data model, roles and permissions, and other resources, one's local development environment is where all custom code gets written, tested, and then deployed.
Multiple people can be working in/accessing the 8base Console simultaneously! Every 8base workspace subscription comes with a predefined number of developer seats that can be assigned to whomever you want to have access to a Workspace. If you need more than that number, all you have to do is purchase additional seats.
Now, when it comes to writing custom code in the local development environment, you can have 1, 10, 100, 100, or 10,000 ∞ developers contributing to your 8base project on ANY 8base plan. How so? As long as you set up your code deployment to get securely handled from a repository like GitHub with an API Token, there is no limit to the number of developers you can mobilize!
Safely developing new features in an existing application or project is critical to modern software development. The days of an application being "done" and then sold and shipped to customers are long gone. Instead, developers constantly have to tweak, update, and expand upon applications while applications are being used by and relied upon by customers.
The concern of Feature Scalability in a tech stack ensures that technologies and services do not introduce limitations or maintenance complexities for a growing product. Here are a few highlights on how 8base enables feature scalability.
8base successfully built a CI/CD system that's natively integrated into workspaces. This CI/CD implementation enables the ability to develop within completely isolated environments when adding new features and capabilities to applications. While users are utilizing your product/service – relying on a production environment – developers can build new features and functionality within development environments.
Workspace environments are easily configured using the 8base CLI to best suit any specific project's development cycle (CI/CD flow). Environments for production, staging, QA/testing, development, and different feature branches can be established – and even developer access configured – on a per-environment basis. As a result, developers can safely contribute to ever-expanding applications/projects while ensuring that their work doesn't break an existing version that users expect to be stable.
There is tremendous, if not infinite, flexibility in the types of features and capabilities that can be developed into your applications when using 8base. While it's easy to find a tool or platform that enables you to build Version 1 of your product quickly, too often that same service becomes a limitation when it comes to Version 2 – whether that's from it being too rigid or not extensible. Meanwhile, 8base exposes to developers the same tools leveraged in building 8base itself, providing the most flexibility in developing at the application level while introducing tremendously helpful and streamlined conventions at the architectural level.
The type of scalability that most often gets considered is Resource Scalability. The concern of Resource Scalability when curating one's tech stack has to do with ensuring that technologies and services do not introduce limitations for a product experiencing ever-increasing–or varying–utilization. Maybe your application supports 50 customers today, but could it support 50,000 customers tomorrow?
As a low-code platform built for supporting digital products, resource scalability is something 8base focuses on enabling above all else. Our customers range from solo developers with small hobby projects to full-scale business applications with 500,000+ users relying on the service. Both of those polar types of 8base users – and everyone in-between – have built their applications with an underlying 8base workspace! Here are a few highlights on how:
Every 8base workspace created is a 3-tier serverless architecture fully enabled on AWS; the tiers are API Gateway, AWS Lambda, and Aurora MySQL. Around those core layers, 8base has pre-enabled services like S3 for file storage, OpenID for API authentication, and other services. However, what's important to know is that 8base's workspace architecture has been proven to scale up – and down – seamlessly for all types of applications!
A great advantage to leveraging a serverless architecture is that your application computing resources become highly elastic and limited only by the cloud provider (in this case, AWS). You could have 10 API calls to your workspace today and 1,000,000 tomorrow, and the underlying serverless infrastructure would be able to handle both days' demand on a per-function-invocation basis. Contrast this to a more traditional server-side application, where you'd have to anticipate the capacity of your servers and provision them to handle the maximum anticipated load.
When a developer creates an 8base account and starts creating workspaces, those workspaces get created within 8base's shared instance. Our engineers actively manage the cloud infrastructure required to enable thousands of workspaces to run utilizing resources shared between customers, like database and cache servers.
In certain instances, applications begin to scale up and need to get moved to a dedicated instance of 8base. Maybe it's because the application requires an upsized database server! A dedicated instance means that we replicate 8base's underlying cloud infrastructure in a way where only a specific customer's workspaces leverage it, ensuring that there is no shared infrastructure between your workspaces and other customers!
Lastly, sometimes customers who have moved to a dedicated instance need to move to self-hosting 8base! Often this is due to a regulatory requirement, such as HIPPA or other. That said, 8base can accommodate that evolution of our customer's application requirements. With 8base Self-hosted, our team can instantiate a complete instance of 8base within your cloud provider (AWS or GCP) so that you have the full power of 8base running within your client ID.
Lastly, 8base's architecture allows it to be scaled out horizontally and vertically for your applications.
In horizontal scaling, workspaces can be replicated (manually or programmatically) to accommodate a single-instance single-tenant architecture or enable multiple microservices that serve any number of applications in parallel. Depending on the type(s) of applications you need to build, using multiple workspaces may be a relevant or necessary use case.
Meanwhile, vertical scaling can be accomplished on a per workspace basis! For example, a workspace experiencing an extremely high volume of database transactions would benefit from having its database tier upsized, whether or not it's running on a shared, dedicated, or self-hosted instance of 8base. Due to the modular nature of 8base's 3-tier architecture, accommodating these scenarios is easily accomplished by working with our support team!
That was a lot of information! We hope you found it helpful and insightful. To wrap things up, here is a quick recap of what got addressed and what's important to remember:
There are three dimensions to scalability; Team, Feature, and Resource
8base architects its platform and tools to scale across all three dimensions
Hundreds of products and startups have successfully scaled on 8base
If you're a developer interested in learning more about how to build applications leveraging 8base, we recommend checking out the 8base docs and our 8base Academy; and create an account to start building immediately.
If you're a project lead or executive interested in leveraging 8base at an organizational level, please connect with us here!