Skip to content
Back to blog
Kariyer DevOps Kariyer Otomasyon Sistem Yönetimi Bulut Bilişim Linux Docker CI/CD Mistral

DevOps Yolculuğuna Başlarken: Sıfırdan Uzmanlığa Giden Pratik Adımlar

DevOps öğrenmeye nereden başlanır? Bu rehberde, sistem yönetiminden otomasyona, bulut teknolojilerinden güvenliğe kadar DevOps yolculuğunuzun ilk adımlarını detaylı bir şekilde ele alıyoruz. Pratik öneriler, kaynaklar ve gerçek dünya senaryolarıyla desteklenen bu içerik, kariyerinizi DevOps alanında şekillendirmenize yardımcı olacak.

Caner Serbest

Sistem ve Altyapı

10 min read

DevOps Yolculuğuna Başlarken: Sıfırdan Uzmanlığa Giden Pratik Adımlar

DevOps, yazılım geliştirme ve sistem operasyonları arasındaki köprüyü kurarak, daha hızlı, güvenilir ve ölçeklenebilir sistemlerin ortaya çıkmasını sağlayan bir yaklaşımdır. Peki, DevOps öğrenmeye nereden başlanır? Bu sorunun cevabı, sadece teorik bilgilerden değil, aynı zamanda pratik uygulamalardan ve sürekli öğrenme sürecinden geçiyor. Bu rehberde, DevOps yolculuğunuza başlamak için izleyebileceğiniz adımları, kullanabileceğiniz kaynakları ve dikkat etmeniz gereken noktaları detaylı bir şekilde ele alacağız.


📌 DevOps Nedir ve Neden Önemlidir?

DevOps, Development (Geliştirme) ve Operations (Operasyonlar) kelimelerinin birleşiminden oluşur. Temel amacı, yazılım geliştirme ve dağıtım süreçlerini hızlandırmak, güvenilirliği artırmak ve ekip işbirliğini güçlendirmektir. DevOps’un temel prensipleri şunlardır:

  • İşbirliği ve İletişim: Geliştiriciler, sistem yöneticileri ve diğer paydaşlar arasında sürekli iletişim ve işbirliği.
  • Otomatikleştirme: Manuel işlemlerin otomatikleştirilmesi, hata oranlarını azaltır ve verimliliği artırır.
  • Sürekli Entegrasyon ve Dağıtım (CI/CD): Kod değişikliklerinin otomatik olarak test edilip dağıtılması.
  • Güvenlik ve İzleme: Sistemlerin sürekli olarak izlenmesi ve güvenlik açıklarının hızlıca giderilmesi.
  • Kullanıcı Odaklılık: Kullanıcı geri bildirimlerine dayalı olarak sürekli iyileştirme.

DevOps’un faydaları arasında:

  • Daha hızlı yazılım dağıtımı
  • Daha düşük hata oranları
  • Daha iyi ekip işbirliği
  • Daha güvenilir sistemler
  • Daha hızlı geri bildirim döngüsü

🚀 DevOps Öğrenmeye Nereden Başlanır?

DevOps alanında uzmanlaşmak için izleyebileceğiniz bir yol haritası aşağıda yer almaktadır. Bu yol haritası, temel kavramlardan başlayarak ileri düzey konulara kadar ilerlemektedir.

1️⃣ Temel Bilgileri Edinme: Sistem Yönetimi ve Linux

DevOps’un temelinde Linux sistem yönetimi yatar. Linux, sunucu ortamlarında en yaygın kullanılan işletim sistemidir ve DevOps araçlarının çoğu Linux tabanlıdır. Bu nedenle, Linux komut satırını (CLI) ve temel sistem yönetimi konularını öğrenmek DevOps yolculuğunuzun ilk adımı olmalıdır.

