What Is Full Stack Development?
It is almost impossible to create a full-fledged software product using only one technology. This usually involves complete tech stacks – Standard combinations of tools and programming languages. As all software products consist of the client side and a server, there are usually two separate stacks that cover each of the layers. However, there are approaches that can be used to build web or mobile application from A to Z. These are called full stack development.
Accordingly, a generalist that has broad skills across all aspects of product engineering is usually called a full stack developer.
Being considered unicorns due to their rare expertise and versatility, they are in high demand for large companies and startups alike, from Facebook and eBay to Munchery, Betterment or Tinder.
As an idea of a person equally proficient at HTML/CSS, Python, and SQL has become more of a myth, the approach towards acquiring new skills and learning quickly has led to the appearance of specialists strong in one particular stack. Let’s see what the most popular stacks are and how they’re used.
LAMP Stack: Linux, Apache, MySQL, PHP
LAMP has been a popular choice for web development since 2000 due to its open-source nature and Linux’s friendliness towards developers. It includes Linux operating system, Apache web server, MySQL database, and PHP application software. Recently, LAMP stack has been slowly transforming into LEMP, with more and more developers replacing Apache web server with NGINX. Although Apache is used by the lion’s share of existing websites, it’s taking losses while NGINX is rapidly growing.
LAMP/LEMP stack is easily modified, traditional, secure, and free – a great choice for enterprise apps and prototypes that often require a high level of customization along with cost-effectiveness. With the full access to the source code and an ability to mix and match components of the stack, developers gain great flexibility and can make custom choices depending on each specific application.
MEAN Stack: MongoDB, Express, AngularJS, and Node.js
Ruby on Rails: Ruby, SQLite, PHP
Often called just Rails, this web development framework uses Ruby as a programming language and its own default database called SQLite with various compatible web servers such as Apache, NGINX, Passenger, or WEBrick. According to GitHub’s year in review, Ruby is 4th most popular language of 2017, and Rails augments it and makes it possible to write a website on Ruby. Rails owes a part of its popularity to Ruby – the language’s clean syntax helps you build complex websites quickly and happily (at least, that’s how the Ruby’s creator would like developers to feel).
Rails is especially popular among startups due to various reasons. The abundance of shareable software libraries called RubyGem allows businesses to develop rapidly using free and existing components. Also, simplicity that lies in the foundation of Rails’ philosophy is expressed in such principles as Convention Over Configuration and Don’t Repeat Yourself that minimize your code and help you make less decisions.
Django Stack: Python, Django, MySQL
Instagram, Mozilla, Bitbucket, and the NASA’s website are all powered by this Python-driven environment. With the attention towards such technologies as machine learning and big data that majorly rely on Python, the language popularity is steadily growing, according to TIOBE and StackOverflow. Django follows the “batteries included” approach meaning that all of its functionality already comes with the framework and doesn’t require additional libraries. Thanks to this, Django relieves you from making many choices and makes it possible to create news, blogs, or eCommerce stores with its abundance of default tools. With its broad range of tutorials, a supportive community, and a clean and rapid development experience, Django is perfect for starting Python programmers. If you want something different from what this stack can offer, look into smaller packages such as Flask and Pyramid, each with its own level of flexibility and best use cases.
Aside from choosing between the existing software packages, you can compose your own stack by looking at the technology used by popular websites and applications. If you want to build a new Yelp or Reddit, check out the portals like StackShare and TechStacks for the lists of all main technologies applied.
As for the database, almost any MongoDB alternative can be used: MySQL, PostgreSQL, Apache CouchDB or Apache Cassandra.
⊕ Common language, better team efficiency with less resources
⊕ Extensive code reuse
⊕ High performance and speed
⊕ Huge talent pool
⊕ Extensive knowledge base
⊕ Free, open source toolset
Yet, no technology is perfect. Despite all the benefits the full stack approach offers, there is always some drawbacks to be aware of.
Θ Insufficiency with computation-heavy back end
When it comes to heavy computation and data processing on the server side, Node.js is not the best option. There are lots of far better technologies to handle projects like machine learning, algorithms, or heavy mathematical calculations. Having a single CPU core and only one thread, that processes one request at a time, it might be easily blocked by a single computational intensive task. While the thread is busy processing the numbers, your application won’t be able to work with other requests, which might result in serious delays. Yet, there are numerous ways to overcome this limitation. By simply creating child processes or breaking complex tasks into smaller independent microservices, that use more suitable technologies and communicate with your back end, you can handle complex computational tasks in Node.js.
Θ Relatively young technologies
Θ Jack of all trades, master of none?
Θ Drawbacks of every separate tool in the stack combined
As every technology stack, MEAN combines the weak sides of all 4 its elements. Most of them are minor technical limitations, which appear under certain circumstance. However, in order to use the stack, it’s important to realize possible bottlenecks of every tool and adjust your development strategy accordingly.
The Use Cases
- Real-time peer-to-peer applications and services (multi-user chats, social media platforms, online games, collaboration tools)
- The Internet of Things
- eCommerce solutions
- Fintech products (e.g. real-time stock broker’s dashboards)
- Enterprise web solutions
- Application/system monitoring dashboards, admin panels.
This post is a part of our “The Good and the Bad” series. For more information about the pros and cons of the most popular technologies, see the other articles from the series: