Product Engineering
52 resultsSecure Coding — OWASP Top 10 for Backend Engineers
Injection, broken auth, XSS, IDOR, and how to prevent each.
Progressive Delivery — Feature Flags, Canary, and Dark Launching
Techniques for releasing software confidently at any scale.
REST API Versioning Strategies
URL path, header, and query-param versioning compared with real-world tradeoffs.
REST API design principles we follow
Versioning, error formats, pagination, and auth patterns used across all Intersysop-built APIs.
JWT Authentication — Implementation and Security Patterns
Access tokens, refresh tokens, rotation, revocation, and common mistakes.
Multi-Tenancy Patterns — Database-per-Tenant, Schema-per-Tenant, and Row-Level
Tradeoffs for SaaS data isolation, compliance, and operational complexity.
SQL Query Optimisation — Indexes, Execution Plans, and N+1
Practical techniques for making slow queries fast.
Resilience Patterns — Circuit Breaker, Retry, Bulkhead, and Timeout
Prevent cascading failures with proven resilience patterns.
Observability — Logs, Metrics, and Traces
Implementing the three pillars with OpenTelemetry and making them actionable.
Database Schema Migration Strategies
Expand-contract pattern, zero-downtime migrations, and tooling.
CI/CD Pipeline Design — From Commit to Production
Stages, gates, deployment strategies, and keeping pipelines fast.
WebSockets — Building Real-Time Features
Connection lifecycle, heartbeats, reconnection logic, and scaling with Redis pub/sub.
Logging Best Practices for Production Services
Structured logging, log levels, correlation IDs, and log aggregation.
Distributed Tracing — Propagating Context Across Services
Trace context propagation, sampling strategies, and analysing traces.
Microservices Communication — Sync vs Async Patterns
REST, gRPC, message queues, and choosing the right pattern for each interaction.
OAuth 2.0 and OIDC — Implementing Secure Third-Party Auth
Authorization code flow, PKCE, scopes, and integrating with identity providers.
API Gateway — Responsibilities and Implementation Patterns
Authentication, rate limiting, routing, request aggregation, and when not to use a gateway.
Feature Flags — Safe Deployment and Gradual Rollout
Types of flags, implementation patterns, and avoiding flag sprawl.
API Testing Strategy — Unit, Integration, Contract, and E2E
Building a test pyramid that catches real bugs without slowing delivery.
Docker Containerisation Best Practices
Writing efficient Dockerfiles, multi-stage builds, security hardening, and image size reduction.
Database Connection Patterns in PHP
PDO, prepared statements, connection pooling, and transaction management.
Idiomatic REST API Design Patterns
Naming conventions, filtering, sorting, sparse fieldsets, and HATEOAS considerations.
Serverless Architecture — When Functions Work and When They Don't
Cold starts, event-driven patterns, cost model, and the right use cases.
Dependency Management and Supply Chain Security
Lock files, vulnerability scanning, SBOM, and keeping dependencies up to date.
Kubernetes Deployment Patterns for Production Services
Deployments, Services, Ingress, HPA, and resource management.
Container Registry Management and Image Lifecycle
Tagging conventions, vulnerability scanning, retention policies, and registry options.
Designing a Reliable Webhook System
Delivery guarantees, signature verification, retry logic, and consumer best practices.
Database Connection Pooling — Why It Matters and How to Configure It
Pool sizing, connection lifetime, and debugging pool exhaustion.
Implementing Search — From Basic SQL to Elasticsearch
Full-text search progression from LIKE queries to dedicated search engines.
Designing and Publishing API Client SDKs
Auto-generation vs handwritten, retry logic, versioning, and developer experience.
DORA Metrics — Measuring Engineering Delivery Performance
Deployment frequency, lead time, MTTR, and change failure rate in practice.
The Twelve-Factor App — Principles for Modern Services
How the twelve factors apply to real production services today.
OpenAPI Spec-First API Development
Write the contract before writing code — benefits, tooling, and workflow.
Background Job Queue Design
Idempotency, retries, dead letter queues, and job observability.
Async/Await Patterns and Common Pitfalls
Concurrency, parallelism, error handling, and avoiding common async bugs.
Implementing Rate Limiting in APIs
Token bucket, sliding window, fixed window — algorithms and implementation patterns.
Health Check Endpoints — Readiness, Liveness, and Startup
Implement correct health endpoints so orchestrators route traffic and restart containers appropriately.
HTTP Caching Strategies for APIs and Web Applications
Cache-Control headers, ETags, CDN caching, and cache invalidation.
API Documentation Best Practices
What makes documentation useful, tooling, and keeping docs accurate.
Event Sourcing and CQRS — Practical Implementation
Event store design, projection rebuilding, and operational realities.
Extracting Microservices from a Monolith
The strangler fig pattern, identifying seams, and avoiding the distributed monolith.
CDN and Edge Caching Strategy
Origin offload, cache key design, purging, and choosing a CDN.
gRPC Service Design — Protocol Buffers and Production Patterns
Proto file design, streaming, deadlines, interceptors, and error handling.
Semantic Versioning — MAJOR.MINOR.PATCH in Practice
When to bump each version number and how to communicate breaking changes.
Service Mesh — Istio and Linkerd for Microservices
mTLS, traffic management, observability, and the operational cost of a service mesh.
API Error Handling — Consistent Error Responses
Error format standards, HTTP status code usage, and client-friendly error design.
API Idempotency — Safe Retries for Mutations
Idempotency keys, implementation, and which HTTP methods are idempotent by definition.
Our observability stack for production services
Logs, metrics, traces — how we instrument every service we ship.
API Pagination — Cursor, Offset, and Keyset Patterns
When each method works, performance tradeoffs, and implementation details.
GraphQL vs REST — When to Use Each
Comparing query flexibility, over-fetching, tooling, and operational complexity.
Load Testing with k6
Script a realistic load test, interpret results, and find bottlenecks before they find users.
Message Queue Patterns — SQS, RabbitMQ, and Dead Letter Queues
Fan-out, work queues, priority queues, and poison message handling.