🔹 Linux Temelleri

  • Dosya sistemi hiyerarşisi: /, /home, /etc, /var, /usr gibi dizinlerin anlamı ve kullanımı.
  • Dosya ve dizin işlemleri: ls, cd, cp, mv, rm, mkdir, touch komutları.
  • Dosya izinleri: chmod, chown, umask komutları ve dosya izinlerinin (rwx) anlamı.
  • Paket yönetimi: apt, yum, dnf, pacman gibi paket yöneticileri.
  • Process yönetimi: ps, top, htop, kill, systemctl komutları.
  • Ağ yönetimi: ifconfig, ip, ping, netstat, ss, curl, wget komutları.

Önerilen Kaynaklar:

🔹 Temel Ağ Kavramları

DevOps mühendisleri, ağ temellerini de bilmelidir. Ağ kavramları arasında şunlar yer alır:

  • TCP/IP modeli ve protokolleri (HTTP, HTTPS, FTP, SSH, DNS, DHCP)
  • IP adresleme ve alt ağlar (subnetting)
  • Firewall ve güvenlik duvarları
  • Proxy ve reverse proxy
  • VPN ve SSH tünelleri

Önerilen Kaynaklar:


2️⃣ Programlama ve Scripting Dillerini Öğrenme

DevOps mühendisleri, genellikle Python, Bash ve PowerShell gibi scripting dillerini kullanır. Bu diller, otomasyon ve araç geliştirme için hayati önem taşır.

🔹 Python

Python, DevOps alanında en çok kullanılan programlama dillerinden biridir. Python ile aşağıdaki konuları öğrenebilirsiniz:

  • Temel Python syntax ve veri yapıları
  • Dosya işlemleri ve dizin yönetimi
  • HTTP istekleri (requests kütüphanesi)
  • Veri işleme (Pandas, JSON, CSV)
  • API’ler ile etkileşim (REST, GraphQL)
  • Docker ve Kubernetes API’leri ile çalışma

Örnek: Python ile bir dosyanın içeriğini okuma ve yazma

# Dosya okuma
with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

# Dosya yazma
with open('output.txt', 'w') as file:
    file.write('Merhaba, DevOps dünyası!')

Önerilen Kaynaklar:

🔹 Bash Scripting

Bash, Linux sistemlerinde otomasyon için en yaygın kullanılan scripting dilidir. Bash scriptleri, sistem yönetimi ve basit otomasyon görevleri için idealdir.

Örnek: Bir dosyadaki tüm .log dosyalarını silen bir script

#!/bin/bash

# Tüm .log dosyalarını sil
find /var/log -name "*.log" -type f -delete

echo "Tüm .log dosyaları silindi."

Temel Bash komutları:

  • echo, read, if, for, while, case
  • grep, sed, awk (metin işleme)
  • cron (zamanlanmış görevler)

Önerilen Kaynaklar:


3️⃣ Versiyon Kontrol Sistemlerini Öğrenme (Git ve GitHub)

DevOps’un temel prensiplerinden biri sürüm kontrol sistemleridir. Git, en yaygın kullanılan versiyon kontrol sistemidir ve GitHub, GitLab, Bitbucket gibi platformlar da kod depolama ve işbirliği için kullanılır.

🔹 Git Temelleri

  • Repository (Depo) oluşturma ve klonlama
  • Commit, push, pull, merge işlemleri
  • Branching ve merging
  • Conflict çözme
  • GitHub/GitLab kullanımı

Örnek: Yeni bir Git deposu oluşturma ve ilk commit

# Yeni bir depo oluştur
mkdir my-project
cd my-project
git init

# Dosya ekle ve commit et
echo "Hello, DevOps!" > README.md
git add README.md
git commit -m "Initial commit"

# Uzak depoya push et
git remote add origin https://github.com/username/my-project.git
git push -u origin main

Önerilen Kaynaklar:


4️⃣ Altyapı Olarak Kod (Infrastructure as Code - IaC)

DevOps mühendisleri, altyapıyı elle yapılandırmak yerine kod olarak tanımlamayı tercih eder. Bu yaklaşım, altyapının tekrarlanabilir, sürdürülebilir ve otomatikleştirilebilir olmasını sağlar. En yaygın IaC araçları şunlardır:

