October 17, 2026
The Quiet Cause of Sporadic 502s: Idle Connection Timeouts and Keepalive Ordering
Load balancers, proxies and application servers close idle connections on different clocks. Get the order wrong and random 502s appear after quiet periods. The...
guvenilirlik
backend
performans
Read more →
October 16, 2026
Why Published Docker Ports Bypass Your Firewall: UFW, the DOCKER-USER Chain and the Bind Address
UFW reports that every incoming connection is denied, yet a port published by Docker can still be open to the internet. The path a packet really takes, closing...
docker
guvenlik
linux
Read more →
October 15, 2026
The Get-or-Create Race: Duplicate Rows Under Concurrency, Unique Constraints and ON CONFLICT Traps
Check-then-insert is flawless for one request and quietly produces duplicates under parallel ones. Why application locks fall short, why a unique constraint is...
postgresql
backend
guvenilirlik
Read more →
October 14, 2026
Ransomware Resistant Backups: Object Lock, Versioning and Separating Writer from Deleter
A backup that production can delete is a backup an intruder can delete. The two object lock modes, append only identities, where the key lives, and how this com...
yedekleme
guvenlik
felaket-kurtarma
Read more →
October 13, 2026
Using Redis as a Data Store: Memory Policy, Persistence and Its Limits as a Queue
Redis arrives as a cache and ends up holding sessions and the job queue. Choosing maxmemory-policy, the cost of RDB versus AOF, what async replication loses, an...
redis
backend
performans
Read more →
October 12, 2026
Finding Out What Actually Filled Up: inodes, Deleted but Open Files and Reserved Blocks
"Disk full" maps to at least three different conditions: blocks, inodes and space reserved for root. Same symptom, different remedy. How to measure before you d...
linux
operasyon
guvenilirlik
Read more →
October 11, 2026
PostgreSQL Autovacuum and Table Bloat: Dead Tuples, Transactions That Block Cleanup, and Per-Table Tuning
Default autovacuum thresholds let cleanup fall behind on large tables. How to measure bloat, find the old transactions that freeze cleanup, tune per table, get...
postgresql
performans
operasyon
Read more →
October 10, 2026
Hardening Services with systemd: ProtectSystem, DynamicUser, System Call Filters and the Options That Break Things
Shrinking a service's attack surface from the unit file without reaching for containers: a starting template, measuring with systemd-analyze security, and the p...
linux
guvenlik
operasyon
Read more →
October 9, 2026
Cardinality Explosions in Prometheus: Choosing Labels, What a Series Costs and Stopping It at the Source
Every unique label combination is its own series, and one unbounded label can run Prometheus out of memory. Measuring series counts, the closed-set rule for lab...
gozlemlenebilirlik
performans
sre
Read more →
October 8, 2026
The Real Client IP Behind a Reverse Proxy: X-Forwarded-For, Trusted Proxies and Spoofed Headers
Behind a proxy, an application only learns the client address from a header. Reading X-Forwarded-For from the right, defining trusted proxies by address, nginx,...
guvenlik
backend
altyapi
Read more →
October 7, 2026
Build Once, Promote by Digest: Shipping the Exact Image You Tested
Rebuilding after the release tag means the bytes you tested are not the bytes you ship. Pushing candidates by digest, tagging that same digest once tests pass,...
ci-cd
docker
devops
Read more →
October 6, 2026
Time-Dependent Flaky Tests: Wall Clocks, Failures Under Load, Second Rounding and Fake Clocks
Why tests tied to the wall clock (fixed sleeps, short timeouts, duration assertions, single-instant "not yet" checks) fail precisely under load, how to measure...
test
ci-cd
guvenilirlik
Read more →
October 5, 2026
Publishing Packages Without Long-Lived Tokens: Trusted Publishing with OIDC on npm, PyPI and crates.io
A publish token sitting in a CI secret leaks, expires and is broader than it needs to be. Trusted publishing swaps it for the CI system's OIDC identity and a to...
ci-cd
guvenlik
sir-yonetimi
Read more →
October 4, 2026
PodDisruptionBudgets and Node Drains in Kubernetes: Writing the Budget and Why Maintenance Gets Stuck
A PodDisruptionBudget only limits voluntary disruptions, and a badly written one either protects nothing or blocks node drains forever. Choosing between minAvai...
kubernetes
yuksek-erisilebilirlik
operasyon
Read more →
October 3, 2026
Zero-Downtime Secret Rotation: Dual Keys, Alternating Users and the Consumers Left Behind
Rotation outages are caused by consumers, not by the value. Overlap windows, dual keys and alternating users, measuring the cutover, and the long-running proces...
sir-yonetimi
guvenlik
operasyon
Read more →
October 2, 2026
Point-in-Time Recovery in PostgreSQL: WAL Archiving, pgBackRest and Restore Traps
A nightly pg_dump means losing up to a day of data. How to rewind PostgreSQL to one second before a bad query with physical backups and a continuous WAL archive...
postgresql
yedekleme
felaket-kurtarma
Read more →
October 1, 2026
The Transactional Outbox: Writing to a Database and a Queue Without Losing Events
Why commit-then-publish loses events, how to build an outbox table, whether to relay by polling or CDC, and how to avoid the sequence gap, duplicate delivery an...
mimari
kuyruk
backend
Read more →
September 30, 2026
API Rate Limiting: Token Buckets, Choosing the Right Key and Distributed Counter Pitfalls
Why fixed windows let twice the limit through, why the IP address is a poor key, how INCR plus EXPIRE in Redis can block a client forever, and why you should an...
api-tasarimi
backend
guvenilirlik
Read more →
September 29, 2026
DNS Resolution in Kubernetes: ndots, Search Domains, CoreDNS Caching and the Five-Second Stalls
Why a pod turns one external lookup into eight DNS queries, what lowering ndots breaks, when autopath and NodeLocal DNSCache are worth it, where the exact five-...
kubernetes
operasyon
performans
Read more →
September 28, 2026
PostgreSQL Connection Pooling: PgBouncer's Three Modes, the Prepared Statement Trap and Multi-Tenant Sizing
How to choose between session, transaction and statement modes, what breaks in transaction mode, why the prepared statement error only appears under load, and h...
postgresql
performans
multi-tenant
Read more →
September 27, 2026
Custom Domains in SaaS: Ownership Verification, CNAME Targets and TLS Traps
Serving a SaaS from a customer's own domain is not a single CNAME record. Tenant routing, proof of ownership and certificate issuance are three separate problem...
saas
multi-tenant
guvenlik
Read more →
September 26, 2026
Kubernetes Resource Requests and Limits: CPU Throttling, OOMKilled and QoS Classes
A request is the scheduler's reservation, a limit is the kernel's quota. Why CPU gets paused while memory gets killed, how QoS classes decide eviction order, an...
kubernetes
performans
operasyon
Read more →
September 25, 2026
Zero-Downtime Schema Migrations: Expand and Contract, Locks and PostgreSQL Pitfalls
Rolling deploys are not enough; a schema change breaks the moment old and new versions run side by side. How to migrate PostgreSQL without downtime using expand...
postgresql
backend
saas
Read more →
September 24, 2026
Stateful Resources Under Helm: Renames, resource-policy and CRD Pitfalls
Helm deletes a renamed PVC, restarts a StatefulSet on empty disks, regenerates passwords on every upgrade and never updates a CRD. Why data gets lost when state...
kubernetes
devops
operasyon
Read more →
September 23, 2026
Automated TLS Certificates with ACME: Validation Method, Rate Limits and State You Must Keep
Choosing between HTTP-01, DNS-01 and TLS-ALPN-01, where Let's Encrypt rate limits will catch you, the state you actually need to back up, and pitfalls like spli...
guvenlik
altyapi
otomasyon
Read more →
September 22, 2026
Zero-Downtime Deployments in Kubernetes: Probes, preStop and Getting Graceful Shutdown in the Right Order
A rolling update alone does not give you zero downtime. Unless readiness and startup probes, a preStop delay, terminationGracePeriodSeconds, maxUnavailable and...
kubernetes
guvenilirlik
operasyon
Read more →
September 21, 2026
Silent Failures in Bash Scripts: set -e, pipefail and Where Strict Mode Abandons You
set -euo pipefail does not make your script safe, it only gets you started. -e switching off inside function bodies, pipefail failing on SIGPIPE, -u ignoring em...
linux
otomasyon
operasyon
Read more →
September 20, 2026
Why Scheduled Jobs Break Quietly: Missed Runs, Overlap and Single Instance in cron, systemd Timers and Kubernetes CronJobs
Scheduled jobs break quietly in three ways: the missed run, the overlapping run and the failure nobody sees. How cron, systemd timers and Kubernetes CronJobs an...
linux
kubernetes
operasyon
Read more →
September 19, 2026
Enforcing Policy in Kubernetes: OPA Gatekeeper vs. Kyverno, and When to Use Which
RBAC decides who can act, not whether the object they submit is actually valid. Admission-based policy engines close that gap. We compare OPA Gatekeeper, Kyvern...
kubernetes
guvenlik
otomasyon
Read more →
September 18, 2026
Backups are not enough: run restore drills
A green backup job gives false confidence, and an untested backup is not a backup. We cover the silent traps we hit, valid but incomplete archives, stale locks,...
yedekleme
felaket-kurtarma
operasyon
Read more →
September 17, 2026
Trust the output, not the model: a last line of defense for automated content
When we built an automated content pipeline, the hard part was never writing the text but making sure it could never leak internal details. Here is why telling...
guvenlik
otomasyon
sizinti-onleme
Read more →
September 16, 2026
The PID 1 Problem in Containers: Zombie Processes and When You Need an Init System
The first process in a container is not an ordinary process as far as the kernel is concerned. Here is how that difference leads to zombie process buildup, how...
docker
kubernetes
linux
Read more →
September 15, 2026
Autoscaling Pods in Kubernetes: Choosing Between HPA, VPA, and KEDA
HPA scales replica count, VPA scales resource sizing, KEDA scales event-driven load. Using one in place of another is the root cause of most autoscaling complai...
kubernetes
olceklendirme
performans
Read more →
September 14, 2026
Webhook Design: Retries, Idempotency, and Signature Verification
Webhooks look simple until production traffic exposes three hard questions: delivery guarantees, duplicate events, and sender authenticity. This post covers ret...
saas
api-tasarimi
guvenlik
Read more →
September 13, 2026
The Empty Map Trap When Talking to the Kubernetes API
When a Kubernetes map field is empty, whether JSON encodes it as an array or an object depends on your language, and getting it wrong silently rejects the whole...
kubernetes
api-tasarimi
test
Read more →
September 12, 2026
When You Actually Need a Service Mesh, and When It's Just Complexity
A decision guide to the real differences between Istio, Linkerd, and Cilium, what actually justifies adopting a service mesh, and the concrete pitfalls that sho...
kubernetes
mimari
guvenlik
Read more →
September 11, 2026
What You Gain and Lose With an Immutable Operating System
A look at the three main approaches to read-only, image-based operating systems: what they actually buy you, and the costs that only show up after adoption.
linux
altyapi
guvenlik
Read more →
September 10, 2026
Identity and Authorization in SaaS: Single Sign-On, Roles, and Tenant Boundaries
In a multi-tenant SaaS product, authentication, role, and tenant boundary are three separate axes. How to pick an identity model, how to match tenants during OI...
saas
guvenlik
multi-tenant
Read more →
September 9, 2026
How to Design a Client That Keeps Working Offline
Keeping an app from crashing when the network drops is one problem; making sure the user's changes survive that drop is a different one. We compare caching, opt...
mimari
senkronizasyon
istemci-tasarimi
Read more →
September 8, 2026
Cilium and eBPF: What Changes in Network Policy and Observability
Why iptables-based network policy runs into scaling walls in large clusters, how eBPF fixes that, and what Cilium's identity-based L7 policies and Hubble's side...
kubernetes
guvenlik
gozlemlenebilirlik
Read more →
September 7, 2026
k6 vs Locust for Load Testing: Which One to Choose and When
k6 and Locust are the two most common open source load testing tools. The real difference between them is not speed, it's the concurrency model, distributed exe...
performans-testi
devops
ci-cd
Read more →
September 6, 2026
Cypress or Playwright for End-to-End Testing: Which One and When
The architectural difference between Cypress and Playwright decides far more than the authoring experience. What to know before choosing between the two, and th...
test
ci-cd
otomasyon
Read more →
September 5, 2026
Actually Measuring RPO and RTO Targets in Disaster Recovery
A green nightly backup job does not mean your RPO and RTO targets are actually met. Only a real, repeated restore drill produces the true number. Here is how to...
felaket-kurtarma
yedekleme
mimari
Read more →
September 4, 2026
Metrics, Logs, Traces, and Error Tracking: Why You Need All Four
Metrics, logs, traces, and error tracking do not measure the same thing. Each answers a different question at a different cost. A guide to when you need which,...
gozlemlenebilirlik
hata-takibi
devops
Read more →
September 3, 2026
Gateway API: What Changes After Ingress
Ingress has carried the same three or four fields for a decade, and everything else got bolted on through controller-specific annotations. Gateway API splits th...
kubernetes
devops
mimari
Read more →
September 2, 2026
Queues and Async Job Processing: Where They Help, Where They Hurt
Pushing every slow operation into a queue does not remove complexity, it relocates it. A practical look at when async processing actually pays off, what deliver...
backend
mimari
kuyruk
Read more →
September 1, 2026
Alerting Rules: "Something Broke" vs. "Users Are Affected"
Cause-based alerts (high CPU, full disk, failed job) wear out on-call engineers without answering whether users are actually affected. How to move to SLO-based...
gozlemlenebilirlik
alarm
sre
Read more →
September 1, 2026
Secret Management in Kubernetes: Which Approach Fits Where
Kubernetes' built-in Secret object is not encryption. Here is how to choose between Sealed Secrets, External Secrets Operator, SOPS, and Vault's injector based...
kubernetes
sir-yonetimi
guvenlik
Read more →
August 31, 2026
filex: a self-hosted file manager you can embed
By the third time we wrote a file listing UI just to show a client an S3 bucket, it was clear this would not scale. filex is that job done properly: one package...
self-hosted
dosya-yonetimi
urun
Read more →
August 29, 2026
Self-hosted error tracking: choosing between Sentry and GlitchTip
Self-hosted Sentry wants twenty-odd services and 16 GB of RAM; GlitchTip does the same job in 512 MB. A comparison of licensing, footprint and feature gaps, plu...
gozlemlenebilirlik
hata-takibi
self-hosted
Read more →
August 25, 2026
Designing a multi-tenant SaaS: isolation strategies and what they really cost
Database per tenant, schema per tenant and shared tables with a tenant column carry very different migration, backup, noisy neighbour and leak costs. Which one...
saas
multi-tenant
postgresql
Read more →
August 19, 2026
How to Do GitOps, and What It Actually Buys You
Why the pull model differs from push-based deployment, where self-healing turns into a fight, why environments belong in directories rather than branches, how t...
gitops
kubernetes
ci-cd
Read more →
August 14, 2026
Terraform or OpenTofu: the license question and the real technical differences
What the 2023 license change actually broke, why OpenTofu was born under the Linux Foundation, and where the two CLIs genuinely diverge today: state encryption,...
terraform
opentofu
iac
Read more →
August 8, 2026
Reproducible service deployment with NixOS
What declarative configuration, atomic switching and flake pinning actually buy you, where NixOS beats Docker and conventional configuration management, which t...
nixos
self-hosted
altyapi-otomasyonu
Read more →
August 4, 2026
What an active-active Kubernetes architecture really takes
Active-active is not about splitting traffic, it is about writing consistently in two regions at once, and the real work ends up in the data layer. The cost of...
kubernetes
mimari
yuksek-erisilebilirlik
Read more →
July 28, 2026
Backing up a Kubernetes cluster with Velero and restoring it into another one
The real problem with Kubernetes backups is not etcd but cluster objects and persistent volume data being captured separately. How Velero is built, when to choo...
kubernetes
velero
yedekleme
Read more →
July 21, 2026
Kubernetes from scratch on Talos Linux: operating a cluster without a shell
Talos Linux is an immutable, API managed Kubernetes OS with no shell and no SSH on the node. How machine config works, the bootstrap and upgrade flow, debugging...
kubernetes
talos
self-hosted
Read more →
▣
Terminal Mode
esc
▣ brf.sh — Terminal
tty1 · zsh
brf @ brf.sh
: ~/portfolio $
[01] home ×
[02] services ×
[03] products ×
[04] stack ×
[05] blog ×
[06] about ×
[07] contact ×
LIVE
UP 99.97%
CPU 12%
MEM 4.2G
--:--:--
> ./brf --boot --tab=home
[OK] system online · 25 services · 15 posts
██████╗ ██████╗ ███████╗ ███████╗██╗ ██╗
██╔══██╗██╔══██╗██╔════╝ ██╔════╝██║ ██║
██████╔╝██████╔╝█████╗ ███████╗███████║
██╔══██╗██╔══██╗██╔══╝ ╚════██║██╔══██║
██████╔╝██║ ██║██║ ██╗███████║██║ ██║
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
> whoami
we build, we automate, we keep it running
· ci/cd · k8s · ai · 12y in production · bursa/tr
/01 home
brf.sh
> ps -A | grep -i shipping
● shipping infrastructure
· pid 1
· uptime 2026-now
> stat --quick
> hint
1-5 jump tabs ·
tab next ·
esc restore ·
↓ scroll
> ls -lah ~/services/ --sort=tier
[OK] 25 records · 8 featured · 1 retainer · 16 standard
/02 services
services.tree
flagship
featured
/svc/01
ci/cd pipeline setup
Automated build, test and deployment pipelines with GitHub Actions, GitLab CI/CD.
· Single environment (staging or prod)
3–5d
$2,100
· Staging + Production, including branch strategy
5–8d
$3,500
· Multi-service / monorepo
8–14d
$5,200
→ ci-cd-pipeline
/svc/02 · featured
kubernetes & docker
Container architecture migration, cluster setup and orchestration.
/svc/03 · featured
monitoring & alerting
Infrastructure and service monitoring with Prometheus, Grafana, Loki.
/svc/04
code virtualization & containerization
Migration of existing applications to container architecture.
/svc/05
software performance optimization
DB + cache + code bottleneck identification and resolution.
/svc/06
security & zero trust architecture
Zero-trust networking, HashiCorp Vault, RBAC, SAST/DAST, compliance au...
/svc/07
cloud migration & hybrid cloud
On-prem to cloud, lift-and-shift, re-platform, hybrid setup.
/svc/08
infrastructure as code — terraform
/svc/09
self-hosted technology stack
/svc/10
mvp software development
/svc/11
ai integration & agent development
/svc/12
serverless platform & secure isolation
/svc/13
api gateway & microservice architecture
/svc/14
finops & cloud cost optimization
/svc/15
sre & incident management
/svc/16
database management & replication
/svc/17
gitops & progressive delivery
/svc/18
data engineering & event streaming
/svc/19
technical training & workshops
/svc/20
network, cdn & ddos protection
/svc/21
backup & disaster recovery
/svc/22
logging & observability stack
/svc/23
autonomous testing & qa automation
/svc/24
platform engineering & developer portal
/svc/25
devops consulting
> note
· Prices are in USD. Volume discounts of 7% for 6-12 day projects and 14% for 13+ day projects apply. Programs of 100+ person-days are priced individually. Prices are negotiable based on scope, urgency and long-term collaboration.
> ls ~/products/ --open-source
[OK] 2 entries · 1 live · 1 pre-release
/03 products
products.list
live
open source · mit
/prod/01
filex
the self-hosted file manager that embeds anywhere
single go binary · vue/react/web-component embed · 5 storage drivers · realtime collab · rbac · native multi-tenancy · mcp server for ai agents
pre-release
open-core
/prod/02
runr.sh
serverless + ai platform on knative
caas · faas · xaas under one developer experience · ai module: agents, multi-agent dags, gpu-pooled model serving · kata/gvisor/firecracker sandboxing
> cat note.txt
consulting patterns, productized · open source
> tech --categorize --output=tree
[OK] 80 entries · 14 categories
/06 stack
tech.tree
[container & orchestration]
kubernetes
docker
helm
docker swarm
containerd
talos linux
cilium
[iac & cloud]
terraform
pulumi
ansible
aws
hetzner
gcp
cloudflare
opentofu
[ci/cd & source]
gitlab ci
github actions
argocd
flux
[observability]
prometheus
grafana
loki
opentelemetry
sentry
glitchtip
tempo
[backend]
laravel
symfony
django
fastapi
express
fastify
nestjs
go
[frontend]
next.js
react
vue 3
nuxt
svelte
vite
tailwind
[mobile]
flutter
ionic
capacitor
react native
[data & streaming]
postgresql
mysql
mariadb
redis
mongodb
clickhouse
rabbitmq
nats
kafka
[storage & dr]
minio
restic
backrest
[security]
keycloak
passbolt
wireguard
pritunl
openvpn
[ai]
mcp
acp
langchain
anthropic api
openai api
[web servers]
nginx
caddy
traefik
envoy
[other]
stalwart mail
linux
systemd
[testing & qa]
playwright
cypress
k6
locust
testcontainers
trivy
> note
· live production stack · continuously updated
> ls -la ~/blog/ --sort=published
[OK] 15 entries
· total 124,868 chars
· latest 2026-10-17
/03 blog
blog.log
[01]
The Quiet Cause of Sporadic 502s: Idle Connection Timeouts and Keepalive Ordering
8.4k
·
2026-10-17
[02]
Why Published Docker Ports Bypass Your Firewall: UFW, the DOCKER-USER Chain and the Bind Address
7.5k
·
2026-10-16
[03]
The Get-or-Create Race: Duplicate Rows Under Concurrency, Unique Constraints and ON CONFLICT Traps
8.6k
·
2026-10-15
[04]
Ransomware Resistant Backups: Object Lock, Versioning and Separating Writer from Deleter
6.5k
·
2026-10-14
[05]
Using Redis as a Data Store: Memory Policy, Persistence and Its Limits as a Queue
6.6k
·
2026-10-13
[06]
Finding Out What Actually Filled Up: inodes, Deleted but Open Files and Reserved Blocks
6.6k
·
2026-10-12
[07]
PostgreSQL Autovacuum and Table Bloat: Dead Tuples, Transactions That Block Cleanup, and Per-Table Tuning
8.6k
·
2026-10-11
[08]
Hardening Services with systemd: ProtectSystem, DynamicUser, System Call Filters and the Options That Break Things
7.6k
·
2026-10-10
[09]
Cardinality Explosions in Prometheus: Choosing Labels, What a Series Costs and Stopping It at the Source
8.7k
·
2026-10-09
[10]
The Real Client IP Behind a Reverse Proxy: X-Forwarded-For, Trusted Proxies and Spoofed Headers
9.6k
·
2026-10-08
[11]
Build Once, Promote by Digest: Shipping the Exact Image You Tested
9.2k
·
2026-10-07
[12]
Time-Dependent Flaky Tests: Wall Clocks, Failures Under Load, Second Rounding and Fake Clocks
9.3k
·
2026-10-06
[13]
Publishing Packages Without Long-Lived Tokens: Trusted Publishing with OIDC on npm, PyPI and crates.io
9.1k
·
2026-10-05
[14]
PodDisruptionBudgets and Node Drains in Kubernetes: Writing the Budget and Why Maintenance Gets Stuck
7.3k
·
2026-10-04
[15]
Zero-Downtime Secret Rotation: Dual Keys, Alternating Users and the Consumers Left Behind
8.4k
·
2026-10-03
> head -n 1 blog/*.md
[OK] showing latest 6 excerpts
/post/01
2026-10-17
The Quiet Cause of Sporadic 502s: Idle Connection Timeouts and Keepalive Ordering
Load balancers, proxies and application servers close idle connections on different clocks. Get the order wrong and random 502s appear after quiet periods. The rule, the default-va...
→ bosta-baglanti-zaman-asimi-keepalive-502-yuk-dengeleyici
/post/02
2026-10-16
Why Published Docker Ports Bypass Your Firewall: UFW, the DOCKER-USER Chain and the Bind Address
UFW reports that every incoming connection is denied, yet a port published by Docker can still be open to the internet. The path a packet really takes, closing ports with the bind...
→ docker-yayinlanan-port-guvenlik-duvari-ufw-docker-user
/post/03
2026-10-15
The Get-or-Create Race: Duplicate Rows Under Concurrency, Unique Constraints and ON CONFLICT Traps
Check-then-insert is flawless for one request and quietly produces duplicates under parallel ones. Why application locks fall short, why a unique constraint is the only fix that ho...
→ yoksa-olustur-yarisi-benzersiz-kisit-on-conflict-kismi-indeks
/post/04
2026-10-14
Ransomware Resistant Backups: Object Lock, Versioning and Separating Writer from Deleter
A backup that production can delete is a backup an intruder can delete. The two object lock modes, append only identities, where the key lives, and how this compares to snapshots.
→ fidye-yazilimina-dayanikli-yedek-nesne-kilidi-surumleme
/post/05
2026-10-13
Using Redis as a Data Store: Memory Policy, Persistence and Its Limits as a Queue
Redis arrives as a cache and ends up holding sessions and the job queue. Choosing maxmemory-policy, the cost of RDB versus AOF, what async replication loses, and lists versus strea...
→ redis-veri-deposu-bellek-politikasi-kalicilik-kuyruk
/post/06
2026-10-12
Finding Out What Actually Filled Up: inodes, Deleted but Open Files and Reserved Blocks
"Disk full" maps to at least three different conditions: blocks, inodes and space reserved for root. Same symptom, different remedy. How to measure before you delete.
→ disk-doldu-inode-silinmis-acik-dosya-ayrilmis-bloklar
> open ~/blog/ --all
→ /en/blog
> watch --interval=weekly
· this section is updated weekly via the filament admin
> cat about.md
[OK] read 1070 chars · markdown · gfm
/04 about
about.md
> tags --self
devops
platform-engineer
sre
founder
oss-maintainer
kubernetes
mvp-launcher
ai-llm
> head -n 30 about.md
BRF Tech
We build infrastructure, automate everything, and keep systems running.
BRF Tech is a Bursa-based DevSecOps and software consulting firm. We operate across 25 service areas, from Kubernetes cluster management to serverless platform setup, CI/CD pipeline design to AI agent development.
What we do is simple: we set up your systems, automate them, and make sure they won't wake you up at 3 AM. We codify your infrastructure with Terraform, move your deployments to GitOps with ArgoCD, and monitor everything with Prometheus. If something breaks — we intervene before it does.
We're against vendor lock-in. We work with open-source tools, self-hosted solutions, and industry-standard technologies. We build your own serverless platform on Knative, isolate with Kata Containers, manage your secrets with Vault. Every project is delivered with clear scope, clear timeline, clear pricing.
DevSecOps & CI/CD
Kubernetes & Serverless
Infrastructure as Code
AI & Agent (MCP/ACP)
Security & Zero Trust
Full-Stack Development
Self-Hosted Solutions
> grep -i question ~/faq.md
[OK] 3 entries · click to expand
[?]
What services are included in BRF Tech's DevOps solutions?
▾
We offer CI/CD pipeline setup, Kubernetes cluster management, container migration, infrastructure automation with Terraform, monitoring & alerting, in-house technology installations and DevOps consulting services.
[?]
What are your software development services?
▾
We offer MVP development, existing software performance optimization, backend API development (Node.js, Go, Python) and full-stack application development. Every project is delivered with minimal technical debt.
[?]
Which DevOps tools do you work with?
▾
From Kubernetes and Docker to Talos Linux, from Terraform and OpenTofu to Ansible, and across Jenkins, GitLab CI/CD, GitHub Actions, ArgoCD, Flux, Helm and Rancher, we work with industry-standard tooling. For observability and error tracking we use Prometheus, Grafana, Loki, Tempo, OpenTelemetry and GlitchTip; for networking, Cilium and Envoy; for test automation, Playwright, Cypress, k6, Locust, Testcontainers and Trivy. We determine the most suitable toolset together, based on your project’s needs.
> cat specialties.md
## Container & Orchestration
Kubernetes
Docker
Helm
Docker Swarm
Containerd
Talos Linux
Cilium
## IaC & Cloud
Terraform
Pulumi
Ansible
AWS
Hetzner
GCP
Cloudflare
OpenTofu
## CI/CD & Source
GitLab CI
GitHub Actions
ArgoCD
Flux
## Observability
Prometheus
Grafana
Loki
OpenTelemetry
Sentry
GlitchTip
Tempo
## Backend
Laravel
Symfony
Django
FastAPI
Express
Fastify
NestJS
Go
## Frontend
Next.js
React
Vue 3
Nuxt
Svelte
Vite
Tailwind
## Mobile
Flutter
Ionic
Capacitor
React Native
## Data & Streaming
PostgreSQL
MySQL
MariaDB
Redis
MongoDB
ClickHouse
RabbitMQ
NATS
Kafka
## Storage & DR
MinIO
Restic
Backrest
## Security
Keycloak
Passbolt
WireGuard
Pritunl
OpenVPN
## AI
MCP
ACP
LangChain
Anthropic API
OpenAI API
## Web Servers
Nginx
Caddy
Traefik
Envoy
## Other
Stalwart Mail
Linux
systemd
## Testing & QA
Playwright
Cypress
k6
Locust
Testcontainers
Trivy
> uname -a
brf.sh / 2026
·
bursa/tr
·
timezone utc+3
·
all systems nominal
> ./connect --target=brf.sh
/05 contact
contact.txt
> cat contact.txt
[email] [email protected]
[phone] +90 530 871 2248
[location] Üçevler Mah. İzmir Yolu Cad 241D 16120 Nilüfer/Bursa
[hours] Mon–Fri 09:00 — 18:00 UTC+3
[eta] <24h business days
> note
[OK] handshake ready
· turnstile enabled
· preferred response: <24h · timezone UTC+3 / bursa
Automated build, test and deploy pipeline setup for existing or new repositories. GitHub Actions, GitLab CI/CD or preferred tool is used. Separate workflows are defined for staging + production environments.
Production-ready Kubernetes cluster setup on bare-metal or cloud. Includes Helm charts, Ingress, TLS certificate management, namespace isolation and RBAC.
Migration of existing applications to container architecture. Docker image design, Compose configuration and conversion to Kubernetes manifests. Kata Containers / gVisor can be included for advanced isolation.
Prometheus + Grafana stack setup, dashboards for service and infrastructure metrics, alert definitions for critical thresholds. Optional: Zabbix, Loki log aggregation.
Codifying cloud infrastructure (AWS / GCP / Azure / Hetzner) with Terraform. State management, modular structure, environment-based configuration.
Installation of tools like GitLab, Mattermost, Nextcloud, mail server, VPN, internal monitoring on company servers. Deployed on Docker Compose or Kubernetes.
Profiling of existing application, identification and resolution of bottlenecks. DB query optimization, caching layer (Redis), service-level improvements.
Scope clarification, architectural design and development to rapidly launch startups' first product. Backend API, frontend or full stack.
LLM integration (OpenAI, Claude, Gemini, local models), tool-augmented AI agents with MCP (Model Context Protocol) and ACP (Agent Communication Protocol). RAG pipeline, multi-agent orchestration, model serving (vLLM/Ollama). AI layer for existing business processes.
Scale-to-zero serverless platform setup on Knative Serving. VM-based isolation with Kata Containers (Firecracker, Cloud Hypervisor, QEMU), gVisor sandbox, confidential computing (AMD SEV-SNP, Intel TDX). Multi-region, GPU passthrough, browser-based shell access. FaaS, CaaS, AaaS (AI Agent) workload types.
Zero-trust network design, secret management (HashiCorp Vault), RBAC/ABAC policies, container image scanning (Trivy), SAST/DAST integration. KVKK, GDPR, SOC 2, ISO 27001 compliance preparation and security audit.
Migration of on-prem infrastructure to cloud (AWS, GCP, Azure, Hetzner) or cross-cloud transition. Lift-and-shift, re-platform or re-architect strategies. Hybrid cloud setup, VPN interconnect, downtime-free migration planning.
Monolith to microservice transformation. Service mesh (Istio, Linkerd), API gateway (Kong, Traefik), inter-service communication (gRPC, NATS). Domain-driven design, bounded context definition, event sourcing.
Cloud billing analysis, resource right-sizing, waste elimination. Reserved instance / savings plan strategy, spot instance automation. Kubernetes cost tracking with Kubecost / OpenCost, department-level chargeback.
Service reliability with Site Reliability Engineering principles. SLO/SLI definition, error budget management, on-call rotation setup, incident response playbooks, postmortem culture building. PagerDuty/Opsgenie integration.
PostgreSQL, MySQL, MongoDB high availability setup. Streaming replication, logical replication, read replica, connection pooling (PgBouncer). Sharding strategy, migration planning, automated backup + point-in-time recovery.
GitOps workflow setup with ArgoCD or Flux. Git repo = single source of truth. Canary deployment, blue-green strategy, feature flags (Flagsmith/LaunchDarkly), automatic rollback. Helm + Kustomize integration.
Event-driven data pipeline with Apache Kafka, RabbitMQ, NATS. ETL/ELT orchestration with Apache Airflow, real-time data streaming, CDC (Change Data Capture). Data lake/warehouse design, schema registry, dead letter queue management.
Hands-on technical training for your teams. Docker & container fundamentals, Kubernetes operations, Terraform IaC, CI/CD best practices, AI/LLM integration workshops. Practical exercises in live lab environments, content customized by skill level.
Cloudflare integration (WAF, DDoS mitigation, rate limiting), DNS management, edge caching strategy. VPN setup (WireGuard, Pritunl), network segmentation, firewall rule optimization. Performance boost with global CDN.
Automated backup strategy (Restic, Velero, Borg), geo-redundant storage, point-in-time recovery. Disaster recovery plan, RTO/RPO targeting, failover automation, multi-region active-passive / active-active setup. Regular DR drills.
Centralized log management with ELK Stack or Loki + Grafana. Distributed tracing with OpenTelemetry, Jaeger/Tempo integration. Log retention policy, structured logging standards, anomaly detection. End-to-end observability across all services.
E2E test automation with Playwright, Cypress, load testing with k6/Gatling. Pre-deploy quality gate integrated into CI/CD pipeline, test coverage reporting, visual regression testing. Reduce test writing time by up to 60% with AI-assisted test generation.
Internal developer portal setup with Backstage or Port. Self-service environment provisioning, golden path templates, service catalog, TechDocs integration. Developer experience (DX) metrics, DORA metrics tracking, cognitive load reduction.
Weekly fixed-day consulting. Technical roadmap, architecture review, team onboarding, incident support, code & infrastructure review.
Privacy Policy
Last updated: 05/01/2023
Your Collected Personal Data, Collection Method and Legal Basis
Any information that identifies or makes you identifiable is considered "personal data." When you visit our website or use our services, contact information such as your name, surname, email address, phone number, as well as your IP address and browser cookie data may be collected through automatic or semi-automatic means. This data is processed based on the legal grounds specified in Article 5 of the Personal Data Protection Law No. 6698: "being directly related to the establishment or performance of a contract" and "being mandatory for the legitimate interests of the data controller, provided that it does not harm the fundamental rights and freedoms of the data subject."
Purpose of Processing Your Personal Data
Your collected personal data is processed for the purposes of providing and improving our services, fulfilling customer requests, meeting legal obligations, conducting information security processes and managing communication activities. Your data is processed in a limited and proportionate manner for the stated purposes; when the purpose ceases to exist, data is deleted, destroyed or anonymized.
To Whom and For What Purposes Collected Personal Data May Be Transferred
Your personal data may be transferred to public institutions and organizations as required by legal regulations, to our business partners and technical infrastructure providers for the purpose of delivering services, and to lawyers and consultants in legal disputes. Transfers are carried out in accordance with Articles 8 and 9 of the Law, with necessary technical and administrative measures in place.
Your Rights as a Data Subject
In accordance with Article 11 of Law No. 6698, you have the right to: learn whether your personal data is being processed; request information if it has been processed; learn the purpose of processing and whether it is used in accordance with its purpose; know the third parties to whom it is transferred domestically or abroad; request correction if it has been processed incompletely or incorrectly; request deletion or destruction within the framework of conditions set out in Article 7 of the Law; request that the operations carried out be notified to third parties to whom data has been transferred; object to any adverse result arising from the analysis of data exclusively through automated systems; and claim compensation for damages in case of unlawful processing. You may contact us through the communication channels on our website to exercise these rights.
Terms & Conditions
1. Service Scope and Changes
BRF Tech conducts its software development, DevOps consulting, infrastructure setup and technical support services within the framework of these terms and conditions. The scope of service is determined separately for each project and finalized through mutual agreement. BRF Tech reserves the right to update the scope, pricing and technical details of its services, provided that prior notice is given.
2. Privacy Policy
Personal data collected within the scope of our services is processed in accordance with our Privacy Policy. For detailed information, please review our Privacy Policy page.
3. Service Usage and Responsibilities
Clients agree to use the provided services solely within legal and ethical boundaries. BRF Tech reserves the right to suspend or terminate services in the event of misuse, violation of third-party rights, or use for illegal activities. The client is responsible for the accuracy and currency of the information provided within the project scope.
4. Payment Terms
Payment terms are determined on a project basis and finalized through mutual agreement at the start of the project. Unless otherwise specified, invoices are payable within 15 days of project delivery. A monthly late payment interest of 2% may apply to overdue payments.
5. Cancellation and Refund Policy
Cancellation requests must be submitted in writing at least 7 days before the service start date. For projects already in progress, billing is based on the proportion of completed work. No refunds are issued for software and infrastructure components specifically developed within the project scope.