What is a Technology Stack?
As tasks increase in complexity, the number of tools required to complete them also tends to increase. Consider a basic home improvement task like hanging a painting: with just a hammer and a nail you can finish the job. Now imagine how many tools you would need to build a house from the ground up: measurement tools, hand tools, electric saws, and the list goes on.
This same principle can be applied to computing. For a simple task like editing an image or maintaining a database, you might need just one application, but larger and more complex tasks will require many different hardware and software tools working together to achieve the end result. If your goal is to build and run your own application, you will need to deploy several hardware and software solutions that work together to deliver the desired features and services - you'll need a technology stack.
A technology stack includes all of the hardware and software systems that are needed to develop and run a single website, web app or mobile application. Software developers can use a pre-configured technology stack as the platform for developing a new application, or they may design a technology stack by choosing and incorporating software that meets their unique requirements.
Components of a Technology Stack
There are two major components needed when creating a web-based application: front end development and back end development. The front end consists of everything that the customer will see when they interact with the application through their device, whether it be a desktop computer, tablet or mobile phone. The back end consists of everything that happens behind the scenes to make the application work. The terms "front end" and "back end" may be interchanged with "client-side" and "server-side".
There are individual software tools, programming languages and entire development kits geared towards front-end development optimizing the user experience. At the same time, a whole different set of tools may be used to facilitate back-end functions that support application microservices.
Front-end systems are usually built around three common technologies:
- HTML5 is the latest version of the Hypertext Markup Language which is used to structure and present website content. While older versions of HTML required proprietary plugins and APIs to load certain elements (Flash plugin, Shockwave, etc.), the newest version allows these elements to run on their own without requiring additional plugin installations.
- CSS3 is the latest version of the Cascading Style Sheets language. CSS allows developers to describe visual features in the presentation of web pages using code, including things like shadows, gradients, page layouts, and others.
Back-end systems are the underlying infrastructure that powers the front-end user experience. They consist of several different types of software components:
- Programming Languages - Services in the back-end can be designed and implemented using a variety of different programming languages. Three of the most common are PHP, Python, and Ruby. The PHP language is script-based and useful for automating back-end tasks. Python is a general-purpose language with a range of applications. Ruby is a widely used language for back-end programming that was designed for simplicity and ease-of-use. Companies that use Ruby include Hulu, Twitter, ZenDesk, and Shopify.
- Databases - A database can be described as an organized, searchable collection of information structured into elements and attributes. Databases in the back end score data that can be queried by users. Common database applications include MySQL, PostgreSQL, and MongoDB.
- Web Frameworks - A web framework solves two major problems that are associated with application design: routing and templates. When the client requests a URL, the request must be mapped to a piece of code that is meant to handle that request. When information is retrieved from a database, HTML must be dynamically created to present that information to the user. Web frameworks ensure that user requests are routed correctly and support templates for dynamic HTML creation. Common web frameworks include Ruby on Rails, Django and Laravel.
- Runtime - Every programming language consists of two elements: syntax and an execution model. The syntax defines how code should be written in that language and the execution model defines how code that is written a given way should be resolved. Runtime environments are programs that implement portions of the execution model for a given application. The runtime may be triggered when a particular service or microservice is called and perform background tasks to help the program do what it is meant to do. Notable runtimes include Node.js, Java virtual machine, Objective-C and Android Runtime (ART).
- Servers - A server is a machine that provides services and functions for clients. An application runs on either a physical or virtual server. Servers receive requests from clients through the internet, process and prioritize those requests, and provide the computing power necessary to fulfill them. There are different types and configurations of servers that may be deployed as part of the technology stack, including file servers, database servers, mail servers, application servers, and others.
- Operating Systems - Operating systems are software solutions that allow users to run other applications on a hardware device. Operating systems are the interface through which servers, runtime, web frameworks and other software components of the technology stack access the computing power and resources needed to perform their functions. Operating systems consist of a kernel, user interface, and application programming interfaces. The most common examples are Microsoft Windows, Mac OS, iOS, Linux and Android.
Implementing Your Technology Stack in the Cloud
Many software developers today choose to deploy portions of their technology stack in the cloud to reduce the administrative complexity associated with app development. Cloud service providers like Amazon Web Services (AWS), Google Cloud Platform and Microsoft Azure can deliver software development platforms through the cloud with the Platform-as-a-Service (PaaS) cloud delivery model.
In the PaaS service model, cloud service providers manage and secure networking capabilities, application and storage servers, virtualization services, operating systems, runtime, and web frameworks. This allows developers to focus more narrowly on building and maintaining the application, while the cloud service provider manages the infrastructure used to build and deliver the application.
Sumo Logic Helps Secure Your Technology Stack in the Cloud
Deploying components of your technology stack into the cloud can help reduce costs and streamline development, but it may also create more potential attack vectors for malicious cyber attacks. Sumo Logic's cloud-native platform addresses cloud security with robust security analytics, including threat intelligence, threat detection and incident response capabilities that help to identify and repel malicious cyber attacks.