In This Presentation
- Architecture Shape
- Main Rule
- Technology Examples
- API Result Cache
- Use the final checks to confirm the result.
Architecture Shape

Main Rule
The app server does not directly connect to internal services.
- App server sends requests to RabbitMQ
- RabbitMQ routes messages to the correct service
- Workers handle the requested work
- Results or status return through the queue
Core idea: internal machine communication is message queue traffic.
Technology Examples
The diagram names common course technologies, but the roles matter more than the exact product.
App Server
- Example: Apache + PHP
- Could be any approved backend
- Handles user-facing app logic
- Publishes work requests
DB Server
- Example: MySQL or MariaDB
- Could be any approved database
- Stores user and project data
- Stores transformed API cache data
API Result Cache
The database can cache API results, but not as a raw dump.
- API worker calls the external API
- API worker transforms the response
- App stores the cleaned result needed by the project
- Cached data should support user workflows
Cache the useful project data, not every field from the external response.
What Is A Job?
A job is a small request for another service to do work.
Examples:
- Fetch player stats from an API
- Process a user upload
- Refresh cached data
- Send a notification
- Write an audit or status event
A job should include enough information for the worker to act without guessing.
Job Message Shape
A message usually identifies:
- Action: what should happen
- A
typeproperty is used as a label in the example code in a future lesson
- A
- Payload: data needed to do it
- Such as user or app context when relevant
- CorrelationId for handling replies
- Status or error result when finished
The exact format can vary, but the message should be predictable.
Why Use A Queue?
- Keeps app requests fast
- Isolates backend services
- Makes work retryable
- Helps teams trace failures
- Reduces direct service coupling
RabbitMQ becomes the contract between parts of the system.
Summary
Before submitting the proposal, outline:
- The user-facing objective and main workflow
- The app server role and backend technology choice
- The database role and what project data it stores
- The external API and transformed data to cache
- The worker jobs the team expects to need
- How those jobs move through RabbitMQ
Ensure there are no direct VM to VM connections/requests beyond Message Queue
- This is a hard constraint on the architecture