Erkam Cengiz
Konuşalım

Yeni fırsatlara açığım

Senior Full Stack Developer

  • Backend Mühendisliği
  • Dağıtık Sistemler
  • Yazılım Mimarisi

Dağıtık backend’ler tasarlıyor ve production’da işletiyorum.

4+ yıllık full stack geliştiriciyim: backend’de Node.js / TypeScript, web’de React / Next.js, mobilde Flutter. Bir dil öğrenme uygulamasının mikroservis backend’ini sıfırdan kurdum; kendi oyunumu da tek başıma yayınladım.

Erkam Cengiz’in portresi
Şek. 01Erkam Cengiz · Bursa, Türkiye

Konum
Bursa, Türkiye 40,19° K, 29,06° D
Çalışma şekli
2023’ten beri uzaktan
Yerel saat
GMT+3

Kaydır

(01)Hakkımda

İşim, bir ürünün en zor sorularıyla karşılaştığı yerde başlıyor. Bir servis yarı yolda hata verirse ne olur? Bir mesaj iki kez gelirse? Kullanıcı çevrimdışıysa? Bu soruların cevabını, production’da sorulmadan önce mimariye yerleştiriyorum.

Yıllık full stack deneyimi
4+
Pingua için sıfırdan kurduğum backend servisi
8
Yıllık uzaktan çalışma deneyimi
3+
Tek başıma App Store’a çıkardığım mobil oyun
1

Stack’in her katmanında çalışıyorum; odağım dağıtık sistemler, gerçek zamanlı iletişim ve AI otomasyonları. Setfree’de Pingua’nın backend’ini sıfırdan sekiz servis olarak kurdum — yedisi Node.js / TypeScript, biri Go ile yazılmış real-time gateway — ve production’da işlettim.

Bu rolde teknik karar, code review, görev dağılımı ve mentorluk sorumluluğu da üstlendim. Öncesinde Kidly’de Node.js servisleri ve bir React / Next.js arayüzü, Element’te ise biri Oracle tabanlı olan C# / .NET sistemleri geliştirdim. Kendi mobil oyunumu tek başıma tasarlayıp geliştirdim, yayına çıkardım ve bakımını sürdürüyorum.

  1. Hatayı baştan hesaba kat

    Outbox, saga / compensation, idempotent consumer, circuit breaker. Bir adımın başarısız olacağını varsayıyor, sistemin nasıl toparlanacağına önceden karar veriyorum.

  2. Uçtan uca sahiplen

    Gereksinimden veri modeline, release’ten izleme ve rollback’e kadar. Bir özellik merge edildiğinde değil, production’da sorunsuz çalıştığında biter.

  3. Önce ölç, sonra güven

    Tüm API’lerde health check, k6 ile performans ve failover testleri, production’da Grafana ve OpenTelemetry. Yük altındaki davranışı varsaymıyor, gözlemliyorum.

(02)Seçili projeler

Tasarladığım sistemler, yayına çıkardığım ürünler.

Backend’ini sıfırdan kurduğum bir dil öğrenme uygulaması, tek başıma yayına çıkardığım bir mobil oyun ve daha önce Kidly ile Element’te üzerinde çalıştığım ürünler.

Vaka çalışması 01 — Dil öğrenme uygulaması · iOS ve Android

Pingua

Rol
Senior Full Stack Developer
Şirket
Setfree
Dönem
Ocak 2024 – Ekim 2026
Kapsam
  • Backend
  • Back Office
  • Web sitesi
  • Veritabanı

Pingua, iOS ve Android için bir dil öğrenme uygulaması. Backend’ini sıfırdan kurdum — yedi Node.js / TypeScript servisi ve bir Go real-time gateway — Back Office’i ve pingua.app web sitesini geliştirdim, hepsini production’da işlettim.

Problem

Auth, gamification, içerik, iletişim, yedekleme ve AI ayrı servisler olarak çalışıyordu. Sistemin bir bütün olarak servis sınırları boyunca tutarlı kalması, olayları gerçek zamanlı iletmesi ve okumaları hızlı tutması gerekiyordu; hem de production’da sağlıklı çalışmaya devam ederken.

