ElasticSearch, Docker ve Kubernetes Teknoloji Mülakat Soruları

ElasticSearch, Docker ve Kubernetes konularında hazırlanmış kapsamlı soru-cevap arşivi

ElasticSearch

30 adet ileri seviye ElasticSearch sorusu ve cevabı

Docker

25 adet ileri seviye Docker sorusu ve cevabı

Kubernetes

25 adet ileri seviye Kubernetes sorusu ve cevabı

ElasticSearch Soruları

Senior Java/Spring Boot Developer ve DevOps rollerine yönelik ileri seviye ElasticSearch mülakat soruları ve cevapları.

1. ElasticSearch nedir ve hangi problemleri çözer?

ElasticSearch, dağıtık, full-text search ve analiz motorudur. Büyük veri üzerinde hızlı arama, filtreleme ve analiz yapmayı sağlar.

  • Log analizi (ELK stack: Elasticsearch + Logstash + Kibana)
  • Full-text arama (Google benzeri sorgular)
  • Real-time analytics

2. ElasticSearch'te Index nedir?

Index, ilişkisel veritabanındaki "database" gibidir. Belgeler (documents) burada saklanır.

  • Bir index = birçok document içerir.
  • Index şeması (mapping) ile alan tipleri tanımlanır.

Yeni index oluşturma:

curl -X PUT "localhost:9200/products" -H 'Content-Type: application/json' -d'
{
  "settings": { "number_of_shards": 3, "number_of_replicas": 2 },
  "mappings": { "properties": { "name": { "type": "text" } } }
}'

3. ElasticSearch shard ve replica farkı nedir?

  • Primary Shard: Verinin ana kopyasıdır.
  • Replica Shard: Yedek kopyadır, yüksek erişilebilirlik sağlar.

Index detaylarını görmek:

curl -X GET "localhost:9200/products/_settings?pretty"

4. Full-text arama ve exact match arama farkı nedir?

  • Full-text search: Analyzer kullanır, kelimeleri parçalar. (text field)
  • Exact match: String birebir eşleşme yapar. (keyword field)

Örnek:

curl -X GET "localhost:9200/products/_search" -H 'Content-Type: application/json' -d'
{
  "query": { "match": { "name": "laptop" } }
}'

5. ElasticSearch mapping nedir?

Mapping, field tiplerini ve analiz biçimlerini tanımlar. Yanlış mapping performans sorunlarına yol açar.

Örnek:

curl -X PUT "localhost:9200/users" -H 'Content-Type: application/json' -d'
{
  "mappings": {
    "properties": {
      "username": { "type": "keyword" },
      "bio": { "type": "text" }
    }
  }
}'

6. ElasticSearch'te analyzer nedir?

Analyzer, metni tokenize eder.

  • Standart analyzer
  • Keyword analyzer
  • Custom analyzer

Analyzer test:

curl -X GET "localhost:9200/_analyze" -H 'Content-Type: application/json' -d'
{ "analyzer": "standard", "text": "Spring Boot Developer" }'

7. ElasticSearch'te wildcard query performans sorunları neden çıkarır?

Wildcard (*) kullanmak, tüm index'i tarar ve maliyetlidir. Büyük veri setlerinde slow query sorunlarına yol açar. Alternatif: prefix query veya n-gram analyzer.

8. ElasticSearch'te bulk API nedir?

Çok sayıda document insert/update işlemini tek istekte yapmaya yarar.

Bulk insert:

curl -X POST "localhost:9200/_bulk" -H 'Content-Type: application/json' -d'
{ "index": { "_index": "products", "_id": "1" } }
{ "name": "Laptop", "price": 1200 }
{ "index": { "_index": "products", "_id": "2" } }
{ "name": "Phone", "price": 800 }
'

9. ElasticSearch ile relational join yapılabilir mi?

ElasticSearch NoSQL tabanlıdır, join işlemleri yoktur. Alternatif:

  • Nested objects
  • Parent-child ilişkisi

10. ElasticSearch cluster health nasıl kontrol edilir?

Cluster sağlığını görmek için:

curl -X GET "localhost:9200/_cluster/health?pretty"

Durumlar:

  • green → her şey sağlıklı
  • yellow → replica shard eksik
  • red → primary shard çalışmıyor

11. ElasticSearch snapshot nedir?

Snapshot, index/cluster backup yöntemidir.

