If you want to know how many software apps there are in the world, you won’t get a good answer. There are literally too many to count, and no one has a great way to figure it out. But you need tools to build your next great product, which means sorting through a lot of options.
When you’re creating your own software app or product, getting the right tech helps you achieve your goal faster.
Why is having a good tech stack so important?
Everything–all of your code, all of your databases, all of your user data–runs inside or on top of your tech stack. For any SaaS business, it’s the crux of your offering.
Building a tech stack isn’t just a matter of having a collection of great tools. It’s how you literally stack those tools and how they work together that makes it successful. Your tech stack forms the foundation of your app. To that end, most tech stacks are broken down into layers with six categories:
- Your application
- Programming Language
- Server Operating System
Your tech stack will encompass each of these areas plus databases, hosting providers and more.
A Tech Stack is Critical To Success
Your choice of tools, especially when you begin, is very important. This choice matters, because as you grow, it becomes harder and harder to change it. You need to consider tools that work now but also have the capability to scale as your needs grow. Everything you make and create will be built on top of the tech stack.
How Do You Choose The Right Tech Stack?
1. Identify your needs
You must identify what you need out of your stack. Do you have a small, medium or large app, and what actions will your app be doing? Think about what you’re trying to build and the functions that you’ll need to make that happen:
- High writes (Data warehousing for example)
- High reads (A website where the content does not change often)
- Number crunching (Processing statistics / Data analysis)
- Lots of data transport (Video streaming platform)
- Very dependent of what you want out of your app
If you’re starting out, you don’t want to build your own stuff in-house, unless that is your product. You want shortcuts, and often that comes with support. This means that the products you choose are actively developing new features and adding upgrades. You don’t want to be dependent on any part of your stack that may collapse in only a few short months.
What does this mean? It may not be a good idea to be an early adopter of a tool that is a key part of your tech stack. Your side project? Yes. Experiment there. Sometimes this means choosing a part of your tech stack that is backed by bigger companies or organizations, such as Amazon Web Services or a battle-tested database engine.
When you have more support from a product, that means more development and more libraries which means it’s easier to develop and work on. That maturity curve means there are more answers for you to tap into, with smaller bouts of latency.
For security, you need to keep three things in mind: prevention, detection, and response. That may mean including a few tools that are redundant to help you run tests and move data if there is a threat. The latest encryption technologies are just the start; you also need the right backups to ensure your data is secure. Much of this depends on the type of product that you’re building (for instance, a healthcare app with personal data needs a different level of security than your freemium gaming app). There are lots of tools for scanning websites to checking for DNS attacks or ensuring proper two-factor authentication. This comprehensive list will help you evaluate the security options that are available to you.
You need to be reasonable about your growth plans, but also not opt for the cheapest or newest technology right out of the gate. Your tech stack needs to reasonably reflect your expectations and provide a good on-ramp for growth. Much like the point about support, this means choosing technology that is scaling with you and can handle your new users and traffic at a reasonable rate. Any latency will hurt your growth.
There could be big costs in the long run if a bad choice is made in regards to scalability. Making changes to your tech stack eat up your time and money. Training the team, porting the application, and then extensive testing all would need to be done, and the majority of your users will hardly know the difference.
Top Tech Stack Tools
IaaS (Infrastructure as a Service)
1. Amazon Web Services (AWS): This is the biggest name in cloud computing with lots of support, and for good reason. AWS has proven itself time and time again as a leader in IaaS. It has millions of users and integrations with lots of other AWS services. It helps companies and products with computing power, database storage, content delivery and more. It’s one of the fastest-growing segments of the Amazon kingdom and is easily accessible. Lots of huge companies, such as the U.S. government, use AWS.
2. Microsoft Azure: Sure, Microsoft’s cloud division isn’t as big as Amazon’s, but it’s growing rapidly and provides a dependable alternative to companies that are considering the cloud. Much of Microsoft Azure’s capabilities are tied into its Office365 & Active Directory products, but they still provide cloud computing infrastructure and are trying to expand that part of the business.
3. Google Cloud: Google backs up their own services with Google Cloud, and began offering it to outside companies as well. They offer a computing engine, container storage and migration with similar offerings to AWS. This is another trusted brand that meets all of the requirements for a secure tech stack with plenty of support.
The database is arguably the most important component of the stack. All your application’s data should live inside of one. For example, a social network app database would contain users, posts, friends, groups, and pages. All of this type of organizational data that your users are accessing would live in a database.
4. PostgreSQL: This is an open-source relational database that is designed for structured data. It has 30 years of development history (wow!) and has the documentation to help find answers. Postgresql has long been ACID compliant, scales easily, and is almost always an option in hosted database solutions such as AWS RDS. With the introduction of JSON columns into PostgreSQL, even more has become possible when dealing with less structured data. It’s unlikely you’d be making the wrong decision going with Postgre.
5. MongoDB: As an alternative to SQL, MongoDB is designed to work with documents, each one able to have its own structure. MongoDB also boasts being able to horizontally scale out of the box, with sharding and clustering built in. MongoDB is also very fast (with the right data sets), and is gaining traction as a primary database for many different types of projects. However, with this also comes a unique set of disadvantages.
6. Redis: A database system that is great for caching and where you can quickly store and fetch single values of data. Strings, hashes, lists and sets can be queried using range queries, bitmaps, geospatial indexes and more.
7. ElasticSearch: As another NoSQL database, Elasticsearch is great with unstructured data. As a search engine at heart, ElasticSearch can quickly find information in huge datasets. Many applications opt to mirror their data from another database into ElasticSearch, which adds the benefits of fast searching to them. ElasticSearch has recently grown in popularity, and it’s backed by many large organizations, making it a compelling choice for tech stacks that can use it.
Programming Languages & Frameworks
Which programming language will you use to build your software, and will it be supported? Start with these options that provide support, security and ongoing active development. Consult with your technical founders and consult other programmers to see which language and framework best matches the type of app you’re building. When picking a language, you’ll also need to think about the availability of talent, and costs to license.
8. NodeJS & Express
Lots of famous applications built in the last decade have used Ruby on Rails, including Twitter, Basecamp, Hulu, Shopify and more. It’s a tried and true application with tons of support and a proven framework. The libraries are endless, and so are the forums. The “Rails way” provides lots of shortcuts and options that may hinder you if you’re coming from other programming languages.
10. Python & Django
Python is more widely used for data processing and data science applications, but that said it’s a general purpose language for both desktop and web apps. Its flexibility gives you the ability to support object-oriented or structured programming. The Django web framework is the best for helping with common Python tasks and is secure and scalable.
11. PHP & Laravel
Laravel is an open-source framework that follows model-view-controller architecture and has multiple ways to access relational databases. Laravel is a great framework for quickly developing an application. PHP has historically been very popular, and there is no shortage of community support. . Although it can be harder to scale than other options, many big names are powered by PHP, including Facebook, Slack, and WordPress to name a few.
Okay, now you’ve built your great web app…but you’ve got to deploy, scale and maintain it somehow. This is where the right web server comes in.
Being all about performance, Nginx takes pride in being able to serve thousands of users at the same time. Nginx is a premiere web server, designed to be secure and scalable with lots of durability. It’s great for streaming media and accessing large files, and it’s no surprise many large data companies like Cloudflare,Wordpress.com, Facebook, Gitlab, and Twitter use Nginx.
Do you want to quickly deploy or build for the long-term? That’s a huge question when making decisions about your tech stack. Be familiar with your tech stack and its implications, even if you’re not the technical lead on the product you’re trying to create. For instance, if you’re prioritizing low cost and flexibility, you may be switching parts of your tech stack in the years to come as you grow and scale.
Those decisions affect the whole organization. Keep in mind that the items listed here are not your only options, far from it in fact. There are many different tools you can use as part of your tech stack; however, do your research, and know the advantages and limitations of each and every component you use. Advice to remember is to consult with others who have built similar products in the past. Learn from their tech stack mistakes and consider their recommendations.