Pingua backend mimarisi · temsiliPingua backend’inin temsili mimarisi. iOS ve Android uygulamaları, pingua.app web sitesi ve Back Office servislere HAProxy load balancing üzerinden ulaşır. Yedi Node.js / TypeScript servisi — Auth, Gamification, Content, Communication, Backup, AI Manager API ve AI Automation — DLQ’lu AWS SQS üzerinden asenkron haberleşir. Go / WebSocket tabanlı Real-Time Gateway, olayları çevrimiçi kullanıcılara iletir; çevrimdışı kullanıcılara push notification gönderilir. Yazma işlemleri ana veritabanına, okuma işlemleri read replica’lara gider; önlerinde çok katmanlı bir cache bulunur. Zamanlanmış cron görevleri ödül dağıtımını ve haftalık sıfırlamaları çalıştırır; AI servisleri n8n ile orkestre edilen ve Back Office’e bağlanan LLM, ses ve görsel araçlarını kullanır; Grafana, Prometheus, Loki, OpenTelemetry ve Sentry izlemeyi sağlar.Web sitesipingua.appBack OfficeReact · Next.jsMobil uygulamalariOS · AndroidYük dengeleyiciHAProxyReal-Time GatewayGo · WebSocketPushAuthGamificationContentCommunicationBackupAI Manager APIAI AutomationMesaj kuyruğuAWS SQS · DLQCron görevleriLLM’lerSes ve görseln8nAna veritabanıRead replica’larÇok katmanlı cachein-memory · hybrid · RedisİzlemeGrafana · Prometheus · Loki · OpenTelemetry · Sentry
  1. 01 / 07

    Sıfırdan mikroservisler

    Uygulamanın, servis servis gelişebilen ve yavaş işleri istek akışının dışında tutan bir backend’e ihtiyacı vardı.

    Backend’i Node.js / TypeScript ve Express.js ile mikroservis mimarisinde sıfırdan kurdum: Auth, Gamification, Content, Communication, Backup, AI Manager API ve AI Automation. Servisler arası asenkron iletişimi ve e-posta gönderimi gibi arka plan işlerini AWS SQS ile kurguladım.

    • Node.js / TypeScript
    • Express.js
    • Mikroservisler
    • AWS SQS
    • Asenkron servis iletişimi
    • Arka plan işleri (e-posta)
  2. 02 / 07

    Tasarım gereği tutarlılık

    Birden fazla servise yayılan bir güncelleme, bir adım hata verdiğinde ya da mesaj iki kez geldiğinde yarım kalmamalı.

    Transaction ve outbox pattern ile her olayı, onu doğuran yazma işlemiyle birlikte kaydettim; yarıda kalan çok servisli akışları saga / compensation ile geri aldım. Kuyruktaki işlerde idempotent consumer ve DLQ, eşzamanlı erişimde veritabanı lock’ları, dış çağrılarda circuit breaker kullandım.

    • Transaction
    • Outbox pattern
    • Saga / compensation
    • Idempotent consumer
    • DLQ
    • Veritabanı lock’ları
    • Circuit breaker
  3. 03 / 07

    Çevrimiçi olsun olmasın

    Etkileşimler ve bildirimler çevrimiçi kullanıcıya anında ulaşmalı, çevrimdışı kullanıcıya da yine iletilmeliydi.

    Go / WebSocket tabanlı gerçek zamanlı gateway’i geliştirdim ve teslimatı tek bir soru etrafında kurguladım: Kullanıcı çevrimiçi mi? Öyleyse olay socket üzerinden gider; değilse push notification olarak ulaşır.

    • Go
    • WebSocket
    • Real-Time Gateway
    • Çevrimiçiyse socket
    • Çevrimdışıysa push notification
  4. 04 / 07

    Zamanında gelen ödüller

    Streak, haftalık görev ve sıralamalar ancak ödüller ve sıfırlamalar elle müdahale olmadan, zamanında gerçekleşirse işe yarar.

    Öğrenmeyi oyunlaştıran mekanikleri geliştirdim: streak, XP ve rozetler, haftalık görevler ve sıralamalar. Ödül dağıtımını ve haftalık sıfırlamaları zamanlanmış görevlerle (cron) otomatikleştirdim; her hafta kendiliğinden kapanıp yeniden başladı.

    • Streak
    • XP
    • Rozetler
    • Haftalık görevler
    • Sıralamalar
    • Cron görevleri
  5. 05 / 07

    Hızlı okuma, artımlı eşitleme

    Okuma trafiği yazma işlemleriyle yarışmamalı, istemciler de değişmeyen veriyi yeniden indirmemeli.

    Okuma ve yazmayı ayırdım: yazma işlemleri ana veritabanına giderken okuma yükünü read replica’lara dağıttım. Connection pooling ve çok katmanlı cache (in-memory, hybrid, Redis) tekrar eden işi azalttı; versiyon tabanlı artımlı veri senkronizasyonu istemcilere yalnızca değişeni gönderdi.

    • Read replica
    • Okuma/yazma ayrımı
    • Connection pooling
    • In-memory · hybrid · Redis cache
    • Versiyon tabanlı artımlı senkronizasyon
  6. 06 / 07

    AI destekli içerik hattı

    Öğrenme içeriği metin, ses ve optimize edilmiş görsel ister; bunları elle hazırlamak yavaştır.

    İçerik üretimini otomatikleştiren servisler geliştirdim: OpenAI, Claude ve Gemini ile metin, Azure TTS ve ElevenLabs ile ses üretimi, Sharp / TinyPNG ile görsel optimizasyonu. Süreçleri n8n ile orkestre edip Back Office’e bağladım.

    • OpenAI · Claude · Gemini
    • Azure TTS
    • ElevenLabs
    • Sharp / TinyPNG
    • n8n
    • Back Office entegrasyonu
  7. 07 / 07

    Production’da işletmek

    Dağıtık bir sistem en kötü gününde sınanır: hatalar görünür, sınırlı ve geri alınabilir olmalı.

    AWS ve DigitalOcean üzerindeki production ortamlarını HAProxy load balancing ve tüm API’lerdeki health check’lerle işlettim; ekip içi araçları Docker Compose ile self-host ettim, k6 ile performans ve failover testleri yazdım. Grafana, Prometheus, Loki, OpenTelemetry ve Sentry ile izleme, kök neden analizi, hotfix ve rollback yaptım.

    • AWS · DigitalOcean
    • HAProxy + health check
    • Docker Compose
    • k6 performans ve failover testleri
    • Grafana · Prometheus · Loki
    • OpenTelemetry · Sentry
    • Kök neden analizi · hotfix · rollback

