How to install Docker
A simple installation for Windows, macOS, and Linux. At the end, you will check that Docker is really running.
Practical
Short procedures you can try right away. More guides will be added over time.
A simple installation for Windows, macOS, and Linux. At the end, you will check that Docker is really running.
From endpoint addresses through validation to clear JSON responses.
Safe authentication, reliable calls, and what to do when the other side does not respond.
How to turn a feed into a repeatable process that does not confuse prices or stock.
Verification, a quick response, and safe processing without duplicates.
Find the real bottleneck before adding cache without a clear reason.
What belongs in cache, how long data should stay there, and when to remove it safely.
Keep slow work out of web requests and make sure messages are not lost.
States, allowed transitions, and clear rules that keep an order under control.
A practical combination of idempotency, transactions, and safe webhook processing.
A clear three-service baseline for a local PHP project.
From a clean project to an environment that will not surprise you at the first deployment.
Pass dependencies clearly, test easily, and keep the container from taking over your design.
Split responsibilities so the code stays safe to change a year from now.
A gradual split without a large rewrite or unnecessary coupling between parts.
Start with people and their work. Only then draw screens and integrations.
Choose a process that saves the most time and can still be verified safely.
Agree the data, access, and errors before writing the actual request.
Set a source of truth, capture changes, and expect one system to be unavailable sometimes.
Do not let another service’s outage block your whole application or overwhelm the other side.
Retry only sensible failures, with a delay and a clear limit on attempts.
Wrap HTTP communication in a small client with clear requests, responses, and errors.
Choose between offset and cursor pagination and return everything the client needs for the next page.
Limit traffic fairly, share counters through Redis, and return a clear HTTP response when rejecting a call.
Separate identity verification from permissions and set safe token lifetime, storage, and revocation.
Keep routine changes backward compatible and introduce a new version only for a truly incompatible contract.
Keep entities focused on the domain, queries in repositories, and writes within one application operation.
Measure the query count, load the required data deliberately, and avoid pulling the whole object graph into memory.
Split schema changes into compatible steps and prepare verification and recovery before deployment.
Define one atomic operation, confirm it with commit, and safely revert changes with rollback after an error.
Find conflicting locks, use a consistent operation order, and retry only the complete safe transaction.
Design an index for a real query, verify the query plan, and account for write cost and index size.
Read the most expensive plan nodes, compare estimates with reality, and fix the cause instead of adding random indexes.
Store amounts without floating-point errors, keep currency explicit, and round by one agreed rule.
Read CSV as a stream, write in batches, and release ORM state continuously instead of loading the whole file.
Design documents and language analysis, synchronize data, and test relevance with real queries.
Return fast, relevant prefix suggestions without expensive wildcard queries or overwhelming the search cluster.
Separate permanently failed messages from normal traffic and define controlled inspection, repair, and replay.
Acknowledge only after success, distinguish retryable from permanent failures, and make processing idempotent.
Use cron as a time trigger, a queue for individual jobs, and combine both without creating duplicates.
Reserve stock atomically under a lock, prevent overselling, and safely release expired order reservations.
Separate market, language, and currency, preserve historical prices, and define localization, tax, and domain rules.
Share products and workflows while keeping tenant, domain, permissions, and local configuration explicitly scoped.
Move orders through an explicit workflow, publish events, and process slow work idempotently through a queue.
Choose a source of truth for every field, map stable identifiers, and design synchronization for outages and repeats.
Define a versioned XML or CSV contract, generate the feed as a stream, and publish it atomically on schedule.
Test observable behavior and important rules, mock only real boundaries, and verify integrations with real components.
Start with reproducible configuration, contain existing debt in a baseline, and fix new errors without growing exceptions.
Build one immutable image, run it consistently across environments, and separate migrations, configuration, and secrets.
Run Composer validation, PHPUnit, PHPStan, and CodeSniffer as separate checks against the same environment version.
Give AI bounded context and a verifiable task, review changes with tests and humans, and never expose secrets.