Bulut Platformları ve Hizmetleri
Modern bulut ortamlarında yol almak; başlıca bulut sağlayıcılarını anlamayı, temel bulut hizmetlerinde ustalaşmayı ve çoklu bulut ya da hibrit stratejileri etkin biçimde yönetmeyi içerir.
Bulut sağlayıcıları
Bulut bilişimin yükselişi, kuruluşların uygulamaları nasıl geliştirip dağıttığını ve ölçeklendirdiğini dönüştürdü.
Amazon Web Services (AWS), Microsoft Azure ve Google Cloud Platform (GCP) gibi popüler bulut sağlayıcıları; işlem gücünden depolamaya, ağ ve güvenliğe kadar DevOps uygulamalarını destekleyen geniş bir hizmet yelpazesi sunar.
Her bulut sağlayıcının kendine özgü teklifleri ve güçlü yönleri vardır.
- AWS; geniş hizmet yelpazesi ve küresel erişimiyle bilinir; esneklik ve ölçeklenebilirlik arayan işletmeler için idealdir.
- Azure; hibrit bulut çözümlerinde ve Microsoft ürünleriyle entegrasyonda öne çıkar.
- GCP; büyük veri ve makine öğrenimi yetenekleriyle dikkat çeker.

Başlıca bulut sağlayıcılarının güçlü yönlerini karşılaştıran görsel. Napkin AI ile oluşturuldu.
Bir DevOps mühendisi olarak, en az bir bulut sağlayıcıyı ve temel hizmetlerini sağlam şekilde anlamanız önemlidir.
Birden çok bulut platformuna aşinalık da özellikle çoklu bulut stratejileri benimseyen kuruluşlar için faydalı olabilir.
> Azure DevOps ile uygulama oluşturup dağıtmayı bu adım adım eğitimde öğrenin.
Bilmeniz gereken temel bulut hizmetleri
Bulut sağlayıcıları; işlem, depolama, ağ ve daha fazlasını içeren DevOps iş akışlarını destekleyen çeşitli hizmetler sunar.
Aşina olmanız gereken temel bulut hizmetlerinden bazıları şunlardır:
- İşlem hizmetleri: Bu hizmetler, uygulamaları ve iş yüklerini bulutta çalıştırmanızı sağlar. AWS EC2, Azure Sanal Makineler ve Google Compute Engine; ölçeklenebilir sanal makineler sunan işlem hizmetlerine örnektir.
- Depolama hizmetleri: AWS S3, Azure Blob Storage ve Google Cloud Storage gibi bulut depolama hizmetleri; veri için ölçeklenebilir ve dayanıklı çözümler sunar. Bulutta veriyi yönetmeyi ve güvenliğini sağlamayı anlamak, her DevOps mühendisi için kritiktir.
- Ağ hizmetleri: AWS’de VPC (Virtual Private Cloud), Azure Virtual Network ve Google Cloud VPC gibi ağ hizmetleri, ağ kaynaklarını yapılandırıp yönetmeye yardımcı olur.
Hizmetler arasında kesintisiz iletişim için alt ağları (subnet), yük dengeleyicileri ve VPN’leri yapılandırmaya aşina olmanız gerekecektir.
Çoklu bulut ve hibrit bulut stratejileri
Günümüzde birçok kuruluş, satıcıya bağımlılığı (vendor lock-in) önlemek ve her bulut sağlayıcısının güçlü yönlerinden yararlanmak için çoklu bulut veya hibrit bulut stratejileri benimser.
Çoklu bulut ortamında kuruluşlar birden fazla bulut sağlayıcının hizmetlerini kullanırken, hibrit bulut kurulumunda şirket içi altyapı bulut tabanlı kaynaklarla birleştirilir.
DevOps mühendislerinin, çoklu bulut ortamlarını etkin şekilde yönetip izlemeyi anlamaları gerekir.
Terraform ve Kubernetes gibi araçlar, bulut platformları genelinde altyapı sağlamayı ve düzenlemeyi otomatikleştirmeye yardımcı olarak tutarlı dağıtımlar ve yapılandırmalar sağlar.
İzleme, Günlükleme ve Uyarı
Güvenilir ve yüksek performanslı sistemleri sürdürmek; gözlemlenebilirlik uygulamalarına hakim olmayı, etkili izleme araçlarını kullanmayı ve günlükleri analiz için merkezileştirmeyi gerektirir.
Gözlemlenebilirlik kavramları
İzleme, günlükleme ve uyarı; uygulamaların ve altyapının sağlığını ve performansını güvenceye alan DevOps’un kritik bileşenleridir.
Gözlemlenebilirlik; günlükler, metrikler ve izler (traces) gibi dış çıktılara bakarak bir sistemin iç işleyişine dair içgörü elde etme pratiğidir.
- Günlükler (Logs) sistem olayları ve hataları hakkında ayrıntılı bilgi yakalar. Sorun giderme ve hata ayıklama için gereklidir.
- Metrikler (Metrics); CPU kullanımı, bellek tüketimi ve yanıt süreleri gibi uygulamaların performansı ve davranışı hakkında nicel veri sağlar.
- İzler (Traces); dağıtık sistemlerde isteklerin akışına ayrıntılı bir görünüm sunar, tekil hizmetlerin performansını takip etmeye ve darboğazları belirlemeye yardımcı olur.
Birlikte bu üç sütun (günlükler, metrikler ve izler), gözlemlenebilirliğin temelini oluşturur.
Ekiplerin sorunları proaktif olarak tespit edip çözmesine olanak tanıyarak, sorunsuz ve güvenilir bir kullanıcı deneyimi sağlarlar.