🔹 Terraform

Terraform, bulut altyapısını tanımlamak ve yönetmek için kullanılan bir IaC aracıdır. AWS, Azure, GCP gibi bulut sağlayıcılarıyla entegre çalışır.

Örnek: AWS’de bir EC2 instance oluşturma (Terraform)

# main.tf
provider "aws" {
  region = "us-east-1"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
  tags = {
    Name = "DevOps-Example"
  }
}

Komutlar:

terraform init    # Terraform'u başlat
terraform plan    # Değişiklikleri göster
terraform apply   # Değişiklikleri uygula
terraform destroy # Kaynakları sil

Önerilen Kaynaklar:

🔹 Ansible

Ansible, konfigürasyon yönetimi ve uygulama dağıtımı için kullanılan bir IaC aracıdır. SSH üzerinden çalışır ve agent gerektirmez.

Örnek: Bir web sunucusunu Ansible ile kurma

# playbook.yml
---
- name: Kurulum ve yapılandırma
  hosts: all
  become: yes
  tasks:
    - name: Paketleri güncelle
      apt:
        update_cache: yes

    - name: Nginx kur
      apt:
        name: nginx
        state: present

    - name: Nginx'i başlat
      service:
        name: nginx
        state: started
        enabled: yes

Komutlar:

ansible-playbook playbook.yml -i inventory.ini

Önerilen Kaynaklar:


5️⃣ Konteynerleştirme ve Docker

Konteynerler, uygulamaların izole edilmiş ortamlarda çalışmasını sağlayan hafif sanal makinelerdir. Docker, en popüler konteyner platformudur ve DevOps’ta yaygın olarak kullanılır.

🔹 Docker Temelleri

  • Dockerfile yazma
  • Image oluşturma ve yönetme
  • Container çalıştırma ve durdurma
  • Docker Compose ile çoklu container yönetimi
  • Docker ağları ve hacimleri

Örnek: Basit bir Python uygulaması için Dockerfile

# Dockerfile
FROM python:3.9-slim

WORKDIR /app
COPY . /app

RUN pip install --no-cache-dir -r requirements.txt

CMD ["python", "app.py"]

Komutlar:

# Image oluştur
docker build -t my-python-app .

# Container çalıştır
docker run -d -p 8000:8000 --name my-app my-python-app

# Container'ı durdur
docker stop my-app

Önerilen Kaynaklar:


6️⃣ Sürekli Entegrasyon ve Dağıtım (CI/CD)

CI/CD, kod değişikliklerinin otomatik olarak test edilip dağıtılmasını sağlayan bir DevOps pratiğidir. En yaygın CI/CD araçları şunlardır:

🔹 GitHub Actions

GitHub Actions, GitHub deposunda otomatik workflow’lar oluşturmanızı sağlar.

Örnek: Bir Python uygulamasını test eden ve dağıtan workflow

# .github/workflows/python-ci.yml
name: Python CI/CD

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: "3.9"
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
      - name: Run tests
        run: |
          python -m pytest

  deploy:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Deploy to production
        run: echo "Deployment işlemi burada yapılacak"

🔹 Jenkins

Jenkins, açık kaynaklı bir CI/CD aracıdır ve geniş bir eklenti ekosistemine sahiptir.

Örnek: Jenkinsfile (Pipeline tanımı)

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'echo "Building..."'
            }
        }
        stage('Test') {
            steps {
                sh 'echo "Testing..."'
            }
        }
        stage('Deploy') {
            steps {
                sh 'echo "Deploying..."'
            }
        }
    }
}

Önerilen Kaynaklar:


7️⃣ Bulut Bilişim ve Hizmet Sağlayıcıları

DevOps mühendisleri, bulut platformlarında çalışan uygulamaları yönetmek için AWS, Azure ve Google Cloud Platform (GCP) gibi bulut sağlayıcılarını öğrenmelidir.