Vaka çalışması 02 — Bağımsız mobil oyun · Tek kişilik

Endless Village Defense

Rol
Tasarım, geliştirme, yayın ve bakım
Teknolojiler
  • Flutter / Dart
  • Supabase
  • Next.js
  • Docker
  • GitHub Actions
  • AdMob
  • Crashlytics
  • Sentry
Durum
App Store’da yayında

Endless Village Defense kendi mobil oyunum. Flutter uygulamasını, Supabase backend’ini ve Next.js tanıtım sitesini fikir aşamasından yayına kadar tek başıma tasarlayıp geliştirdim; yayın sonrası bakımını sürdürüyorum.

App Store’da yayında

Google Play’de kapalı testte

  1. 01

    Fikir ve geliştirme

    Oyunu fikir aşamasından itibaren tasarladım; uygulamayı localization dahil Flutter / Dart ile geliştirdim.

    • Flutter
    • Dart
  2. 02

    Backend ve cloud

    Oyunun backend ve cloud katmanını Supabase üzerinde kurup uygulamaya bağladım.

    • Supabase
  3. 03

    Test

    Oyun mantığı için unit testler, görsel regresyonları oyuncuya ulaşmadan yakalayan golden testler yazdım.

    • Unit test
    • Golden test
  4. 04

    Gelir ve ölçümleme

    Uygulama içi satın alma ve abonelik, AdMob ve Google Analytics’i entegre ettim; çökme ve hatalar Crashlytics ve Sentry ile raporlanıyor.

    • IAP / abonelik
    • AdMob
    • Google Analytics
    • Crashlytics
    • Sentry
  5. 05

    Yayın hattı

    CI/CD, signing ve build/release süreçlerini GitHub Actions ile yönettim.

    • GitHub Actions
  6. 06

    Yayında ve bakımda

    Oyun App Store’da yayında, Google Play sürümü kapalı testte; Next.js ile geliştirdiğim tanıtım sitesi de yayında. Bakımını sürdürüyorum.

    • Next.js

Vaka çalışması 03 — Çocuk hikâyeleri ve sesli kitaplar

Kidly

Rol
Full Stack Developer
Şirket
Kidly
Dönem
Mayıs 2023 – Aralık 2023

Kidly’de üç üründe çalıştım: Çocuk Hikâyeleri, Back Office’iyle birlikte Audio Book ve Gamification Manager. Backend servislerini ve aralarındaki mesajlaşmayı, Audio Book’un da veri modelini ve React / Next.js arayüzünü geliştirdim.

  • Node.js
  • PostgreSQL
  • NoSQL
  • RabbitMQ
  • AWS SQS
  • Redis Pub/Sub
  • React
  • Next.js
  1. Kidly – Çocuk Hikâyeleri

    Node.js ve PostgreSQL / NoSQL ile backend servislerini geliştirdim; servisler arası iletişimde RabbitMQ, AWS SQS ve Redis Pub/Sub kullandım, deployment ve operasyonda sorumluluk aldım.

  2. Audio Book ve Audio Book Back Office

    Veri modelini, API servislerini ve React / Next.js arayüzünü sıfırdan geliştirdim.

  3. Gamification Manager

    Backend servisleri, Redis ve veritabanı entegrasyonları ile production desteğini üstlendim.