Gözlemlenebilirlik yaşam döngüsünü gösteren görsel. Napkin AI ile oluşturuldu.
İzleme araçları
İzleme araçları, sistemlerin sağlık ve performansını gerçek zamanlı takip etmeyi sağlar.
DevOps’ta yaygın kullanılan izleme araçları şunlardır:
- Prometheus: Genellikle Kubernetes ile birlikte kullanılan açık kaynak bir izleme ve uyarı aracıdır. Zaman serisi verileri toplayıp depolar ve sistem performansını takip etmenizi sağlar.
- Grafana: Çoğunlukla Prometheus ile birlikte kullanılan bir görselleştirme aracıdır; uygulama metriklerini izlemek için gerçek zamanlı panolar oluşturmanıza olanak tanır.
- Datadog: Altyapı ve uygulama izleme, günlük yönetimi ve kullanıcı deneyimi takibi sunan bulut tabanlı bir izleme ve analitik platformudur.
- AWS CloudWatch: AWS kaynaklarının performansını takip etmeye, alarmlar kurmaya ve özel metrikler oluşturmaya yardımcı olan AWS tarafından sunulan bir izleme hizmetidir.
> Verimli veri hattı dağıtımı için Veri Mühendisliğinde CI/CD: Sorunsuz Dağıtım için Rehber’e göz atın.
Günlük toplama araçları
Günlük toplama araçları, farklı kaynaklardan gelen günlüklerin toplanıp merkezileştirilmesine yardımcı olarak günlük verilerini aramayı, analiz etmeyi ve görselleştirmeyi kolaylaştırır.
En yaygın kullanılan günlük toplama araçlarından bazıları şunlardır:
- ELK Yığını (Elasticsearch, Logstash, Kibana): Günlük verilerini toplamanıza, depolamanıza ve analiz etmenize olanak tanıyan güçlü bir araç setidir. Elasticsearch günlükleri depolamak, Logstash işlemek ve Kibana veriyi görselleştirip keşfetmek için kullanılır.
- Fluentd: Birden çok kaynaktan günlük veri toplamayı ve taşımayı birleştiren açık kaynak bir veri toplayıcıdır. Merkezileştirilmiş günlükleme için sıklıkla Elasticsearch ve Kibana ile birlikte kullanılır.
Etkili günlükleme ve izleme, sistem güvenilirliğini sürdürmek, kesinti süresini azaltmak ve performansı iyileştirmek için esastır.
Güvenlik ve Uyumluluk
DevOps’ta sağlam güvenlik ve uyumluluğu sağlamak; güvenliği boru hattının her yerine entegre etmeyi, güvenlik açıklarını proaktif olarak belirlemeyi ve mevzuat standartlarına uyumu otomatikleştirmeyi gerektirir.
DevSecOps
Güvenlik, DevOps’ta en öncelikli konudur ve DevSecOps, güvenliği DevOps boru hattının her aşamasına entegre eder.
Güvenliği ayrı bir ekibin yürüttüğü bağımsız bir işlev olarak ele almak yerine, DevSecOps; güvenliğin geliştirme sürecine yerleşmesini sağlamak için geliştiricilerin, operasyon mühendislerinin ve güvenlik uzmanlarının birlikte çalışmasını teşvik eder.
Güvenlik testlerini, kod incelemelerini ve güvenlik açığı taramalarını otomatikleştirmek; sorunları erken yakalamayı sağlayarak üretimdeki ihlal ve açık risklerini azaltır.
Güvenlik açığı taraması
DevOps mühendisleri, kod ve altyapıdaki zayıflıkları belirlemek için güvenlik açığı taraması gibi en iyi güvenlik uygulamalarını hayata geçirmelidir.
Snyk, Trivy ve OWASP Dependency-Check gibi araçlar; kod tabanlarını ve konteyner imajlarını bilinen güvenlik açıklarına karşı tarayarak ekiplerin sorunları üretime ulaşmadan önce düzeltmesini sağlar.
Uyumluluk otomasyonu
Uyumluluk, regülasyona tabi sektörlerde önemli bir husustur ve DevOps ekipleri; uygulamaların ve altyapının sektör standartlarını ve yasal gereklilikleri karşıladığından emin olmalıdır.
Uyumluluk otomasyon araçları; politikaları izlemeye ve uygulamaya, denetimler gerçekleştirmeye ve raporlar üretmeye yardımcı olur.
CIS (Center for Internet Security) ve SOC2 (System and Organization Controls) gibi çerçeveler; güvenli ve uyumlu DevOps uygulamaları için yönergeler sunar.
İletişim Becerileri ve İşbirliği Araçları
DevOps’ta başarılı olmak; güçlü işbirliği, etkili iletişim, Çevik (Agile) uygulamalara hakimiyet ve süreçleri ile bilgiyi açıkça belgeleyebilme yetkinliğini gerektirir.
Agile ve Scrum uygulamaları
DevOps, sürekli iyileştirmeyi, işbirliğini ve yinelemeli geliştirmeyi vurgulayan Agile metodolojileriyle yakından ilişkilidir.
Scrum ve Kanban gibi Agile uygulamalarını anlamak, geliştirme döngülerini yönetme ve işleri etkili biçimde önceliklendirme becerinizi önemli ölçüde artırabilir.
Scrum, artımlı iyileştirmeler sunan kısa, zaman kutulu iterasyonlara (sprint) odaklanır.
DevOps ekipleri, daha kısa döngülerle çalışarak hızlı teslimat ve daha sık sürümler sağlamak için Agile ilkelerinden yararlanır.
İşbirliği araçları
DevOps tamamen işbirliği ile ilgilidir ve iletişim ile proje yönetimi için doğru araçlara sahip olmak esastır.
Popüler işbirliği araçları şunlardır:
- Slack: Geliştiriciler, operasyon ve diğer paydaşlar arasındaki iletişimi kolaylaştıran bir ekip mesajlaşma platformu.
- Jira: Agile iş akışlarında görevleri, kullanıcı hikayelerini ve sorunları takip etmek için kullanılan bir proje yönetim aracı.
- Confluence: Çalıştırma kitapçıkları (runbook), dağıtım kılavuzları ve olay raporları gibi dokümantasyonun oluşturulup paylaşılması için bir işbirliği platformu.
- Notion: Dokümantasyon, toplantı notları ve proje zaman çizelgelerini düzenlemek için esnek bir çalışma alanı aracı.
Dokümantasyon ve iletişim
Açık ve etkili dokümantasyon, başarılı bir DevOps kültürünün anahtarıdır.
İster olay müdahalesi için runbook yazmak ister sistem mimarilerini belgelemek olsun; ayrıntılı dokümantasyon, ekiplerin sorunlara hızlı yanıt vermesini ve bilgiyi etkin şekilde paylaşmasını sağlar.
Ayrıca güçlü iletişim becerileri, DevOps’ta kritiktir; çünkü ekipler ortak hedeflere ulaşmak için departmanlar arası işbirliği yapmalıdır.
Kendi DevOps Öğrenme Planınızı Oluşturma
Etkili bir DevOps öğrenme planı oluşturmak; beceri gelişiminizi yapılandırmayı, pratik uygulamalı projelere katılmayı ve ilgili sertifikasyonları takip etmeyi içerir.
Öğrenme yolları ve ilerleme
DevOps geniş bir alandır ve ustalaşmak için yapılandırılmış bir yaklaşım gerekir.
Başlangıç seviyesinde, betik yazımı, sürüm kontrolü ve işletim sistemlerini anlama gibi temel bilgilere odaklanın.
Temellerle rahat ettikten sonra, konteynerleştirme, bulut platformları ve CI/CD boru hatları gibi daha ileri konuları öğrenmeye başlayabilirsiniz.
DevOps yolculuğunuz için önerilen bir ilerleme şöyledir:
- Başlangıç: Temel programlama/betik yazımı, Git, Linux temelleri ve sürüm kontrolünü öğrenin.
- Orta düzey: Kod olarak altyapı, CI/CD boru hatları, Docker ile konteynerleştirme ve Kubernetes’i keşfedin.
- İleri düzey: Bulut platformları, izleme, günlükleme ve güvenlik uygulamalarında uzmanlık kazanın.

