Which Software Technology Stack should I used to build my product?
![Which Software Technology Stack should I used to build my product? - Image 1](https://www.mytechlogy.com/upload/by_users/MYQSOFT/171611085432softwaretechologystacks.png)
A group of programs that provides the infrastructure for a computer and produces a result or achieve a common goal. Software stack also refers to any set of applications or programs that works to achieve toward a common goal. Installable files, software definitions of products and patches can be included in a software stack. One of popular Linux-based software stack is LAMP (Linux, Apache, MYSQL, Perl or PHP or Python) .WINS (Windows Server, Internet Explorer, .NET, SQL Server) is a popular Windows-based software stack.
In this article, we will explore these general considerations and highlight them using popular software technology stack choices for current web based and SaaS products.
Software technology stacks have many benefits:
- They provide predefined solutions to problems and at times are the best solutions.
- They provide the minimum software needed to achieve the intended goals.
- Software stacks can be installed on individual systems or added to computer templates for automatic installation.
- Software stack installation and functioning is the same for the same configurable systems. As such, the solutions provided are also consistent.
- Most of the software stacks come with support for the entire package. Some also have community forums.
So, what are some vital factors to consider when making a technology stack choice?
1. Time to market/productivity: Certain technology stacks can have productivity advantages in the early stages of a venture when the biggest threat is lack of a viable market. Lately, there is a lot of positive press around dynamic language based stacks (i.e. Javascript, PHP, Python, Ruby). The barrier to entry for new programmers to dynamic languages tends to be lower and there are many sample scripts that can be quickly copy/pasted for common problems such as uploading a file, sending an email, etc.
2. Engineering talent: Each generation of programmers tend to favor languages which have support in their peer group. As a result, it is important to consider the type of talent you need i.e. hipster hacker, enterprise developer, web scripter, scientist, etc. If you are in existing software business considers your lead developers and balance their preference against business factors. Many programmers enjoy experimenting with specialized languages (Clojure, Scala, Erlang, Haskell, server side Javascript, etc) and this could be a way of attracting them if it matches a product need. Occasionally, language preferences are tied to geography or large employers in the area. For instance, Seattle is host to developers well versed in the Microsoft C++/C# technology stack.
3. Maintainability: Each language and stack promotes a particular style of programming i.e. Object Oriented (OO) v.s. Functional or Strongly Typed v.s. Dynamic. The OO v.s. Functional debate has raged for decades and generally speaking the OO solutions matter when team size and complexity grows. There is considerable debate among advocates of strongly typed language (i.e. C++,C#, Java, Scala) frameworks versus dynamically typed ones (i.e. PHP, Python, Ruby, Javascript). Strongly typed languages generally support better tools. Non-mainstream languages can have the down side of compatibility issues and longer defect resolution cycles. It is less of a surprise that, mainstream strongly typed OO languages tend to have the most enterprise support where code base size, team size, and maintenance matters.
4. Scalability: Scalability refers to servicing more requests or customers with steady response times and cost. Scaling may occur on a level plane (more machines) or vertically (more figure per machine). In the event that your item will get substantial demand movement then it is imperative to consider the proficiency of the stack that you pick, since it will affect your operational cost and operational weight. For instance, at a late meeting a moderator demonstrated that a specific example application in CRuby was 30x slower than C, PHP was 8x slower than C, and a JRuby/JPython/Java usage was around 2x slower than C. For dialects which keep running on a virtual machine (C#, Ruby, PHP, Python, Java), the fundamental virtual machine turns into the bottleneck. The JVM (Java Virtual Machine) is right now viewed as a standout amongst the most advancement universally useful virtual machines and backings Java, JRuby, JPython, Scala, and a few different dialects.
5. Environment: Commonly the innovation stack decision is unequivocally impacted by the working requirements of the organization. For example, an organization creating local iPhone applications may be compelled to utilize Objective C – however you may even now have options for your server side programming. As a SaaS programming organization with little devops bolster you may influence a PaaS supplier, for example, Heroku/Google App Engine and depend on a stack they bolster. Consider precisely assuming all or some portion of your organization must be adjusted to a specific innovation merchant, bolster certain lawful prerequisites, or make tradeoffs in operational expenses. This could turn into your abrogating basic leadership figure however painstakingly adjust against the seller secure ramifications.
6. Community: A significant point in the decision of the innovation stack is the group. Dynamic and energetic groups bolster quick adjustment of programming to particular needs and fast bug fixes. It is difficult to overemphasize that when managing restricted assets, the group support ought to be solid. C/C++, C#, PHP, Ruby, Python, Java based stacks all have dynamic and dynamic groups.
7. Legal/Licensing: There are many software products today can be built using open source platform. The most important thing is to be aware of the type of license that software is open sourced under as future deals/M&A can be affected by it. GPL is generally considered the most commercially restrictive license. Most languages and their runtime environments are non-GPL, however, many libraries are GPL (or dual licensed).
As you consider these factors, it may be helpful to look into some of the popular choices. While non-exhaustive, this list captures most mainstream technology stacks used by current SaaS and consumer facing web products:
- Java: Spring/Hibernate, Struts, Tapestry, Play! (Scala)
- Javascript: JQuery, Sencha, YUI, Dojo
- PHP: CodeIgniter, Zend, Cake, Symfony
- Python: Django, web2py, TurboGears, Zope
- Ruby: Rails, Sinatra
- C#: ASP.NET
Web/App Servers
- Apache
- Tomcat
- Netty
- Ngnix
- Unicorn
- Passenger
- IIS
Relational Database
- MySql
- Postgres
- Sql Server
- Oracle
Operating Systems
- Linux (numerous versions)
- Windows
Cloud PaaS Solutions
- Heroku
- EngineYard
- CloudFoundry
- Microsoft Azure
- RedHat OpenShift
![](https://www.mytechlogy.com/view/images/edit_blog.png)
Thank you for sharing. Worth a read for all web developers.