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.
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?
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)
- PHP: CodeIgniter, Zend, Cake, Symfony
- Python: Django, web2py, TurboGears, Zope
- Ruby: Rails, Sinatra
- C#: ASP.NET
- Sql Server
- Linux (numerous versions)
Cloud PaaS Solutions
- Microsoft Azure
- RedHat OpenShift