Manuel On-Call Yönetiminin Zorlukları

On-call rotasyonlarını yönetmek, sistem güvenilirliğinden sorumlu herhangi bir ekip için kritik ama çoğu zaman sıkıcı bir görevdir. PagerDuty takvimlerini manuel olarak güncellemek, özellikle sık ekip değişiklikleri veya proje devirleri olan dinamik ortamlarda, hataya açık olup değerli mühendislik zamanını tüketebilir. Sağlam web geliştirme ve mobil çözümler konusunda uzmanlaştığımız SoftCrafter’da verimlilik ve güvenilirlik her şeyden önemlidir. Bu süreçleri otomatize etmenin, yüksek operasyonel standartları sürdürmenin ve hızlı olay müdahalesi sağlamanın anahtarı olduğunu gördük.

Bu makale, PagerDuty on-call rotasyon yönetimini Infrastructure as Code (IaC) yaklaşımıyla Terraform kullanarak ve bu değişiklikleri GitHub Actions ile orkestre ederek nasıl otomatikleştireceğinizi anlatacak. Bu yaklaşım, manuel iş yükünü azaltmakla kalmaz, aynı zamanda on-call altyapınıza versiyon kontrolü, denetlenebilirlik ve tutarlılık getirir.

Otomasyon için PagerDuty Kurulumu

Terraform’a dalmadan önce PagerDuty ortamınızın hazır olduğundan emin olun. İhtiyacınız olacaklar:

  • Uygun API erişimine sahip bir PagerDuty hesabı.
  • Bir API Token: PagerDuty’da Integrations > API Access Keys altında yeni bir ‘Read/Write’ API Token oluşturun. Bu token, PagerDuty hesabınız üzerinde önemli kontrol sağladığı için güvende tutun.
  • Bir Ekip: PagerDuty’da takvimi ve servisleri yönetecek bir ekibinizin olduğundan emin olun.

Gösterim için, ‘SoftCrafter DevOps’ adında bir ekibimiz olduğunu ve onlar için birincil bir on-call takvimi yönetmek istediğimizi varsayalım.

Terraform ile PagerDuty Kaynaklarını Tanımlama

Terraform, PagerDuty kaynaklarını yönetmek için mükemmel bir araçtır çünkü takvimlerinizi, eskalsyon politikalarınızı ve servislerinizi kod olarak tanımlamanıza olanak tanır. Bu, on-call kurulumunuzun, altyapınızın diğer parçaları gibi versiyon kontrolüne alınabileceği, incelenebileceği ve deploy edilebileceği anlamına gelir.

Öncelikle, Terraform konfigürasyonunuzu kurun. PagerDuty provider’ına ihtiyacınız olacak:

terraform {
  required_providers {
    pagerduty = {
      source  = "PagerDuty/pagerduty"
      version = "~> 1.16"
    }
  }
}

provider "pagerduty" {
  token = var.pagerduty_token
}

variable "pagerduty_token" {
  description = "PagerDuty API token"
  type        = string
  sensitive   = true
}

variable "team_id" {
  description = "ID of the PagerDuty team"
  type        = string
}

variable "users" {
  description = "List of PagerDuty user IDs for the rotation"
  type        = list(string)
}

Şimdi, basit bir on-call takvimi tanımlayalım. Bu örnek, günlük bir rotasyon oluşturur. Kurumsal servisler için, kesintisiz çalışma süresi müzakere edilemez olduğundan, açıkça tanımlanmış ve otomatikleştirilmiş bir takvime sahip olmak çok önemlidir.

resource "pagerduty_schedule" "primary_oncall" {
  name      = "SoftCrafter Primary On-Call Schedule"
  time_zone = "America/New_York"
  team_id   = var.team_id
  layer {
    name            = "Primary Layer"
    start           = "2023-01-01T09:00:00-05:00" # Example start date, adjust as needed
    rotation_turn_length_seconds = 86400 # Daily rotation (24 hours)
    rotation_virtual_start       = "2023-01-01T09:00:00-05:00"
    users           = var.users
  }
}
resource "pagerduty_escalation_policy" "devops_policy" {
  name      = "SoftCrafter DevOps Escalation Policy"
  team_id   = var.team_id
  rule {
    escalation_delay_in_minutes = 5
    target {
      type = "schedule"
      id   = pagerduty_schedule.primary_oncall.id
    }
  }
  rule {
    escalation_delay_in_minutes = 10
    target {
      type = "user"
      id   = "P123456" # Example: Fallback user ID for broader team notification
    }
  }
}
resource "pagerduty_service" "devops_service" {
  name                    = "SoftCrafter Core Services"
  auto_resolve_timeout_minutes = 1440 # 24 hours
  acknowledgement_timeout_minutes = 60
  escalation_policy       = pagerduty_escalation_policy.devops_policy.id
  team                    = var.team_id
}

GitHub Actions ile Deployment’ları Otomatikleştirme

PagerDuty konfigürasyonumuz Terraform’da tanımlandığına göre, deployment’ını otomatikleştirmek için GitHub Actions’ı kullanabiliriz. Bu, main branch’inizdeki herhangi bir değişikliğin PagerDuty takvimlerinizi otomatik olarak güncellemesini sağlar.

Bir workflow dosyası oluşturun (örn. .github/workflows/pagerduty-terraform.yml):

name: PagerDuty Terraform Deployment
on:
  push:
    branches:
      - main
  workflow_dispatch:
