DevOps Öğrenmeye Nereden Başlanır? Sürdürülebilir Bir Yol Haritası
Caner Serbest’in kaleminden, sıfırdan DevOps dünyasına adım atmak isteyenler için gerçekçi, teoriden arındırılmış ve sahada uygulanabilir kapsamlı bir yol haritası.
Caner Serbest
Sistem ve Altyapı
4 dk okuma
DevOps Öğrenmeye Nereden Başlanır? Sürdürülebilir Bir Yol Haritası
Teknik kariyerinde bir dönüm noktasına gelen pek çok sistem yöneticisi veya yazılımcı, bir gün kendine şu soruyu sorar: “DevOps öğrenmeye nereden başlamalıyım?” İnternette bu sorunun cevabını aradığınızda karşınıza genellikle çözünürlüğü bile okunmayan, yüzlerce teknolojinin birbirine oklarla bağlandığı o meşhur “DevOps Roadmap” görselleri çıkar. Kubernetes, Terraform, Ansible, Prometheus, AWS, Go, Python derken liste uzar gider.
Bu devasa haritalar ilk başta heyecan verici görünse de, kısa süre içinde tükenmişlik hissine (burnout) yol açar. Her şeyi aynı anda öğrenmeye çalışmak, hiçbir şeyi gerçekten öğrenememekle sonuçlanır. Bu yazıda, teorik ezberlerden uzaklaşarak, sahada karşılığı olan, gerçekçi ve adım adım uygulanabilir bir DevOps öğrenme stratejisini ele alacağız.
1. Zihniyet Değişimi: DevOps Bir Unvan Değil, Bir Kültürdür
Öğrenme sürecine teknik araçlarla başlamadan önce, DevOps kavramının ne olduğunu zihnimizde doğru oturtmalıyız. DevOps, sadece “Docker kullanan sistemci” veya “Terraform yazan geliştirici” olmak değildir.
DevOps; yazılım geliştirme (Dev) ile operasyon (Ops) süreçleri arasındaki duvarları yıkan, otomasyonu merkeze alan ve sürekli iyileştirmeyi savunan bir kültürdür. Bu kültürü benimsemek için şu temel prensipleri kabul etmeniz gerekir:
- Her şeyi otomatize edin: Manuel yapılan her iş, hata yapmaya mahkumdur ve ölçeklenemez.
- Altyapıyı kod olarak ele alın (IaC): Sunucuları elle yapılandırmak yerine kod ile yönetin.
- Süreçleri ölçün ve izleyin: Loglama ve metrik toplama, sistemin kalbidir.
2. Sağlam Bir Temel: Linux ve Ağ Bilgisi Olmadan Asla
Bir binanın temeli ne kadar sağlamsa, üzerine çıkacağınız katlar da o kadar güvenli olur. DevOps dünyasında bu temel Linux ve Temel Ağ (Network) bilgisiyle atılır.
Pek çok kişi doğrudan Docker veya Kubernetes öğrenmek ister. Ancak konteyner dediğimiz yapılar, özünde Linux çekirdeğinin sunduğu izolasyon özelliklerini (cgroups, namespaces) kullanır. Alt seviyedeki sistemi bilmeden üst seviyedeki araçlarda karşılaştığınız bir hatayı çözmeniz imkansıza yakın olur.
Odaklanmanız Gereken Linux Konuları:
- Dosya izinleri, kullanıcı ve grup yönetimi
- Süreç yönetimi (Process management,
ps,top,htop,systemd) - Disk ve bellek yönetimi (
df,du,free,iostat) - Temel Bash betik yazımı (Scripting)
- SSH ve anahtar tabanlı kimlik doğrulama mekanizmaları
Odaklanmanız Gereken Ağ Konuları:
- TCP/IP modeli ve temel port bilgileri
- DNS çalışma mantığı
- HTTP/HTTPS protokolleri ve istek/yanıt döngüsü
- Temel güvenlik duvarı (Firewall) mantığı (
iptables,ufw)
3. Versiyon Kontrol Sistemi: Git
Altyapıyı kod olarak yazacaksanız, bu kodun bir yerde saklanması ve versiyonlanması gerekir. Git, sadece yazılımcıların değil, DevOps mühendislerinin de en temel aracıdır.
Git öğrenirken sadece git commit ve git push komutlarını bilmek yetmez. Kod çakışmalarını (merge conflicts) çözebilmek, branch stratejilerini anlamak ve projeleri güvenle yönetebilmek gerekir. GitHub veya GitLab üzerinde kendi yapılandırma dosyalarınızı saklayacağınız kişisel bir depo (repository) oluşturarak işe başlayın.
4. Konteyner Dünyasına Giriş: Docker
Linux temellerini ve Git’i öğrendikten sonra sıra modern uygulama dağıtımının standardı olan Docker’a gelir.
Docker, uygulamaları ve bağımlılıklarını izole bir ortamda paketlemenizi sağlar. “Bilgisayarımda çalışıyordu ama sunucuda çalışmıyor” bahanesini tarihe gömen araç budur.
Docker Öğrenme Adımları:
- Temel Kavramlar: Image nedir, Container nedir, Registry nedir?
- Komut Satırı:
docker run,docker build,docker ps,docker logskomutlarını pratik yapın. - Dockerfile Yazımı: Basit bir web uygulamasını (örneğin Node.js veya Python tabanlı) Dockerize edin.
- Docker Compose: Birden fazla konteynerin (örneğin Web Sunucusu + Veritabanı) birlikte çalışmasını ve ağ iletişimini yönetmeyi öğrenin.
Örnek basit bir docker-compose.yml dosyası:
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
restart: always
database:
image: postgres:15-alpine
environment:
POSTGRES_DB: mydb
POSTGRES_USER: user
POSTGRES_PASSWORD: secretpassword
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
5. Sürekli Entegrasyon ve Sürekli Dağıtım (CI/CD)
Kodun yazılmasından canlıya alınmasına kadar geçen süreci otomatikleştirmek DevOps’un kalbidir. CI/CD süreçlerini anlamak için GitHub Actions, GitLab CI veya Jenkins gibi araçlardan birini seçmelisiniz.
Başlangıç için GitHub Actions en kolay ve erişilebilir olanıdır. Çünkü ekstra bir sunucu kurmanıza gerek kalmaz, doğrudan kod deponuz üzerinde çalışır.
Basit Bir CI/CD Senaryosu:
- Geliştirici kodu
maindalına gönderir (push). - GitHub Actions tetiklenir.
- Kodun testleri otomatik olarak çalıştırılır.
- Testler başarılı olursa, uygulama Docker imajı olarak paketlenir ve bir registry’ye gönderilir.
6. Altyapıyı Kod Olarak Yönetmek (IaC)
Sunucuları elle kurma devri çoktan kapandı. Cloud ortamlarında yüzlerce sunucuyu tek tek el ile yapılandırmak imkansızdır. Bu noktada Terraform (veya OpenTofu) devreye girer.
Terraform ile bulut sağlayıcınızdaki (AWS, GCP, DigitalOcean vb.) kaynakları kod yazarak oluşturursunuz. Başlangıçta ücretsiz katmanı olan bir bulut sağlayıcı seçerek küçük bir sanal sunucu ve ağ bileşenlerini Terraform ile ayağa kaldırmayı deneyin.
7. İzleme ve Loglama (Monitoring & Observability)
Çalışan bir sistemi izleyemiyorsanız, o sistemin yöneticisi değil sadece şanslı bir kullanıcısısınızdır. Sistemlerin sağlığını takip etmek için metrik toplamak ve logları analiz etmek şarttır.
Bu alanda endüstri standardı haline gelen Prometheus (metrik toplama) ve Grafana (görselleştirme) ikilisini öğrenerek başlamalısınız. Kendi yerel makinenizde veya bir test sunucusunda çalışan bir uygulamanın CPU, bellek ve HTTP istek sürelerini Grafana panellerinde görselleştirmek müthiş bir tatmin sağlayacaktır.
Sık Yapılan Hatalar ve Kaçınma Yolları
Öğrenme sürecinde en sık düşülen tuzaklar şunlardır:
- Tutorial Hell (Eğitim Cehennemi): Sürekli video izlemek ama hiç elleri kirletmemek. İzlediğiniz her konuyu mutlaka kendi laboratuvar ortamınızda (Homelab) deneyin.
- Araç Odaklı Olmak: Araçlar geçicidir, prensipler kalıcıdır. Kubernetes öğrenmek yerine konteyner mantığını anlamaya odaklanın, araçlar kendiliğinden çözülecektir.
- Her Şeyi Aynı Anda Öğrenmeye Çalışmak: Yukarıda saydığım adımları sırayla, sindire sindire atın. Linux bitmeden Docker’a geçmeyin.
Sonuç
DevOps öğrenmek bir maratondur, sprint değil. Bugün başladığınız bu yolculukta sabırlı olmak, küçük projeler üretmek ve hata yapmaktan korkmamak en büyük sermayenizdir. Unutmayın ki en iyi öğrenme yöntemi, çalışan bir sistemi bozup onu tekrar tamir etmeye çalışmaktır. Adım adım ilerleyin, temelinizi sağlam tutun ve sürekli üretin.
Bu yazı Gemini ile otomatik oluşturulmuştur.