RoadRunner is a high-performance PHP application server developed by Spiral Scout. It serves as a replacement for traditional PHP-FPM (FastCGI Process Manager) and offers a major performance boost by keeping your PHP application running persistently — especially useful with frameworks like Laravel or Symfony.
PHP scripts are not reloaded on every request. Instead, they run continuously in persistent worker processes (similar to Node.js or Swoole).
This eliminates the need to re-bootstrap the framework on every request — resulting in significantly faster response times than with PHP-FPM.
RoadRunner is written in the programming language Go, which provides high concurrency, easy deployment, and great stability.
Native HTTP server (with HTTPS, Gzip, CORS, etc.)
PSR-7 and PSR-15 middleware support
Supports:
Hot reload support with a watch plugin
RoadRunner starts PHP worker processes.
These workers load your full framework bootstrap once.
Incoming HTTP or gRPC requests are forwarded to the PHP workers.
The response is returned through the Go layer — fast and concurrent.
Laravel + RoadRunner (instead of Laravel + PHP-FPM)
High-traffic applications and APIs
Microservices
Real-time apps (e.g., using WebSockets)
Low-latency, serverless-like services
Feature | PHP-FPM | RoadRunner |
---|---|---|
Bootstraps per request | Yes | No (persistent workers) |
Speed | Good | Excellent |
WebSocket support | No | Yes |
gRPC support | No | Yes |
Language | C | Go |
Docker Compose is a tool that lets you define and run multi-container Docker applications using a single configuration file. Instead of starting each container manually via the Docker CLI, you can describe all your services (like a web app, database, cache, etc.) in a docker-compose.yml
file and run everything with a single command.
Docker Compose = Project config + Multiple containers + One command to run it all
docker-compose.yml
version: '3.9'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
redis:
image: "redis:alpine"
This file:
Builds and runs a local web app container
Starts a Redis container from the official image
Automatically networks the two containers
docker-compose up # Start all services in the foreground
docker-compose up -d # Start in detached (background) mode
docker-compose down # Stop and remove containers, networks, etc.
✅ Easy setup for multi-service applications
✅ Version-controlled config (great for Git)
✅ Reproducible development environments
✅ Simple startup/shutdown of entire stacks
Local development with multiple services (e.g., web app + DB)
Integration testing with full stack
Simple deployment workflows (e.g., via CI/CD)
NoSQL stands for "not only SQL" and refers to a broad category of database management systems that differ from traditional relational databases. The term "NoSQL" was coined to describe the variety of new approaches and technologies for storing and managing data that offer alternative models for data modeling and storage.
In contrast to relational databases, which are based on a table-oriented structure and use SQL (Structured Query Language) for querying and manipulating data, NoSQL databases use various models for data organization, such as:
Document databases: Data is stored in documents (e.g., JSON or XML format) that can be semi-structured or even unstructured. Examples: MongoDB, Couchbase.
Column-family databases: Data is organized into columns rather than rows, which can improve query efficiency. Examples: Apache Cassandra, HBase.
Graph databases: These specialize in storing and querying data in the form of graphs, making it easy to represent relationships between entities. Examples: Neo4j, ArangoDB.
Key-value databases: Each data object (value) is identified by a unique key, enabling fast read and write operations. Examples: Redis, Riak.
NoSQL databases were developed to meet the needs of modern applications that handle large amounts of unstructured or semi-structured data, require high scalability and flexibility, or operate in dynamic environments where requirements change frequently. They are well-suited for applications such as big data, real-time analytics, content management systems, social networks, and more.
It's important to note that NoSQL databases are not suitable for all use cases. The choice between a NoSQL and a relational database depends on the specific requirements and goals of your application.
Redis is a powerful and fast in-memory database that serves as a key-value store. The name "Redis" stands for "Remote Dictionary Server." It was originally developed by Salvatore Sanfilippo and is an open-source software released under the BSD license.
In general, Redis is used for a variety of use cases, including:
Caching: Redis can be used as a cache for frequently accessed data to improve application performance and reduce the load on databases.
Real-time data analytics: Due to its ability to read and write data quickly, Redis is often used for processing and analyzing real-time data.
Session management: Since Redis stores data in memory and allows very fast access to it, it can be used as a reliable session store.
Message Broker: Redis also provides features for the Pub/Sub messaging paradigm (Publisher/Subscriber), making it suitable as a lightweight message broker to distribute messages between different parts of a system.
Geospatial data processing: Redis has support for geospatial information and can be used to store and query geographical data.
Counting and ranking: Redis offers data structures like counters and sorted sets that are useful for ranking and statistical applications.
An important feature of Redis is that it keeps data entirely in memory, which makes read and write access very fast. However, this speed comes at the cost of data storage capacity, as the data is only available as long as Redis is running and there is enough memory space. Nonetheless, Redis also provides mechanisms for persistence to store data on disk and restore the database upon restart.
Due to its simplicity, speed, and flexibility, Redis has become a popular solution used in many modern applications to provide powerful and scalable data storage solutions.