Snapshot repo oluşturma:

curl -X PUT "localhost:9200/_snapshot/my_backup" -H 'Content-Type: application/json' -d'
{ "type": "fs", "settings": { "location": "/mount/backups" } }'

12. ElasticSearch scaling nasıl yapılır?

  • Shard sayısını artırmak
  • Replica sayısını artırmak
  • Node eklemek

Index için shard ayarı:

curl -X PUT "localhost:9200/products/_settings" -H 'Content-Type: application/json' -d'
{ "index": { "number_of_replicas": 3 } }'

13. ElasticSearch'te query vs filter farkı nedir?

  • Query: Skorlama yapar.
  • Filter: Skorlama yapmaz, daha hızlıdır.

Örnek:

{
  "query": {
    "bool": {
      "must": { "match": { "name": "laptop" } },
      "filter": { "term": { "price": 1200 } }
    }
  }
}

14. ElasticSearch monitoring nasıl yapılır?

  • X-Pack Monitoring
  • Prometheus + Grafana entegrasyonu
  • _cat API

Cluster node listesi:

curl -X GET "localhost:9200/_cat/nodes?v"

15. ElasticSearch index lifecycle management (ILM) nedir?

Index'lerin yaşlanma politikaları ile otomatik silinmesini, taşınmasını sağlar.

  • Hot → aktif veri
  • Warm → sık erişilmeyen
  • Cold → arşiv
  • Delete → silme

16. ElasticSearch docker ile nasıl çalıştırılır?

Tek node ElasticSearch:

docker run -d --name es01 -p 9200:9200   -e "discovery.type=single-node"   docker.elastic.co/elasticsearch/elasticsearch:8.14.3

17. ElasticSearch kubernetes ile nasıl çalıştırılır?

K8s manifest örneği:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: elasticsearch
spec:
  replicas: 1
  selector:
    matchLabels: { app: elasticsearch }
  template:
    metadata:
      labels: { app: elasticsearch }
    spec:
      containers:
      - name: es
        image: docker.elastic.co/elasticsearch/elasticsearch:8.14.3
        ports:
        - containerPort: 9200
        env:
        - name: discovery.type
          value: single-node

18. ElasticSearch'te refresh interval nedir?

Varsayılan olarak 1s. Her 1 saniyede bir index verileri search için görünür olur.

Ayarlamak:

curl -X PUT "localhost:9200/products/_settings" -H 'Content-Type: application/json' -d'
{ "index": { "refresh_interval": "30s" } }'

19. ElasticSearch'te aggregation nedir?

SQL GROUP BY benzeri, veri üzerinde toplu analiz yapılmasını sağlar.

Ortalama fiyat:

{
  "aggs": { "avg_price": { "avg": { "field": "price" } } }
}

20. ElasticSearch JVM heap memory neden önemlidir?

ElasticSearch Java tabanlıdır. JVM heap belleği index performansını doğrudan etkiler.

  • Öneri: Toplam RAM'in %50'si, max 32GB

jvm.options dosyasında:

-Xms8g
-Xmx8g

21. ElasticSearch slow query nasıl tespit edilir?

  • Profile API
  • Slow Log (index logs)

Profile API:

curl -X GET "localhost:9200/products/_search" -H 'Content-Type: application/json' -d'
{ "profile": true, "query": { "match": { "name": "laptop" } } }'

22. ElasticSearch'te reindex API nedir?

Bir index'ten diğerine veri kopyalar.

Örnek:

curl -X POST "localhost:9200/_reindex" -H 'Content-Type: application/json' -d'
{ "source": { "index": "old_products" }, "dest": { "index": "new_products" } }'

23. ElasticSearch security nasıl sağlanır?

  • X-Pack Security (TLS, RBAC)
  • API Key authentication
  • Shield plugin

24. ElasticSearch index alias nedir?

Alias, index'e takma addır. Versiyonlama ve migration için kullanılır.

Örnek:

curl -X POST "localhost:9200/_aliases" -H 'Content-Type: application/json' -d'
{ "actions": [ { "add": { "index": "products_v2", "alias": "products" } } ] }
'

25. ElasticSearch Hot-Warm-Cold mimarisi nedir?

  • Hot → hızlı SSD node'lar
  • Warm → yavaş disk, az sorgulanan veri
  • Cold → arşiv

Büyük log sistemlerinde cost optimization sağlar.