env:
  TF_WORKING_DIR: ./terraform
jobs:
  terraform:
    name: 'Terraform Apply'
    runs-on: ubuntu-latest
    environment: production # Use GitHub Environments for secrets management
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Setup Terraform
        uses: hashicorp/setup-terraform@v2
        with:
          terraform_version: 1.x.x
      - name: Terraform Init
        id: init
        run: terraform init
        working-directory: ${{ env.TF_WORKING_DIR }}
      - name: Terraform Validate
        id: validate
        run: terraform validate
        working-directory: ${{ env.TF_WORKING_DIR }}
      - name: Terraform Plan
        id: plan
        run: terraform plan -no-color -input=false
        working-directory: ${{ env.TF_WORKING_DIR }}
        env:
          PAGERDUTY_TOKEN: ${{ secrets.PAGERDUTY_API_TOKEN }}
      - name: Terraform Apply
        id: apply
        if: github.ref == 'refs/heads/main' && github.event_name == 'push'
        run: terraform apply -auto-approve -input=false
        working-directory: ${{ env.TF_WORKING_DIR }}
        env:
          PAGERDUTY_TOKEN: ${{ secrets.PAGERDUTY_API_TOKEN }}
          TF_VAR_pagerduty_token: ${{ secrets.PAGERDUTY_API_TOKEN }}
          TF_VAR_team_id: ${{ secrets.PAGERDUTY_TEAM_ID }}
          TF_VAR_users: '["PXXXXXXXX", "PYYYYYYYY"]' # Replace with actual PagerDuty User IDs

Önemli Güvenlik Notu: PagerDuty API Token’ınızı ve diğer hassas değişkenleri, repository veya organizasyon ayarlarınızdaki GitHub Secrets olarak saklayın. Bunları asla doğrudan workflow dosyalarınıza veya Terraform kodunuza hardcode etmeyin. Örneğin, PAGERDUTY_API_TOKEN ve PAGERDUTY_TEAM_ID GitHub Secrets olmalıdır.

Bu workflow şunları yapacaktır:

  1. Repository kodunuzu checkout eder.
  2. Terraform’u başlatır (init).
  3. Terraform konfigürasyonunuzu doğrular (validate).
  4. Bir Terraform planı oluşturur (inceleme için kullanışlıdır).
  5. main branch’ine push edildiğinde değişiklikleri otomatik olarak uygular (apply).

Faydaları ve En İyi Uygulamalar

Bu otomatik yaklaşımı benimseyerek, SoftCrafter ekipleri on-call yönetimiyle ilgili idari görevlere harcanan zamanı önemli ölçüde azaltabilir. Bu, mühendislerimizin manuel konfigürasyonlarla uğraşmak yerine yenilikçi e-ticaret çözümleri ve sağlam yazılımlar geliştirmeye daha fazla odaklanmasını sağlar.

Başlıca faydaları şunlardır:

  • Versiyon Kontrolü: Tüm PagerDuty konfigürasyonları Git’te bulunur ve eksiksiz bir değişiklik geçmişi sağlar.
  • Denetlenebilirlik: Her değişiklik bir commit’e bağlıdır, bu da kimin neyi ne zaman değiştirdiğini takip etmeyi kolaylaştırır.
  • Tutarlılık: Tüm ortamların aynı on-call politikalarına uymasını sağlar.
  • Azaltılmış Hatalar: Manuel güncellemelerle ilişkili insan hatalarını ortadan kaldırır.
  • Daha Hızlı Onboarding: Yeni ekip üyeleri veya rotasyon değişiklikleri kod aracılığıyla hızla uygulanabilir.

Bunu uygularken şunları göz önünde bulundurun:

  • State Yönetimi: Terraform state’i için remote bir backend (örn. S3, Azure Blob Storage) kullanın, böylece state paylaşılır ve güvence altına alınır.
  • Branch Koruma: On-call takvimlerindeki değişikliklerin birden fazla ekip üyesi tarafından incelenmesini sağlamak için main branch’inizde pull request incelemelerini zorunlu kılın.
  • Dinamik Kullanıcı Listeleri: Daha büyük organizasyonlar için, kullanıcı ID’leri sık sık değişiyorsa, TF_VAR_users listesini harici bir kaynaktan (örn. dahili bir dizin veya ayrı bir konfigürasyon dosyası) dinamik olarak oluşturmayı düşünün.

Sonuç

PagerDuty on-call rotasyon yönetimini Terraform ve GitHub Actions ile otomatikleştirmek, operasyonel verimliliği ve güvenilirliği artırmak isteyen her kuruluş için güçlü bir stratejidir. On-call altyapınızı kod olarak ele alarak, versiyon kontrolü, denetlenebilirlik ve tutarlılık gibi faydalar elde eder, değerli mühendislik zamanından tasarruf edersiniz. SoftCrafter, müşterilerimize üstün yazılım hizmetleri sunmak için bu tür otomasyonları kullanmaya kararlıdır. İşletmenize sağlam ve otomatik çözümlerle nasıl yardımcı olabileceğimiz hakkında daha fazla bilgi için bizimle iletişime geçmekten çekinmeyin.

#PagerDuty #Terraform #GitHubActions #DevOps #Otomasyon #OnCall #IaC #SoftCrafter

Kategori:

DevOps ve CI/CD,

Son güncelleme: Ekim 22, 2026