When you plan to create a web solution, you have to choose the right technology to build a solution that is scalable, maintainable and economic. In this blog I am going to share a robust end-to-end technology stack.This works perfectly for most of the web based applications. Though, in specific cases, you may choose different tools and technologies.
Choosing the right architecture and technology stack would help you a great deal in long run. Some of the advantages are -
You can stick to the core - You can choose to continue your focus on your core business which you are expert in. When you outsource your work to a reliable third party, you can expect good output without worrying about quality, time and cost.
Your solution would be sturdy, secure, scalable and easy to maintain
The solution will take less time to market
The cost of the solution implementation would be lesser
The end users would simply love to use your website
Below is the diagram of a typical web based solution with the technologies required.
Database Server (MySQL)
MySQL is the most popular open source relational database management system from Oracle Corporation. It is very fast, reliable, scalable and easy to use. It integrated well with almost all platforms. MySQL also supports full text search feature. The latest version available is MySql 5.6.
Web Server (Apache)
Apache is the most used open source web server system. It is easy to configure and makes a secure and robust web server. Apache is available for wide variety of operating systems. It is most commonly used on a UNIX like system. Ubuntu + Apache make a choicest combination for a scalable and economic web server platform. Apache 2.4 is the latest version which comes with new modules, features and enhanced performance.
App Server (PHP)
PHP is a cross-platform server-side scripting language which makes web pages dynamic. This open source app server is supported by all common browsers. Approx 85% of the total websites use PHP as server-side scripting language. The latest version PHP 7 is faster and provides easier error handling. Its robustness is perfect in long term perspective for a scalable system.
Session Management (Redis)
Redis is an open source in-memory data structure store. It supports wide range of primitive and non-primitive data structures which caters to various session storage requirements of an application. Features like built-in replication, LRU eviction, transactions, Lua scripting, along with efficient queries for fast retrieval make Redis a wonderful key-value storage option.
Cache Management (Redis / Memcached)
Redis also supports cache management with its in-memory data structure store.
Memcached is another good option for cache management. Memcached is an open source, high-performance in-memory caching system. It stores key-value for small arbitrary data (strings, objects) from results of database calls, API calls, or page rendering. It lets you scale your web application with ease.
Process Management (Redis + Supervisor)/>
The combination of Redis and Supervisor works fine for process management.
JobQueue data structure of redis is used to queue up the tasks. And Supervisor is used to control the processes to complete these queued up tasks.
Supervisor is a client-server system that lets you control numerous processes on UNIX-like operating system. It is simple to use and setup, The centralized process control system of Supervisor works efficiently even in case of process termination. Setting up priorities for processes is quite convenient.
Firewall & CDN (Cloudflare)
Cloudflare provides Content Delivery Network (CDN), Internet security services and distributed Domain Name Server (DNS) services. It works as a reverse proxy between the website user and website host server. It can be setup quickly and easily for a website. Apart from providing security to your website, it also increases its availability and load performance significantly.
Source Management (Git)
Git is an open source, source management system which is used for version control and source code repository for software development. When multiple people are working on a project, Git assures data integrity and smooth working.