26. ElasticSearch vs Solr farkı nedir?

  • ElasticSearch → JSON REST API, dağıtık kolay.
  • Solr → XML tabanlı, eski Apache Lucene tabanlı.

27. ElasticSearch log analizi için nasıl kullanılır?

  • Logstash ile log toplanır.
  • Elasticsearch'e indexlenir.
  • Kibana ile görselleştirilir.

28. ElasticSearch'te circuit breaker nedir?

Aşırı memory kullanımında query'leri durdurarak cluster'ın çökmesini engeller.

Circuit breaker limit:

curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{ "persistent": { "indices.breaker.request.limit": "60%" } }'

29. ElasticSearch upgrade nasıl yapılır?

  • Rolling upgrade (node by node)
  • Snapshot alınarak full upgrade

Versiyon kontrol:

curl -X GET "localhost:9200"

30. ElasticSearch best practices nelerdir?

  • Doğru mapping kullan
  • keyword vs text farkına dikkat et
  • Shard sayısını optimize et
  • Snapshot kullan
  • ILM ile index yönet

Docker Soruları

Senior seviye Docker mülakat soruları ve cevapları.

1. Docker ile sanal makine arasındaki fark nedir?

  • Sanal makineler (VM): Her biri kendi işletim sistemi ile çalışır. Hypervisor üzerinde kaynakları böler.
  • Docker konteynerleri: Host OS kernelini paylaşır, yalnızca bağımlılıkları ve uygulamayı kapsar. Daha hafif ve hızlıdır.

2. Docker image ile container arasındaki fark nedir?

  • Image: Katmanlı yapıda, değiştirilemez (immutable) şablon.
  • Container: Image'in çalışan hali.

Komut:

docker images        # mevcut imajları listeler
docker ps -a         # çalışan/duran containerları listeler

3. Dockerfile nedir? Örnek veriniz.

Image üretmek için kullanılan talimat dosyasıdır.

Örnek:

FROM openjdk:17
WORKDIR /app
COPY target/app.jar app.jar
CMD ["java", "-jar", "app.jar"]

Build komutu:

docker build -t myapp:1.0 .

4. Docker volume nedir, neden kullanılır?

Verilerin container silinse bile kalıcı olmasını sağlar.

Komut:

docker volume create mydata
docker run -v mydata:/var/lib/mysql mysql:8

5. Bind mount ile volume arasındaki fark nedir?

  • Bind mount: Host'taki bir klasör doğrudan bağlanır.
  • Volume: Docker tarafından yönetilen depolama.

6. Docker network tipleri nelerdir?

  • bridge (varsayılan, containerlar arası iletişim)
  • host (container host ağını paylaşır)
  • none (ağsız container)

Komut:

docker network ls
docker run --network=host nginx

7. Multi-stage build nedir?

Farklı aşamalarda build yaparak gereksiz bağımlılıkları imajdan atmak.

Örnek:

FROM maven:3.8.5 AS build
WORKDIR /app
COPY . .
RUN mvn package -DskipTests

FROM openjdk:17
WORKDIR /app
COPY --from=build /app/target/app.jar app.jar
CMD ["java", "-jar", "app.jar"]

8. Docker container içindeki logları nasıl izlersiniz?

docker logs -f container_id

9. Docker compose nedir?

Birden fazla servisi YAML dosyası ile yönetmeye yarar.

Örnek docker-compose.yml:

version: "3"
services:
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: secret
  app:
    build: .
    ports:
      - "8080:8080"

Çalıştırma:

docker-compose up -d

10. Docker registry nedir?

Image saklanan merkez.

  • Public: Docker Hub
  • Private registry kurulabilir.

Kurulum:

docker run -d -p 5000:5000 registry:2

11. Bir container içine nasıl girersiniz?

docker exec -it container_id /bin/bash

12. Docker image boyutunu küçültmek için hangi yöntemler vardır?

  • Multi-stage build
  • Alpine bazlı imajlar
  • Gereksiz cache temizleme

13. Container yeniden başlatma politikaları nelerdir?

  • no
  • always
  • unless-stopped
  • on-failure

14. Docker healthcheck nedir?

HEALTHCHECK CMD curl --fail http://localhost:8080/health || exit 1

15. Container limitlerini nasıl belirlersiniz?

docker run -m 512m --cpus="1.0" nginx