Önerilen bir DevOps öğrenme yol haritasını gösteren görsel. Napkin AI ile oluşturuldu.
Uygulamalı projeler
DevOps öğrenmenin en iyi yolu uygulamalı deneyimdir. Kendi CI/CD boru hatlarınızı kurup dağıtın, konteynerleştirmeyi deneyin ve Terraform gibi araçlarla bulut altyapısını otomatikleştirin.
Mikro hizmet tabanlı bir uygulamayı dağıtmak veya bir web uygulamasının dağıtımını otomatikleştirmek gibi gerçek dünya projeleriyle pratik yapın.
Sertifika seçenekleri
Sertifikalar becerilerinizi doğrulamaya ve öğrenme yolunuzu yapılandırmaya yardımcı olabilir.
DevOps profesyonelleri için popüler sertifikalardan bazıları şunlardır:
- AWS DevOps Engineer (Professional)
- Certified Kubernetes Administrator (CKA)
- Docker Certified Associate
> Sertifikaya hazırlanmak için bu seçilmiş AWS Certified DevOps Engineer: Çalışma Planı, İpuçları ve Kaynaklar’ı inceleyin.
Sonuç
DevOps yolculuğu, sürekli öğrenme ve gelişim yolculuğudur.
DevOps yol haritasını anladıktan sonra, bunun sadece araç ve teknolojilerde ustalaşmaktan ibaret olmadığını; aynı zamanda işbirliğini, verimliliği ve inovasyonu teşvik eden bir zihniyeti benimsemekle ilgili olduğunu kabul edeceğinizi düşünüyorum.
Bununla birlikte, bu rehberde bahsedilen beceri ve uygulamalarla modern bir DevOps rolünün zorluklarını üstlenmeye iyi şekilde hazırlanmış olmalısınız.
Yakında bir mülakatınız varsa, yaygın DevOps sorularını En İyi 31 Azure DevOps Mülakat Sorusu veya En İyi 24 AWS DevOps Mülakat Sorusu ile tazeleyin.
FAQs
DevOps nedir ve neden önemlidir?
DevOps, yazılım geliştirme (Dev) ile operasyonları (Ops) birleştirerek işbirliğini, otomasyonu ve uygulamaların sürekli teslimini iyileştiren bir uygulama setidir. Kuruluşların yazılımı daha hızlı ve daha yüksek kalitede sunmasına yardımcı olur.
Bir DevOps başlangıcı olarak ilk hangi araçları öğrenmeliyim?
Yeni başlayan biri olarak, temel programlama veya betik yazımını (Python, Bash), sürüm kontrolü için Git'i öğrenmeye ve özellikle Linux olmak üzere işletim sistemlerinin temellerini anlamaya odaklanın.
DevOps'ta bulut bilişim neden önemlidir?
Bulut bilişim, uygulama dağıtımı, depolama ve işlem gücü için ölçeklenebilir kaynaklar sağlar. DevOps açısından kritiktir; çünkü uygulamaların hızlı sağlanmasını, otomasyonunu ve esnek, maliyet etkin şekilde ölçeklendirilmesini mümkün kılar.
Kod Olarak Altyapı (IaC) nedir ve neden öğrenmeliyim?
Kod Olarak Altyapı (IaC), altyapınızı kodla tanımlayıp yönetmenize olanak tanır; bu da onu tekrarlanabilir ve otomatikleştirilebilir kılar. Terraform ve AWS CloudFormation gibi IaC araçlarını öğrenmek, bir DevOps boru hattında bulut altyapısını verimli biçimde yönetmek için gereklidir.
DevOps'ta uygulamalı deneyimi nasıl kazanabilirim?
Uygulamalı deneyim kazanmak için, bir CI/CD boru hattı kurmak, Docker ile uygulama dağıtmak ve Terraform gibi araçlarla altyapıyı otomatikleştirmek gibi projelerle başlayın. Pratik deneyim, DevOps'ta ustalaşmanın anahtarıdır.
DevOps sertifikaları almaya değer mi?
Evet, AWS DevOps Engineer, Certified Kubernetes Administrator (CKA) ve Docker Certified Associate gibi DevOps sertifikaları, becerilerinizi doğrulayabilir ve alandaki uzmanlığınızı göstererek kariyerinizde ilerlemenize yardımcı olabilir.
Bir DevOps mühendisi olmak ne kadar sürer?
Başlangıç noktanıza, zaman ayırmanıza ve pratik proje deneyiminize bağlı olarak, genelde işbaşı seviyesine gelmek 6 ila 18 ay sürer.
DevOps için programlama bilmem gerekiyor mu?
Evet. Özellikle Python, Bash veya PowerShell'de betik yazımına sağlam bir hakimiyet; görevleri otomatikleştirmek ve altyapıyı yönetmek için gereklidir.
DevOps sadece geliştiriciler için mi?
Hayır. DevOps; geliştirme, operasyon, kalite güvencesi ve güvenlik arasında işbirliğini içerir. Otomasyon ve sistemlere ilgi duyan mühendisler için idealdir.
Bilgisayar bilimi diploması olmadan DevOps öğrenebilir miyim?
Kesinlikle. Birçok başarılı DevOps mühendisi, bilgisayar bilimi dışı geçmişlerden gelir. En önemlisi pratik bilgi, merak ve tutarlı öğrenmedir.


