Uzmanlık
DevOps ve altyapı mühendisi: kodun çalıştığı ortamı ve oraya giden yolu kuran rol
Bir değişikliğin yayına nasıl çıktığı repodan okunabilmeli; paketlemeyi, testi ve deploy'u tek hatta topluyorum.
- yıl
- 6
Bu ekosistemde ben
DevOps benim için bir araç listesi değil, kodun geliştiricinin makinesinden çalıştığı ortama kadar giden yolun tamamı. Paketlemek, doğrulamak ve yayına almak ayrı işler gibi dursa da aynı hattın parçaları; biri sağlam değilse diğerlerinin güvenilirliği de düşüyor.
Ortamı Docker ile paketliyorum, test ve deploy adımlarını GitHub Actions ya da Jenkins’te tanımlıyorum, altyapıyı Terraform ile kodla tarif ediyorum. Hat kodla tarif edildiği için bir değişikliğin nasıl yayına çıktığı repodan okunabiliyor; aynı hat bulut ortamlarına da self-hosted platformlara da aynı biçimde çıkabilir.
Altyapıyı bir mimari konu olarak Mühendislik bölümü tarafında yazıyorum; bu sayfa işin gündelik, uygulayıcı yüzü.
DevOps ve Altyapı Mühendisi nedir?
DevOps ve altyapı mühendisi, yazılımın geliştiricinin makinesinden çalıştığı ortama güvenle ulaşmasını sağlayan kişidir. Ortamın paketlenmesi, testlerin ve deploy'un otomatikleştirilmesi, sunucu ve ağ katmanının yapılandırılması ve çalışan sistemin izlenebilir kalması onun alanındadır.
DevOps ve Altyapı Mühendisi ne iş yapar?
Gündelik işi uygulamayı container olarak paketlemek, test ve deploy adımlarını bir CI/CD hattında tanımlamak, altyapıyı kodla kurmak, sunucuda servisleri ve uygulamanın önündeki katmanı yapılandırmak, ortamlar arasındaki farkı azaltmaktır. Ben bunu Docker, Kubernetes, Terraform, GitHub Actions ve Jenkins gibi araçlarla, AWS ve Google Cloud gibi ortamlarda yürütüyorum.
Birlikte kullandığım teknolojiler
-
Docker
Geliştirme ortamı ve dağıtım paketi.
-
Kubernetes
Container'ların birden çok makinede çalıştırıldığı, ölçeklendiği ve yeniden başlatıldığı orkestrasyon katmanı.
-
Linux
Uygulamaların çalıştığı sunucu işletim sistemi.
-
nginx
Uygulamanın önündeki katman.
-
GitHub Actions
Test ve deploy adımlarını repoda tanımlayan CI/CD hattı.
-
Jenkins
Build, test ve deploy adımlarını çalıştıran otomasyon sunucusu.
-
Terraform
Altyapıyı kodla tarif edip tekrarlanabilir biçimde kurmak için.
-
Dokploy
Self-hosted PaaS; container tabanlı deploy.
-
Cloudflare
Uygulamanın önündeki DNS, proxy ve içerik dağıtım katmanı.
-
AWS
Bulut sağlayıcısı; sanal makine, depolama ve yönetilen servisler.
-
Google Cloud
Bulut sağlayıcısı; sanal makine, depolama ve yönetilen servisler.
Bu alanda sorulanlar
Sık sorulanlar
8 soru
-
DevOps mühendisi ne yapar?
Yazılımın geliştiriciden çalıştığı ortama güvenli ve tekrarlanabilir biçimde ulaşmasını sağlar: ortamı paketler, test ve deploy hattını kurar, altyapıyı ve sunucu katmanını yapılandırır ve çalışan sistemin izlenebilir kalmasına bakar.
-
DevOps alanında kaç yıldır çalışıyorsun?
2020'den bu yana, 6 yıldır.
-
DevOps ile altyapı mühendisliği aynı şey mi?
Kesişiyorlar ama aynı değil. DevOps geliştirme ile işletme arasındaki hattı ve çalışma biçimini, altyapı mühendisliği ise bu hattın üzerinde durduğu sunucu, ağ ve platform katmanını öne alır. Bu sayfa ikisini bir arada tutuyor.
-
CI/CD hattını nasıl kuruyorsun?
GitHub Actions ya da Jenkins ile: testler her değişiklikte koşuyor, deploy adımları aynı hatta tanımlı. Hat kodla tarif edildiği için bir değişikliğin nasıl yayına çıktığı repoda okunabiliyor.
-
Docker ile Kubernetes arasındaki fark nedir?
Docker uygulamayı ve ortamını bir container olarak paketler; Kubernetes bu container'ları birden çok makinede çalıştırmayı, ölçeklemeyi ve yeniden başlatmayı yönetir. İlki paketleme, ikincisi orkestrasyon sorusu.
-
Altyapıyı kodla yönetmek ne demek?
Sunucu ve servis kurulumunu elle değil, Terraform gibi bir araçla tarif edilen dosyalardan yapmak. Böylece altyapı tekrarlanabilir olur ve değişiklikleri repoda izlenir.
-
Hangi bulut ve dağıtım araçlarıyla çalışıyorsun?
Bulut tarafında AWS ve Google Cloud, self-hosted dağıtım için Dokploy gibi platformlar, DNS ve proxy katmanında Cloudflare. Her aracın bu sayfadaki rolü Teknolojiler bölümünde yazılı.
-
Backend geliştirmeden farkın ne?
Backend geliştirme uygulamanın kendisini, yani API'yi, veriyi ve kuyruğu kapsıyor; DevOps ve altyapı o uygulamanın paketlenmesini, yayına alınmasını ve çalıştığı ortamı. İkisini birbirinden ayrı düşünmüyorum ama ayrı sayfalarda anlatıyorum.
Birlikte çalışalım
Bu ekosistemde bir işiniz varsa, ne yaptığınızı anlatın; nasıl kurulacağını konuşalım.