16. Docker image katmanlarını nasıl listelersiniz?

docker history myapp:1.0

17. Docker prune komutu ne yapar?

docker system prune -a

Kullanılmayan container, network ve imajları siler.

18. Docker Swarm nedir?

Docker'ın kendi orchestration aracı. Servisler cluster içinde yönetilir.

19. Overlay network nedir?

Swarm veya Kubernetes için çoklu host arasında çalışan network türü.

20. Docker secrets nedir?

Gizli bilgileri güvenli saklar.

21. Docker ile CI/CD nasıl yapılır?

  • Build & push image (Jenkins, GitHub Actions)
  • Deploy Kubernetes/Docker ortamına

22. Docker stats ne işe yarar?

docker stats

Canlı CPU, bellek, network tüketimi gösterir.

23. Docker checkpoint nedir?

Container'ın çalıştığı anı snapshot alıp durdurup tekrar başlatma özelliği.

24. Docker güvenliği nasıl sağlanır?

  • Rootless mode
  • Read-only filesystem
  • Secrets & Vault

25. Bir Docker imajının hangi layer'lardan oluştuğunu nasıl görürsünüz?

docker inspect image_id

Kubernetes Soruları

Senior seviye Kubernetes mülakat soruları ve cevapları.

1. Kubernetes nedir?

Container orkestrasyon aracıdır. Otomatik scaling, self-healing, service discovery sağlar.

2. Pod nedir?

Kubernetes'te en küçük deploy edilebilir birimdir.

3. ReplicaSet nedir?

Pod'ların belirlenen sayıda çalışmasını garanti eder.

Komut:

kubectl get rs

4. Deployment nedir?

ReplicaSet + rollout + rollback desteği ile pod yönetir.

5. Service türleri nelerdir?

  • ClusterIP
  • NodePort
  • LoadBalancer
  • ExternalName

6. ConfigMap ile Secret arasındaki fark nedir?

  • ConfigMap: Duyarlı olmayan config verileri
  • Secret: Base64 ile encode edilmiş gizli veriler

7. Namespace nedir?

Kaynakları mantıksal olarak ayırmak için kullanılır.

kubectl create ns prod

8. Ingress nedir?

HTTP(S) routing kuralları tanımlar.

9. StatefulSet nedir?

Stateful uygulamaları yönetir (DB gibi).

10. DaemonSet nedir?

Her node üzerinde 1 pod çalıştırır. (örn. log agent)

11. Job ve CronJob farkı nedir?

  • Job: Bir defalık çalışır.
  • CronJob: Belirli zamanlarda tekrarlar.

12. Liveness ve Readiness probe farkı nedir?

  • Liveness: Container sağ mı?
  • Readiness: Trafik almaya hazır mı?

13. Horizontal Pod Autoscaler nedir?

CPU/memory metriklerine göre pod sayısını artırır/azaltır.

kubectl autoscale deployment myapp --cpu-percent=50 --min=2 --max=10

14. Persistent Volume (PV) ile Persistent Volume Claim (PVC) farkı nedir?

  • PV: Depolama kaynağı
  • PVC: Uygulamanın talep ettiği depolama

15. Node Affinity nedir?

Pod'un belirli node üzerinde çalışmasını sağlar.

16. Taint ve Toleration nedir?

  • Taint: Node'a kısıtlama koyar.
  • Toleration: Pod'un bu node'da çalışmasına izin verir.

17. ServiceAccount nedir?

Pod'ların API server'a erişimi için kimlik doğrulama mekanizmasıdır.

18. RBAC nedir?

Role-Based Access Control, yetkilendirme sistemidir.

19. Etcd nedir?

Kubernetes'in tüm verilerini sakladığı dağıtık key-value store'dur.

20. Control Plane bileşenleri nelerdir?

  • API Server
  • Controller Manager
  • Scheduler
  • Etcd

21. Kubectl ile tüm podları nasıl listelersiniz?

kubectl get pods -A

22. Pod loglarını nasıl izlersiniz?

kubectl logs -f pod_name

23. Bir deployment rollback nasıl yapılır?

kubectl rollout undo deployment myapp

24. Kubernetes cluster sağlığını nasıl kontrol edersiniz?

kubectl get componentstatuses
kubectl get nodes

25. Helm nedir?

Kubernetes için paket yöneticisidir. Chart'lar ile uygulama dağıtımı yapılır.