Önceki çalışmalar

  • Bilgi Yönetim Sistemi (BYS)

    Element Haziran 2022 – Mayıs 2023

    C# / .NET ve Oracle ile web ekranları, SQL sorguları, raporlar ve yetkilendirme geliştirdim.

    • C#
    • .NET
    • Oracle
    • SQL
  • Belediye Web Service ve Element Common

    Element Haziran 2022 – Mayıs 2023

    Ortak servislerin geliştirme, bakım ve deployment süreçlerini üstlendim.

    • C#
    • .NET

Microservices, Event-Driven Architecture, Outbox Pattern, Saga / Compensation, Idempotency, Circuit Breaker, DLQ, Retry/Backoff, Read/Write Splitting, Connection Pooling, Cache Invalidation, CQRS

(03)Deneyim

.NET ekranlarından dağıtık sistemlere.

  1. —

    2 yıl 10 ay

    İstanbul · Uzaktan

    Setfree

    Senior Full Stack Developer

    Dil öğrenme uygulaması Pingua’nın (iOS / Android) backend, Back Office, web sitesi ve veritabanından sorumluydum.

    • Mikroservis backend’ini sıfırdan kurdum: Express.js ile yedi Node.js / TypeScript servisi, AWS SQS ile mesajlaşma ve arka plan işleri, ayrıca bir Go / WebSocket gateway.
    • Servisler arası tutarlılığı transaction, outbox pattern ve saga / compensation ile sağladım; idempotent consumer, DLQ, veritabanı lock’ları ve circuit breaker kullandım.
    • Okuma yükünü read replica’lara dağıttım; connection pooling, çok katmanlı cache (in-memory, hybrid, Redis) ve versiyon tabanlı artımlı senkronizasyon uyguladım.
    • AWS ve DigitalOcean’daki production ortamlarını HAProxy ile işlettim; Grafana, Prometheus, Loki ve Sentry ile izleme, kök neden analizi, hotfix ve rollback yaptım.
    • Yeni özelliklerde gereksinim analizinden release’e kadar süreci yönettim; teknik karar, code review, görev dağılımı ve mentorluk sorumluluğu üstlendim.
    • Node.js
    • TypeScript
    • Express.js
    • Go
    • AWS SQS
    • Redis
    • React / Next.js
    • HAProxy
    • n8n
  2. —

    8 ay

    İstanbul · Uzaktan

    Kidly

    Full Stack Developer

    Çocuk hikâyeleri, sesli kitap ve gamification alanlarındaki üç üründe backend servisleri geliştirdim; Audio Book’un veri modelini ve React / Next.js arayüzünü de sıfırdan kurdum.

    • Kidly – Çocuk Hikâyeleri: Node.js ve PostgreSQL / NoSQL ile backend servislerini geliştirdim; servisler arası iletişimde RabbitMQ, AWS SQS ve Redis Pub/Sub kullandım.
    • Aynı backend için deployment ve operasyon sorumluluğu aldım.
    • Audio Book ve Audio Book Back Office: veri modelini, API servislerini ve React / Next.js arayüzünü sıfırdan geliştirdim.
    • Gamification Manager: backend servisleri, Redis ve veritabanı entegrasyonları ile production desteğini üstlendim.
    • Node.js
    • PostgreSQL
    • NoSQL
    • RabbitMQ
    • AWS SQS
    • Redis
    • React
    • Next.js
  3. —

    1 yıl

    Bursa

    Element

    .NET Developer

    C# / .NET ile Oracle tabanlı bir bilgi yönetim sistemi, belediye web servisi ve ortak servisler üzerinde geliştirme ve bakım yaptım.

    • Bilgi Yönetim Sistemi (BYS): C# / .NET ile web ekranları ve yetkilendirme geliştirdim.
    • Aynı sistem için Oracle üzerinde SQL sorguları ve raporlar yazdım.
    • Belediye Web Service ve Element Common: ortak servislerin geliştirme, bakım ve deployment süreçlerini üstlendim.
    • C#
    • .NET
    • Oracle
    • SQL
    • Web servisleri

(04)Uzmanlık

Yedi disiplin, tek bir sistem.