DevOps sadece bir metodoloji değildir. Yazılım geliştirme (Dev) ile BT operasyonlarını (Ops) birleştirerek daha verimli, işbirliğine dayalı bir iş akışı oluşturan kültürel bir dönüşümdür.
Amaç, ekipler arasındaki geleneksel siloları yıkarak yazılımın performansı, güvenliği ve teslimatından ortak sorumluluk alınmasını sağlamaktır.
Kendim de DevOps ilkelerini benimsediğim için, bunların ekiplerin yazılımı nasıl inşa edip dağıttığını gerçekten dönüştürdüğünü söyleyebilirim. Bu nedenle, bu rehberde sizi DevOps’u ustalıkla öğrenmenize yardımcı olacak adım adım bir yol haritasında ilerleteceğim.
> Temel DevOps kavramlarıyla başlamak için DevOps Concepts kursuna göz atın.
DevOps Zihniyetini Anlamak
DevOps zihniyetini anlamak için önce DevOps’un tanımını yapmak ve geleneksel yaklaşımlardan nasıl farklılaştığını görmek gerekir.
DevOps nedir?
DevOps, yazılım teslim hızını, güvenilirliğini ve verimliliğini artırmak için geliştirme ve operasyon ekiplerini entegre eden bir felsefedir.
Şelale (Waterfall) gibi geleneksel yazılım geliştirme modelleri, tıkanıklıklara, yavaş dağıtımlara ve ekipler arasında iletişim kopukluğuna yol açıyordu.
DevOps, bu zorluklara çözüm olarak ortaya çıkmış ve kuruluşların yazılım tesliminde daha çevik ve hızlı tepki veren bir yaklaşım benimsemesini sağlamıştır.
Geleneksel modellerde geliştiriciler kodu yazar ve dağıtım için operasyonlara devrederken, DevOps yakın işbirliğini, ortak sorumlulukları ve otomasyonu teşvik eder.
DevOps, ekiplerin yazılımı kesintileri en aza indirerek sürekli entegre edip teslim etmesine yardımcı olabilir.
Bu da uygulamaların ölçeklenebilir, güvenli ve yüksek performanslı kalmasını sağlar.
> DevOps ile MLOps’u daha iyi karşılaştırmak için MLOps vs DevOps: Farklar, Kesişimler ve Kullanım Durumları yazısına göz atın. Ayrıca makine öğreniminde otomasyonun nasıl ölçeklendiğini Fully Automated MLOps kursuyla keşfedebilirsiniz.
DevOps’un temel ilkeleri
DevOps, temel uygulamalarını tanımlayan birkaç ilke tarafından yönlendirilir:
DevOps yaşam döngüsünün beş aşamasını içeren görsel. Napkin AI ile oluşturuldu.
DevOps’u benimsemenin faydaları
DevOps’u iş akışınıza uygulamak hem geliştirme hem de operasyon süreçlerinize fayda sağlar.
Ön Koşul Bilgi ve Beceriler
DevOps’ta başarılı olmak için betik yazımı, işletim sistemleri ve sürüm kontrol sistemlerinde temel bilgi önemlidir.
Temel programlama/betik yazımı
Programlama ve betik yazımı konusunda temel bilgi, DevOps alanına girmek isteyen herkes için kritiktir.
Python, Bash ve PowerShell gibi betik dilleri; yazılım dağıtımları, sunucu yapılandırmaları ve günlük analizi gibi tekrarlı görevleri otomatikleştirmek için yaygın şekilde kullanılır.
Özellikle Python, altyapı otomasyonu, yapılandırma yönetimi ve API entegrasyonlarında yaygın kullanılan güçlü ve esnek bir dildir.
Bash betikleri de özellikle Linux tabanlı ortamlarda aynı derecede önemlidir.
Kabuk betiği yazma, sistem süreçlerini yönetme ve komut satırı görevlerini otomatikleştirme becerileri, bir DevOps mühendisi olarak verimliliğinizi önemli ölçüde artırır.
PowerShell, Windows ortamlarında çalışanlar için faydalıdır. Sunucuları, Active Directory’i ve bulut hizmetlerini yönetmek için otomasyon yetenekleri sağlar.
İşletim sistemlerini anlama
DevOps profesyonelleri altyapı ve bulut ortamlarını yönettiklerinden, işletim sistemlerine sağlam bir hakimiyet şarttır.
Linux, esnekliği, performansı ve açık kaynak araçlar için geniş desteği nedeniyle çoğu DevOps iş akışında tercih edilen işletim sistemidir.
Linux dosya sistemleri, süreç yönetimi, kullanıcı izinleri, ağ ve paket yönetimini anlamak, karmaşık altyapı sorunlarında yolunuzu bulmanıza yardımcı olur.
DNS, HTTP, güvenlik duvarları ve yük dengeleme gibi ağ kavramlarına ilişkin bilgi de gereklidir.
DevOps mühendisleri sıklıkla bulut tabanlı ve şirket içi ağlarla çalıştığından, ağ güvenliğini, IP adreslemeyi ve ağla ilgili sorunların giderilmesini anlamak esastır.
Sürüm kontrol sistemleri
Sürüm kontrolü modern yazılım geliştirmenin ayrılmaz bir parçasıdır ve Git en yaygın sürüm kontrol sistemidir.
DevOps mühendisleri, GitHub, GitLab veya Bitbucket gibi platformları kullanarak kaynak kodu verimli yönetmek, değişiklikleri izlemek ve ekiplerle işbirliği yapmak için Git’te yetkin olmalıdır.
Uzmanlaşılması gereken temel kavramlar arasında dallanma stratejileri, birleştirme, çekme talepleri (pull request) ve çatışma çözümü yer alır.
Altyapı otomasyonunda tek doğru kaynak olarak Git depolarını kullanan DevOps’un bir uzantısı olan GitOps’u öğrenmek de faydalı olabilir.
> GitOps’u iş akışınıza entegre etmeyi merak ediyorsanız MLOps Concepts kursuna göz atın.
Altyapı ve Yapılandırma Yönetimi
Altyapıyı, yapılandırmaları ve hassas bilgilere güvenli erişimi etkin biçimde yönetmek, başarılı DevOps uygulamaları için kritik önemdedir.
Kod Olarak Altyapı (IaC)
Kod Olarak Altyapı (IaC), ekiplerin altyapıyı manuel yapılandırmalar yerine kodla tanımlayıp yönetmesine olanak tanıyan bir DevOps uygulamasıdır.
Bu yaklaşım, ortamlar arasında tutarlılık, ölçeklenebilirlik ve tekrarlanabilirlik sağlar.
Popüler IaC araçları arasında Terraform ve AWS CloudFormation bulunur. Terraform, deklaratif yapılandırma dosyalarıyla birden fazla bulut sağlayıcıda altyapı sağlayabilen bulutdan bağımsız bir araçtır.
AWS CloudFormation ise JSON veya YAML şablonları aracılığıyla AWS kaynaklarını yönetmek için özel olarak tasarlanmıştır.
IaC uygulamak, altyapı sağlamayı otomatikleştirmeye, yapılandırma sapmasını azaltmaya ve sürüm kontrollü altyapı tanımlarıyla işbirliğini güçlendirmeye yardımcı olur.
Yapılandırma yönetimi
Yapılandırma yönetimi araçları, yazılım kurulumlarını, sistem güncellemelerini ve ortam yapılandırmalarını otomatikleştirerek sistem tutarlılığını korumaya yardımcı olur.
Bu kategoride popüler araçlar arasında Ansible, Chef ve Puppet bulunur.
Ansible, sunucuları yapılandırmak ve uygulamaları dağıtmak için YAML tabanlı playbook’lar kullanan hafif, ajansız bir otomasyon aracıdır.
Chef ve Puppet ise daha karmaşık olmakla birlikte, deklaratif yapılandırmalarla büyük ölçekli altyapıları yönetmek için güçlü otomasyon yetenekleri sunar.
Gizli veriler ve erişim yönetimi
Güvenlik, DevOps’un kritik bir boyutudur ve API anahtarları, parolalar ve sertifikalar gibi hassas bilgileri yönetmek esastır.
HashiCorp Vault, gizli verileri güvenli şekilde depolayıp yönetmek için yaygın kullanılan bir araçtır ve kimlik doğrulama politikalarıyla hassas verilere erişimi kontrol etmeye olanak tanır.
AWS Secrets Manager, buluta özgü ortamlarda benzer işlevler sunarak kuruluşların kimlik bilgilerini güvenli biçimde yönetmesine yardımcı olur.
Ek olarak, gizli verileri ortam değişkenlerinde tutmak ve rol tabanlı erişim denetimlerini (RBAC) entegre etmek, DevOps boru hatlarında güvenliği daha da güçlendirebilir.
Sürekli Entegrasyon ve Sürekli Teslim (CI/CD)
Etkili CI/CD uygulamak; temel ilkeleri anlamayı, uygun araçları kullanmayı ve otomatik testleri entegre etmeyi gerektirir.
CI/CD temelleri
CI/CD, DevOps’un kalbinde yer alır ve kod değişikliklerinin sürekli entegre edilmesini, test edilmesini ve dağıtılmasını sağlar.
Sürekli Entegrasyon (CI), birden çok geliştiriciden gelen kod entegrasyonunun otomasyonu, otomatik testlerin çalıştırılması ve derleme çıktılarının (artifact) üretilmesini içerir.
Sürekli Teslim (CD), yazılım dağıtımını hazırlık (staging) ve üretim ortamlarına otomatikleştirerek CI’ı genişletir.
Etkili bir CI/CD boru hattı; kaynak kod entegrasyonu, otomatik test, derleme ve paketleme, çıktıların depolanması ve dağıtım gibi çeşitli aşamalardan oluşur.
Bu boru hattı, ekiplerin yazılımı hızlı, güvenli ve güvenilir şekilde yayınlamasına yardımcı olur.
> CI/CD iş akışlarınızı otomatikleştirmeye derinlemesine bakmak için CI/CD for Machine Learning kursunu inceleyin.
CI/CD araçları
CI/CD boru hatlarını uygulamak için yaygın kullanılan birkaç araç vardır:
Otomasyon ve sürekli entegrasyon için kilit araçlar olarak Jenkins, GitHub Actions, GitLab CI/CD ve CircleCI’yi öne çıkaran görsel. Napkin AI ile oluşturuldu.
Derleme ve test otomasyonu
Otomatik testler, kod değişikliklerinin hata veya güvenlik açığı getirmemesini sağlar.
Birim testleri, entegrasyon testleri ve işlevsel testler hataları erken yakalamak için CI/CD boru hattına entegre edilmelidir.
Konteynerleştirme ve Yönetişim
Konteynerleştirilmiş uygulamaları etkin biçimde yönetmek için Docker’a hakimiyet, Kubernetes ile düzenleme (orchestration) ve Helm ile Operator’ler gibi araçlardan yararlanmak gerekir.
Docker temelleri
Konteynerleştirme, modern DevOps ortamının kritik bir parçasıdır.
Geliştiricilerin uygulamaları ve bağımlılıklarını, farklı ortamlarda tutarlı şekilde çalışabilen taşınabilir konteynerlere paketlemesini sağlar.
Docker, izole ortamlarda uygulama oluşturma, gönderme ve çalıştırmayı mümkün kılan en popüler konteynerleştirme aracıdır.
Docker üzerinde çalışan konteynerleştirilmiş uygulamaları gösteren Docker mimarisini içeren görsel. Kaynak: Docker Resources
Bir Docker konteyneri; uygulama kodu, çalışma zamanı, sistem kütüphaneleri ve ayarlar dahil olmak üzere yazılımın çalışması için gereken her şeyi içeren hafif, bağımsız bir pakettir.
Docker konteynerleri, konteynerin nasıl oluşturulacağını adım adım tanımlayan bir Dockerfile kullanılarak tarif edilir.
Görüntü (image) oluşturulduktan sonra bir Docker kaydına (registry) kaydedilip başkalarıyla paylaşılabilir.
Docker’da ustalaşmak; Docker imajları oluşturmayı, Dockerfile yazmayı ve konteynerleri yerelde ve bulut ortamlarında çalıştırmayı anlamayı gerektirir.
Birden çok konteynerli Docker uygulamalarını tanımlayıp çalıştırmaya yarayan Docker Compose, birbiriyle bağlantılı çok sayıda hizmet içeren karmaşık sistemleri yönetmeye de yardımcı olur.
> Docker’ı nasıl öğreneceğinize dair adım adım bir özet için bu başlangıç rehberi faydalı bir kaynaktır.
Kubernetes temelleri
Docker tekil konteynerleri oluşturup yönetirken, Kubernetes (K8s) üretimde konteynerleştirilmiş uygulamaları ölçeklendirmeye ve yönetmeye yardımcı olan düzenleme platformudur.
Kubernetes, konteynerleştirilmiş uygulamaların dağıtımını, ölçeklendirmesini ve yönetimini otomatikleştirir; bu da büyük, dağıtık sistemleri ele almayı kolaylaştırır.
> Kubernetes’e yeniyseniz, bu başlangıç dostu kurs, konteyner düzenlemeye giriş için uygulamalı bir deneyim sunar.
Kubernetes, konteynerleri Kubernetes’te dağıtılabilen en küçük birimler olan pod’lar halinde düzenler.
Her pod bir veya daha fazla konteyner içerebilir ve Kubernetes bu pod’ları bir makine kümesi (cluster) genelinde yönetir.
Temel kavramlar arasında hizmetler (servisleri dışa açmak için), dağıtımlar (uygulamaların yaşam döngüsünü yönetmek için) ve ad alanları (namespaces; küme içindeki kaynakları düzenlemek için) bulunur.
Kontrol düzlemi bileşenlerini gösteren Kubernetes mimarisini içeren görsel. Kaynak: Kubernetes Docs
Kubernetes ayrıca otomatik ölçeklendirme, kendi kendini iyileştirme ve aşamalı güncellemeler (rolling update) gibi gelişmiş özellikler sunar.
Mikro hizmet mimarileriyle çalışan DevOps mühendisleri için Kubernetes öğrenmek esastır; çünkü uygulamaların yüksek erişilebilirlik, ölçeklenebilirlik ve dayanıklılık göstermesini sağlar.
> Kubernetes’in Docker ile nasıl karşılaştırıldığını anlamak isterseniz, Kubernetes vs Docker: Her Geliştiricinin Bilmesi Gereken Farklar yazısını okuyun.
Helm ve operator’ler
Karmaşık Kubernetes ortamlarını yöneten ekipler için Helm ve Kubernetes Operator’ler, uygulama yönetimini basitleştirip otomatikleştiren çözümler sunar.
Helm, Kubernetes için bir paket yöneticisidir ve Helm chart’ları kullanarak Kubernetes uygulamalarını tanımlamayı, kurmayı ve yükseltmeyi sağlar.
Bu chart’lar, Kubernetes kaynaklarının nasıl dağıtılması gerektiğini tanımlayan yeniden kullanılabilir yapılandırmalardır.
Öte yandan Kubernetes Operator’ler, Kubernetes’te karmaşık, durumsal (stateful) uygulamaların yönetimini otomatikleştiren özel denetleyicilerdir.
Operator’ler, bir veritabanının dağıtımı, yedekleme işlemleri veya özel metriklere göre ölçekleme gibi belirli uygulama durumlarını yönetmek için Kubernetes’i genişletir.
Helm ve Operator’ler, sofistike iş yüklerini yönetmek ve konteynerleştirilmiş ortamlarda yüksek erişilebilirlik ve tutarlılık sağlamak için vazgeçilmezdir.