Recently, I am delving into things as to how well we scale and engineer the web side of things (WoT). If there is no such word as WoT, there should be. I am super convinced as in today’s modern world (as we all call it), there are numerous resources to choose from. A plethora of plugins, stacks, code frameworks, etc. But, finding the right one and having the ability to scale is important. In this article, let’s walk as to what we need to build the right stack structure from the start. What should be your first technical point to the very last? So, let’s start.
First, we need to ask ourselves what are we trying to build. This is the very first question you should be asking yourselves. Having that clear objective will define the roadmap of your product. If you are creating a new type of scalable non-relational database architecture, then going with C/C++ be your language. But, if you are going with something web or enterprise then you have plenty to choose from. If you are in enterprise mode, then you have options like Java or C#. The two most popular languages. But, if you are going with the Web, then you have more choices. Like LAMP stack, Go, Ruby on Rails, and much much more.
In this age, everything can be coded into something. If you want to stick to the C/C++ programming structure, you have GO. But, if you want to have a friendly easy to learn language then you have Ruby and much more to choose from.
Here is a quick list I got from this source:
- Mobile development: Swift, Java, C#
- Game development: C++, C#
- Desktop applications: Java, C++, Python
- Systems programming: C, Rust
Add alt text
Gone were the days where we only had MS Access to start from (remember 2003, anyone?) and ‘Hello’ to today. How you want your data to be structured. That’s the first thing you should ask yourself. What’s your data purpose. Does it need to have a primary key relationship like a leaderboard or does it need to have a flat like structure. Maybe a JSON object to choose from? If then, you can go with any non-relational databases. A NoSQL database providers a mechanism for storage and retrieval of data that is modeled in means other than tabular relations used in relational databases.
Here is a great list of the top DBs by their popularity model (source):
Add alt text
Personally, I am a fan of ‘Relational’ DBs. However, if you are building a scalable web application system where you need clusters of nodes to be expanded in a short span of time, then this will give you a hard time. You then need to go with a more non-relational DB approach IMO. They both have their drawbacks. If you are going to create a more bank-type DB, then you need a relational structure where there are relationships involved. You cannot do that in a document model structure or a NoSQL structure.
So in summary, RDBMS’s suffer from no horizontal scaling for high transaction loads (millions of read-writes), while NoSQL databases solve high transaction loads but at the cost of data integrity and joins.
Application Performance Metrics
The next thing that comes to my mind is how you log everything and be able to scan without even touching your code. There are few insights tool out there which are pretty neat on finding out where your code is failing. I have used some of them like:
They both have their pros n cons. I won’t get into the detail as to which ones to pick from, but you can give it a go on this from your end.
This is perhaps the most important one as this is where you are going to save your capital or lose it. The decision to make as to how better you can create your DevOps varies. You can utilize open-source tools like Team City or Bamboo or you can go with enterprise versions like AWS, Azure, Google Cloud, etc.
There are several other ones that I didn’t bother including here as the world is an oyster when it comes to web stack. Hope you get something out of this.
Until next time…