Yukarıdaki işlerin arkasındaki disiplinler ve her birini nerede uyguladığım: Pingua’da, Kidly ve Element’te ya da kendi oyunumda.

  1. Veri modelinden yola çıkan, production’daki davranışı baştan düşünülmüş Node.js / TypeScript servisleri ve API’ler.

    Uygulamada

    Pingua’da Express.js üzerinde yedi Node.js / TypeScript servisi; Kidly’de PostgreSQL / NoSQL ile backend servisleri; öncesinde Element’te C# / .NET ve Oracle.

    • Node.js
    • TypeScript
    • Express.js
    • REST API
    • PostgreSQL
    • MongoDB
    • Redis
    • Sequelize
    • C# / .NET
  2. Adımlar hata verdiğinde, mesajlar tekrarlandığında ya da yük arttığında doğru çalışmaya devam eden asenkron mesajlaşma.

    Uygulamada

    Pingua: AWS SQS, outbox, saga / compensation, idempotent consumer, DLQ, veritabanı lock’ları ve circuit breaker. Kidly: RabbitMQ, AWS SQS ve Redis Pub/Sub.

    • AWS SQS
    • RabbitMQ
    • Redis Pub/Sub
    • Outbox Pattern
    • Saga / Compensation
    • Idempotency
    • DLQ
    • Circuit Breaker
    • Retry/Backoff
    • Concurrency Control
  3. Önce sınırlar: neyin servis olacağına, neyin modül olarak kalacağına ve verinin aralarında nasıl akacağına karar vermek.

    Uygulamada

    Pingua’nın mikroservis mimarisini sıfırdan kurdum; özellikleri gereksinim analizi, mimari, veri modeli, estimation ve entegrasyon testleriyle release’e taşıdım.

    • Microservices
    • Event-Driven Architecture
    • Clean Architecture
    • DDD
    • CQRS
    • Hexagonal Architecture
    • Vertical Slice
  4. Bir ürünün iki yüzü için arayüzler: onu işleten ekibe back office’ler, kullananlara web siteleri ve uygulamalar.

    Uygulamada

    Pingua’nın Back Office’i (önce Vue.js, ardından React / Next.js) ve pingua.app; Kidly’de Audio Book’un React / Next.js arayüzü; oyunumun Flutter uygulaması ve Next.js tanıtım sitesi.

    • React
    • Next.js
    • TypeScript
    • Vue.js
    • TanStack Query
    • Zustand
    • Redux
    • Pinia
    • Flutter
  5. Kanalı duruma göre seçen gerçek zamanlı teslimat: kullanıcı çevrimiçiyse açık socket, değilse push notification.

    Uygulamada

    Pingua’nın Node.js / TypeScript servislerinin yanına Go / WebSocket tabanlı Real-Time Gateway’i ve etkileşimlerle bildirimleri ileten socket/push akışını geliştirdim.

    • Go
    • WebSocket
    • Real-Time Gateway
    • Push notification
    • FCM/APNs
  6. Load balancing ve health check’lerle ayakta duran, failover testinden geçmiş, izlenebilir ve gerektiğinde rollback yapılabilen production.

    Uygulamada

    Pingua’yı AWS ve DigitalOcean’da HAProxy ve tüm API’lerde health check ile işlettim; ekip içi araçları Docker Compose ile self-host ettim; oyunum için GitHub Actions ile CI/CD kurdum.

    • AWS
    • DigitalOcean
    • Docker / Compose
    • HAProxy
    • GitHub Actions
    • Linux
    • Nginx
    • k6
    • Grafana · Prometheus · Loki
    • OpenTelemetry · Sentry
  7. LLM, ses ve görsel servislerini içerik akışlarına bağlıyorum; geliştirme sürecimde de AI destekli araçlar kullanıyorum.

    Uygulamada

    Pingua’nın içerik otomasyonu: OpenAI, Claude ve Gemini ile metin, Azure TTS ve ElevenLabs ile ses, n8n ile orkestrasyon. Kod yazarken Claude Code, Codex, Pi coding agent ve MCP kullanıyorum.

    • OpenAI
    • Claude
    • Gemini
    • Function Calling
    • n8n
    • Azure TTS
    • ElevenLabs
    • Claude Code
    • Codex
    • MCP

(05)İletişim

Sağlam durması gereken bir şey mi kuruyorsunuz? Konuşalım.

Backend, dağıtık sistemler ve full stack alanlarında yeni fırsatlara açığım. Ne kurduğunuzu ve işin nerede zorlaştığını anlatın — e-postanız doğrudan bana ulaşır.

E-posta

erkamcengiz@gmail.com

© 2026 Erkam Cengiz. Tüm hakları saklıdır.

React, TypeScript ve Vite ile geliştirildi.

Başa dön