🔹 AWS Temelleri

  • EC2 (Sanallaştırılmış sunucular)
  • S3 (Basit depolama hizmeti)
  • Lambda (Sunucusuz fonksiyonlar)
  • RDS (Yönetilen veritabanları)
  • IAM (Kimlik ve erişim yönetimi)
  • CloudFormation (IaC aracı)

Önerilen Kaynaklar:


8️⃣ Güvenlik ve İzleme

DevOps mühendisleri, sistemlerin güvenli ve izlenebilir olmasını sağlamakla sorumludur. Bu nedenle, aşağıdaki konuları öğrenmek önemlidir:

🔹 Güvenlik Temelleri

  • SSH anahtar tabanlı giriş
  • Firewall ve güvenlik duvarları
  • Güvenlik açıklarını tarama (Nmap, OpenVAS)
  • Gizli anahtar yönetimi (Vault, AWS Secrets Manager)

🔹 İzleme ve Log Yönetimi

  • Log toplama ve analiz (ELK Stack, Grafana, Prometheus)
  • Uygulama performans izleme (APM)
  • Uyarı sistemleri (Alertmanager, PagerDuty)

Örnek: Prometheus ve Grafana kurulumu

# Prometheus'u indir ve çalıştır
wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz
tar xvfz prometheus-2.47.0.linux-amd64.tar.gz
cd prometheus-2.47.0.linux-amd64
./prometheus --config.file=prometheus.yml

# Grafana'yı indir ve çalıştır
docker run -d -p 3000:3000 --name=grafana grafana/grafana

Önerilen Kaynaklar:


📚 DevOps Öğrenme Kaynakları

Kaynak TürüÖnerilen Kaynaklar
Kitaplar- The Phoenix Project
- The DevOps Handbook
- Site Reliability Engineering (SRE)
- Kubernetes: Up and Running
- Docker Deep Dive
--------------------------------------------------------------------------------------------------------------------------
Çevrimiçi Kurslar- DevOps Bootcamp (KodeKloud)
- DevOps Path (Linux Academy)
- DevOps Essentials (Udemy)
- Google Cloud DevOps (Coursera)
--------------------------------------------------------------------------------------------------------------------------
Bloglar ve Siteler- DevOps.com
- The New Stack
- DevOps Cube
- Medium - DevOps Tag
--------------------------------------------------------------------------------------------------------------------------
Topluluklar- DevOps Discord Sunucuları
- r/devops (Reddit)
- DevOps Stack Exchange
--------------------------------------------------------------------------------------------------------------------------

🎯 DevOps Yolculuğunuzda Takip Edilmesi Gereken Adımlar

  1. Temel sistem yönetimi ve Linux bilgilerini edinin.
  2. Programlama ve scripting dillerini (Python, Bash) öğrenin.
  3. Git ve versiyon kontrol sistemlerini kullanmayı öğrenin.
  4. Altyapıyı kod olarak tanımlamayı (IaC) öğrenin (Terraform, Ansible).
  5. Konteynerleştirme ve Docker’ı öğrenin.
  6. CI/CD pipeline’ları oluşturmayı öğrenin (GitHub Actions, Jenkins).
  7. Bulut platformlarını (AWS, Azure, GCP) öğrenin.
  8. Güvenlik ve izleme araçlarını kullanmayı öğrenin.
  9. Gerçek dünya projeleri üzerinde pratik yapın.
  10. Topluluklara katılın ve sürekli öğrenmeye devam edin.

💡 Pratik İpuçları ve Tavsiyeler

Pratik Yapın, Pratik Yapın, Pratik Yapın!

DevOps, teorik bilgiden çok pratik uygulama gerektiren bir alandır. Aşağıdaki önerileri takip ederek pratik yapabilirsiniz:

  • Kendi homelab ortamınızı kurun. Birden fazla Linux sunucusu, Docker konteynerleri ve bulut kaynakları kullanarak bir lab ortamı oluşturun.
  • Küçük projeler geliştirin. Örneğin, bir web uygulaması dağıtımı, bir API sunucusu kurma veya bir veritabanı yönetimi.
  • Açık kaynak projelerine katkıda bulunun. GitHub’da DevOps araçlarına katkıda bulunarak deneyim kazanın.
  • Blog yazın ve dokümantasyon oluşturun. Öğrendiklerinizi başkalarıyla paylaşarak bilgilerinizi pekiştirin.

