Article
Tech Stacks: Insights on the Building Blocks of the Digital World
Tech stacks, also known as solution stacks, are combinations of technology “stacked together” and used to build modern digital applications. Think of tech stacks as the building blocks needed to create easy-to-maintain, scalable websites, web apps, and mobile apps. The “stack” includes programming languages, libraries, frameworks, patterns, UI/UX tools, custom software, cloud computing services, and much more.
In light of ongoing digital transformation across industries, every organization should understand the basics of tech stacks. With new tools and services being developed at a nearly constant rate, becoming technologically antiquated––even obsolete––is a veritable risk.
Consider the decline of newspapers and the subsequent creation of “news deserts,” which is an ongoing challenge in the media industry. The New York Times (admittedly, a much more well-resourced media organization than local or regional newspapers) faced the challenge head-on, appointing Jason Sobel as CTO. A TechCrunch article outlines the vital role a modern tech stack plays, regardless of one’s industry:
If every company has become a tech company, then The New York Times is a prime example. Although it launched as a print newspaper 171 years ago, in 1851, today that same company is very much a tech-driven media business.
While the transition has been ongoing to some extent for decades, the NYT brought in Jason Sobel in the summer of 2021 as chief technology officer to accelerate the transformation into a modern tech organization.
For The New York Times, the objective is to produce content and deliver it digitally. The technology architecture choices they make in light of that goal are essential. But for companies in FinTech, E-Commerce, insurance, real estate, or any other major industry––if the notion that every company has become a tech company is to be believed––rigorous solution architecture is equally vital, even if the ultimate goal or expected outcomes of creating a best-in-class tech stack is different.
In this article, we’ll break down some of the choices you’ll face when building a tech stack. If you’re confused about where to start or overwhelmed at the myriad choices, this article will provide an introductory primer to get started with the decision-making process.
What are the most common tech stacks?
Because each piece of technology in a tech stack impacts the functionality, performance, and scalability of your finished product, it’s crucial to understand the advantages and tradeoffs of each option. That said, there are a few common tech stacks to consider that provide a starting point, with options to customize depending on your use case.
Go-to tech stack configurations include LAMP, MEAN, MERN, and MEVN. Here are a few other stacks––and stack elements adjacent to our service offerings––that have worked for our clients in the past:
- For performant enterprise APIs: .NET Core stack with “clean architecture”
- For custom functionality built into WordPress: LAMP
- For a robust open-source stack: MEAN, MERN and other variations
- For mobile apps: Stack elements adjacent to general native development, Android (Kotlin), iOS, PWAs, hybrid cross-platform MVPs, and low-code options like Flutter
Factors to consider when choosing a tech stack
There’s no one-size-fits-all answer to this question. One of our biggest differentiators as a software development company is our emphasis on consultation. As indicated above, it’s important to consider projects on a case-by-case basis, ask the right questions, and build an authentic solution for your use case.
Rather than locking yourself into a specific set of technologies, start by considering what you need out of them.
Consider the tech stack cost
The cost difference between open source and enterprise tech stacks is often a big factor for smaller organizations and startups. While the highest-end business stack may be appropriate for some organizations, there are plenty of open source frameworks and tools available today that are just as robust, flexible, and scalable as your organization grows––and easy to modify if you outgrow them and have a solid base stack in place.
Evaluate your ecosystem
What ‘neighborhood’ do you want to live in? What tech stack ecosystem best fits your business? In some cases, your stack can reside within clear-cut boundaries. In others, leveraging a large collection of stack elements is a requirement.
Consider The New York Times’ website––with over a dozen news categories, a massive database of historical articles, cooking advice, and even on-website gaming, a huge range of technologies is required. While there are hundreds of configurations, the technology team at The New York Times chose several dozen technologies related to frameworks (Adobe Enterprise Cloud, Apollo GraphQL, Svelte, etc.), content delivery (Cloudinary, CloudFront, Amazon S3, etc.), Javascript functions (Sentry, Underscore.js, GSAP,etc), and much more.
While tech stacks have standard conventions, The New York Times had to consider the various specialty tools they needed to serve their unique user base and customize from there.
An alternative example would be if your product hinges on a specific service, in which case extending outside of a certain ecosystem isn’t always necessary. If your application relies heavily on cloud computing functionality, Microsoft Azure, Amazon AWS, and Google Cloud Platform (GCP) are all potential choices and have useful integrations under the same provider umbrella. Depending on which makes the most sense for your business, you could consider complementary tools that are friendly with Microsoft’s, Amazon’s, or Google’s other services.
Prioritize ease of use
The tech stack should serve your organization and your users––simplify and streamline where possible, empowering your devs to be effective, and focus on providing excellent user experience.
How much knowledge your team will need to build an application with the tech stack in consideration? Some frameworks and tools have a steeper learning curve than others, and some are quicker to set up. If your team is already well-versed in one ecosystem or one set of technologies, it’s worth considering whether adopting something entirely new makes sense. If you need to be able to deploy quickly, this is especially important to keep in mind.
Ensure high-end performance
Performance of a tech stack depends in part on whether the elements of the stack work efficiently with each other, whether the stack can meet the application’s requirements, and whether your organization has the right resources and experience to leverage a particular stack. Scalability, maintenance needs, and deployment speed are also affected by your choice of tech stack.
This is related to ease-of-use: how equipped is your team to manage and maintain the application as your user base evolves?
Plan for growth and scalability
It’s essential to consider your product roadmap––or create one if you haven’t––to see how your application will handle an increase in or evolution of users. While you may not have the insight you need to predict what features you’ll need as your user base grows, (this is where robust user research & testing are invaluable), you’ll still want to ensure your tech stack is set up to allow you to scale your application when the time comes.
Choose programming languages that are friendly with the other tools you anticipate being required to scale your application. Explore the lift of incorporating anticipated integrations and plan backward from there.
The ultimate goal is choosing a tech stack that allows you to quickly make adjustments to your application in order to handle growth.
Seven initial steps to plan your technology stack
There are various factors you’ll need to consider when building a tech stack. These are a few to consider out of the gate.
1. Outline your project needs
What kind of project are you working on? A platform for data analysis? This will have a different set of requirements than an e-commerce website. Spend time on the front end of the project diving deep into every defining factor of your application, then plan the stack around it.
2. Identify the key components of your stack
You’ll consider frontend, or “client-side,” technologies, including common elements such as:
You’ll also explore backend, or “server-side,” technologies, including:
And frameworks such as:
Database systems to store and retrieve data, via SQL databases, are an essential part of the process of building a tech stack. Common options include:
NoSQL databases are also an option, such as:
The server environment, which will allow your application to run, could be either on-premise (“on-prem”) or via cloud-based solutions such as:
3. Choose a programming language
Even if the choice seems clear, ask critical questions and consider the trade-offs:
- What makes the most sense for your type of project, based on what others are using or what you’ve used historically?
- What is your team’s expertise?
- What will yield the best development productivity while still allowing you to accomplish your goals?
- What is the support community like for your programming language of choice? Will more robust external support be needed based on your team’s capabilities?
4. Select a suitable framework or library
Looking to save time and build your application in a more structured environment? Frameworks and libraries provide an excellent opportunity to do so.
- Working in Python? Consider Django and Flask
- For applications build with Node.js, Express.js is popular
- Depending on the nature of the app being built, Angular and React can provide massive development ROI
5. Pick your database
Data structure and application scale are both vital, and thus, appropriate database selection is vital. MongoDB is excellent for applications that handle large amounts of diverse data. But depending on your unique project needs and organizational constraints, other options might make more sense. These include:
- SQLite
- Cassandra
- Redis
- Amazon DynamoDB
- CouchDB
- Elasticsearch
- Google Cloud Firestore
- Microsoft SQL Server
- PostgreSQL
- MySQL
- MariaDB
6. Decide on a hosting platform
The hosting platform you select must be able to handle your application’s load and traffic. This will vary widely depending on the app and its intended use (an internal facing app might have a dozen daily users; a social media app could have millions).
Amazon Web Services (AWS), Google Cloud Platform (GCP), and Microsoft Azure are prominent, highly-popular choices for hosting platforms. But depending on where your user base is located, your budget, and your team’s technical expertise, alternatives include:
- Netlify and Vercel (deploy websites with serverless functions)
- IBM Cloud (an option for apps leveraging IoT, Blockchain, and AI functionality)
- Heroku (build and run apps in the cloud; simple and easy to use)
- DigitalOcean (scalable platforms; cost-effective and developer friendly)
- Vultr (high-performance storage; low pricing with good ease-of-use)
- Linode (virtual private servers; affordable and robust)
- Alibaba Cloud (integrated e-commerce; suitable for Asian userbases)
7. Consider DevOps tools
DevOps is a set of practices that combines software development and IT operations to reduce the system, and DevOps tools automate and streamline these practices. Tools to consider are listed below.
- Version Control Systems (VCS) including Git, Subversion, and Mercurial
- Configuration Management Tools including Ansible, Chef Infra, Puppet, and SaltStack
- Containerization Tools including Docker, Podman, and containerd
- Performance and Application Testing Tools including JMeter, Gatling, Selenium, and Locust
- Orchestration tools, with Kubernetes being the most popular tool in this category
- Infrastructure as Code (IaC) Tools including Terraform, AWS CloudFormation, and Google Cloud Deployment Manager
- Continuous Integration/Continuous Deployment (CI/CD) tools including Jenkins, Travis CI, CircleCI, and GitLab CI/CD
- Monitoring and Logging Tools including Prometheus, ELK Stack (Elasticsearch, Logstash, Kibana), Grafana, and Splunk
8. Implement required libraries and middleware
Libraries and middleware provide specific functions or features for your application (authentication libraries, data processing libraries, etc.) and are vital to your app’s performance. Once again, the choice here relates to the rest of your tech stack, but commonly used options include:
JavaScript / Node.js
Python
Java
Ruby
9. Strategize for scalability, performance, and security
Your tech stack will need to handle growth in users, data, and traffic. Ensuring that your tech stack can be secured and supports encryption, secure user authentication, and access control is vital in light of modern security concerns and user expectations.
Tools to plan a tech stack
There are a few tools available to help you research and build your tech stack. Here are some of the ones we recommend looking into.
Builtwith –– explore the stacks used to build websites, technologies, and apps
Builtwith allows you to see the stack a technology is built with. Simply type in the name of the product you’re curious about and you can see a detailed list of the technologies used to build it. This is helpful for researching what apps with similar functionality to yours are using to accomplish their goals. Competitive research is crucial during design and development.
StackShare –– decrease tech debt and use data to drive your tech stack strategy
StackShare lets you learn about the best dev tools, cloud infrastructure services, and stacks, in addition to seeing what you’re using internally in aggregate (to decrease technology debt, for example) and identify opportunities for optimization.
Customized consulting –– meet with actual devs to get insight, recommendations, and plans of action
We sometimes refer to our approach as “principal driven software development.” Given that technology changes constantly, start with the wisdom of what works, develop a comprehensive understanding of your challenge, create flexible roadmaps, and plan for generative value now and in the future.
There are dozens of tools available and an increasing move toward automation. But with the myriad distractions facing decision makers, human-to-human interaction and tailored consultation are more important than ever.
Need more information? We’d love to learn more about your project or simply touch base.
As stated above, sometimes the best place to start with something as complex as planning a tech stack is with people. We love connecting with prospective clients and partners––or simply people seeking to learn more––so please don’t hesitate to reach out.
We’d be honored to learn more about your project and help you build a custom stack that positions your organization for success.