Backend, the server side of the software, is an issue faced by almost every software project. It has to be created with possibilities of further scaling and maintenance. For many projects, the basic way to implement backend is LAMP – a bundle of technologies that can be utilized for creating static and dynamic websites, specific content management systems, social networks, tools for online collaboration, customized CRM systems, e-Commerce software, and so forth. If your business requires such products (a website being the most obvious one), LAMP can become a reliable, and what’s more, cost-effective solution.
What is LAMP?
LAMP is a ‘classic’ stack of server-side software. This acronym usually denotes the bundle itself, regardless of how this software is set up and configured on the server. Sometimes it denotes the ready set of preinstalled and configured software. There is a number of similar bundles for different operating systems with different variations: WAMP for Windows, MAMP for Mac, XAMPP (Apache + MySQL + PHP + Perl) for all major operating systems. But if we take the most widespread, basic bundle, it will be as follows:
“L”: Linux | Windows | Mac;
“A”: Apache Web Server (and other servers, such as Nginx);
“M”: MySQL | MariaDB | MongoDB (and other database management systems, such as PostgreSQL);
“P”: PHP | Python (and other scripting languages, such as Ruby).
This stack allows to develop a very wide range of web apps and websites. Its main advantage is simplicity in use. Lots of documentation, examples, and tried-and-true stability of software make this stack highly attractive, although not the most effective. However, the speed and cost of development is often more important for the software owner, than the abstract maximal efficiency and performance.
What products are usually created with LAMP?
– business card websites;
– corporate portals;
– content management systems (almost all popular PHP CMS are based on LAMP);
– moderately loaded social networks with a local, limited number of users;
– backends and APIs for mobile apps;
When you should and shouldn’t choose LAMP
There are certain inherent limitations, such as in websites and web services, which receive high computational loads. These are global social networks, hosting services for static files (in terms of terabytes), systems of video storage and processing, high-load streaming of audio/video.
For development of such products must be used more specific software on ”A” and ”P” levels. In terms of development costs, it’s most effective to substitute parts of the system, which means leaving the less loaded part to, for example, PHP. Meanwhile the high-load part (with asynchronous and time-consuming operations) can be left to, for example, Node.JS. One can also utilize Nginx proxy server to increase the efficiency of processing network queries, as well as to control server overloads, such as DDOS attacks.
MySQL is a great starting option from the standpoint of load on data storage systems in databases. It allows to scale the load to a certain limit. For large amounts of data (such as comments in large social networks) one can reasonable use such system as MongoDB, which allows more flexible scaling of large volumes, and which won’t require laborious and time-consuming adjustments.
We can also note that new web technologies do not stop emerging and developing. So do the stacks, such as The MEAN Stack (MongoDB, ExpressJS, AngularJS, Node.js), which is very suitable for interactive real-time software, with complex graphical UI – chats and systems for online collaboration, like Google Docs.
Thus we can see that LAMP is good in many cases, and if the complexity goes a little further, it’s quite possible to find a solution.