Sürekli Öğrenmeye Açık Olun

DevOps alanı sürekli değişen ve gelişen bir alandır. Yeni araçlar, teknolojiler ve en iyi uygulamalar sürekli olarak ortaya çıkmaktadır. Bu nedenle:

  • Güncel kalın. Tech blogları, haber bültenleri ve sosyal medya takip edin.
  • Konferanslara ve webinarlara katılın. Örneğin, DevOpsDays, KubeCon, AWS re:Invent gibi etkinlikler.
  • Sertifikalar alın. AWS, Azure, Google Cloud, Kubernetes gibi alanlarda sertifikalar alarak uzmanlığınızı belgeleyin.

İşbirliği ve İletişim Becerilerinizi Geliştirin

DevOps, sadece teknik becerilerden ibaret değildir. Aynı zamanda ekip çalışması, iletişim ve problem çözme becerileri de gerektirir. Bu nedenle:

  • Diğer geliştiriciler ve sistem yöneticileriyle çalışın.
  • Açık kaynak projelerinde yer alın.
  • Topluluklara katılın ve ağ oluşturun.

🚀 DevOps Kariyerine Başlarken Karşılaşabileceğiniz Zorluklar

DevOps yolculuğuna başlarken karşılaşabileceğiniz bazı zorluklar şunlardır:

  1. Aşırı bilgi yüklemesi: DevOps alanında çok fazla araç ve teknoloji bulunmaktadır. Bu nedenle, odaklanmak ve öncelikleri belirlemek önemlidir.
  2. Pratik eksikliği: Teorik bilgiler yeterli değildir. Gerçek dünya projeleri üzerinde çalışmak gereklidir.
  3. Değişen teknolojiler: DevOps alanında sürekli yeni araçlar ve teknolojiler ortaya çıkmaktadır. Bu nedenle, sürekli öğrenmeye açık olmak önemlidir.
  4. İşbirliği ve iletişim: DevOps, sadece teknik becerilerden ibaret değildir. İletişim ve ekip çalışması da önemlidir.

📌 Sonuç: DevOps Yolculuğunuzu Başlatın!

DevOps, yazılım geliştirme ve sistem operasyonları arasındaki köprüyü kurarak, daha hızlı, güvenilir ve ölçeklenebilir sistemlerin ortaya çıkmasını sağlayan bir yaklaşımdır. Bu rehberde, DevOps öğrenmeye nereden başlanır? sorusunun cevabını detaylı bir şekilde ele aldık.

DevOps yolculuğunuza başlamak için aşağıdaki adımları takip edebilirsiniz:

  1. Temel sistem yönetimi ve Linux bilgilerini edinin.
  2. Programlama ve scripting dillerini öğrenin.
  3. Git ve versiyon kontrol sistemlerini kullanmayı öğrenin.
  4. Altyapıyı kod olarak tanımlamayı öğrenin.
  5. Konteynerleştirme ve Docker’ı öğrenin.
  6. CI/CD pipeline’ları oluşturmayı öğrenin.
  7. Bulut platformlarını öğrenin.
  8. Güvenlik ve izleme araçlarını kullanmayı öğrenin.
  9. Gerçek dünya projeleri üzerinde pratik yapın.
  10. Sürekli öğrenmeye ve gelişmeye devam edin.

Unutmayın, DevOps bir yolculuktur, bir varış noktası değil. Sürekli öğrenmeye, pratik yapmaya ve kendinizi geliştirmeye devam edin. İyi şanslar! 🚀


Siz de DevOps yolculuğunuza başlamak için hangi adımı ilk olarak atacaksınız? Yorumlarınızı ve deneyimlerinizi paylaşın!


Bu yazı Mistral ile otomatik oluşturulmuştur.