Bakın şimdi, AWS tarafında “işe yarar” bir ağ kurmak istiyorsanız, konu çoğu zaman en başta VPC’ye dayanıyor. Ben de ilk kez ciddi bir proje için altyapı çizerken bunu acı şekilde öğrenmiştim; 2023’ün Kasım ayında, İstanbul’daki küçük bir SaaS ekibiyle çalışırken, yanlış tasarlanmış bir ağ yüzünden uygulama dış dünyaya çıkamıyor. Loglar da doğru düzgün akmıyordu. Domino taşı misali. İşin aslı şu ki, VPC ilk bakışta basit görünüyor —. Temelini sağlam atmazsanız sonra her şey birbirine giriyor, içinden çıkılmaz hale geliyor.
Size bir şey söyleyeyim, Terraform ile bu işi yapmak ise ayrı bir rahatlık. Elle tıklayıp konsolda subnet açmak kısa vadede kolay geliyor, evet… ama sonra aynı yapıyı ikinci ortamda kurmanız gerekiyor. O noktada işler karışmaya başlıyor, kim neyi nereye tıkladı belli olmuyor. O yüzden bu yazıda “VPC nedir?” sorusundan başlayıp doğrudan çalışan bir yapı kuracağız. Biraz pratik, biraz sahadan konuşacağız (şaşırtıcı ama gerçek)
Ha bu arada — önceki yazı serilerinde modüller, remote state (ki bu çoğu kişinin gözünden kaçıyor). Workspace konularına dokundunuzsa şimdi taşlar yerine oturuyor demektir. Çünkü bu bölümde artık teori değil, gerçek altyapı ayağına giriyoruz.
VPC Neden Bu Kadar Önemli?
İlginç olan şu ki, VPC, AWS içinde sizin kapalı bahçeniz gibi düşünebilirsiniz. İçeriye kim girecek, hangi kapı açık kalacak, trafik nereye uğrayacak — hepsini siz belirliyorsunuz. Bu kontrol olmadan kurulan sistemler genelde ya güvenlikte ciddi açık bırakıyor ya da maliyeti gereksiz şişiriyor. İkisi de istemediğiniz şeyler.
Bir startup için VPC çoğu zaman “sadece ayağa kalksın yeter” seviyesinde değerlendiriliyor. Ama enterprise tarafta — ki bu tartışılır — tablo değişiyor: segmentasyon gerekiyor, farklı ekiplerin birbirini görmemesi gerekiyor, bazen de regülasyon yüzünden belirli kaynakların internete çıkışı kısıtlanmak zorunda kalıyor. Peki bunu neden söylüyorum? Yani aynı kavram, ama kullanım biçimi bayağı farklı (yanlış duymadınız)
Şöyle ki, Açık konuşayım: VPC’nin güzelliği esneklikten geliyor. IP aralığını siz seçiyorsunuz, subnet’leri bölüyorsunuz, route table ile trafiği yönlendiriyorsunuz. Kulağa kuru geliyor, biliyorum. Ama iyi kurgulanmış bir ağ mimarisi size saatler değil günler kazandırır — bunu deneyimledikçe anlıyorsunuz zaten.
AWS tarafında neredeyse her sağlam mimari şu sırayla başlıyor: VPC → Subnet → Routing → Güvenlik katmanları. Sıra bozulursa sonradan toparlamak zorlaşıyor.
Bu Lab’da Ne Kuruyoruz?
Hedefimiz süslü bir prod ortam değil. Sade ama gerçekçi bir ağ kurmak. Bir adet VPC oluşturacağız, içine public subnet koyacağız, internet gateway bağlayacağız ve route table üzerinden dış dünyaya çıkışı açacağız. Tek katlı ama temeli düzgün atılmış bir ev gibi düşünün.
Ben bu tip lab’ları özellikle yeni ekiplerle çalışırken seviyorum — kafa karıştırmadan mantığı gösteriyor çünkü. Mart 2024’te Ankara’daki bir fintech ekibine Terraform anlatırken de aynı yaklaşımı kullandım; önce tek subnetli basit yapı kurduk, sonra bunu büyütüp private subnet ve NAT Gateway ekledik. Mantıklı değil mi? Küçük başlayınca herkes neyin ne olduğunu çok daha net görüyor, bu kadar basit.
Tabi burada eksik olan şeyler de var. NAT Gateway yok, private subnet yok, çoklu AZ yok… Yani bu haliyle production’ın tamamı değil, bunu söyleyelim. Ama başlangıç için gayet iş görüyor. Hatta bazen fazla karmaşık kurulumlar yerine böyle yalın örnekler çok daha öğretici oluyor — bence öyle.
Terraform Dosya Yapısı ve Temel Kod
Dürüst olmak gerekirse, Kod tarafında işimiz kısa ama kritik parçalar içeriyor. Böyle lab’larda genelde — ki bu tartışılır — iki dosyalı yapı kullanıyorum: main.tf ve variables.tf. Ufak işlerde az dosya iyidir — insan kaybolmuyor. Büyük projelerde ise modül şart oluyor tabii, o ayrı konu.
Bakın, burayı atlarsanız yazının kalanı anlamsız kalır. Bu konuyla ilgili Xbox Game Pass pahalı mı oldu? Microsoft’un zor denklemi yazımıza da göz atmanızı tavsiye ederim.
Aşağıdaki parça mantığı güzel özetliyor. Önce provider tanımlanıyor, sonra VPC kuruluyor, ardından subnet ve gateway geliyor… Zincir gibi düşünün. Bir halkayı yanlış bağlarsanız bütün bağlantı sekteye uğruyor. Bu konuyla ilgili Oracle’ın Bloom Hamlesi: Enerji, Veri Merkezi ve Para yazımıza da göz atmanızı tavsiye ederim.
provider "aws" {
region = "ap-southeast-1"
}
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "terraform-vpc"
}
}
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
tags = {
Name = "public-subnet"
}
}
resource "aws_internet_gateway" "igw" {
vpc_id = aws_vpc.main.id
tags = {
Name = "main-igw"
}
}
Neyse, devam edelim demeyeceğim — çünkü route table kısmı gerçekten önemli. Asıl internet erişimi orada şekilleniyor.
| Bileşen | Görevi | Dikkat Noktası |
|---|---|---|
| VPC | Ağın tamamını izole eder | CIDR çakışmasına dikkat |
| Subnet | Ağı parçalara ayırır | Kapasite planlaması gerekir |
| Internet Gateway | Dış dünya ile bağlantı sağlar | Sadece bağlı olmak yetmez; rota gerekir |
| Route Table Association | Trafiği ilgili subnet’e bağlar | Eşleşme olmazsa trafik kilitlenir |
Teslim Alttan Başlar: Route Table ve Association Mantığı
Bence en çok hata yapılan yer burasıdır. Ciddi söylüyorum. İnsanlar IGW’yi ekleyince internete çıkış tamam sandı… Maalesef öyle olmuyor! Subnet’in hangi tabloyu kullanacağı belirtilmezse sistem güzelce kurulmuş görünür. Trafik yine kıpırdamaz. Sıfır. Daha fazla bilgi için Swift’te Global Actor Nedir? Uygulamada Ne İşe Yarıyor? yazımıza bakabilirsiniz. Daha fazla bilgi için PDF Dünyasında Bir Nefes: Ücretsiz ve Limitsiz Araçlar yazımıza bakabilirsiniz.
Kendi gözlemlerimde bunu defalarca gördüm. Şubat 2024’te İzmir’de yürüttüğümüz bir danışmanlık işinde junior ekip yalnızca VPC. IGW kurmuştu; EC2 instance dışarı ping atamıyordu çünkü route table association unutulmuştu. Üç dakikalık mesele yüzünden iki saat harcandığını görünce ben de içimden “işte cloud’un klasik sürprizi” dedim — gülünç. Gerçek.
aws_route_table_association kulağa teknik geliyor, biliyorum. Ama günlük hayatta karşılığı şu: kapının anahtarı var ama o kapıya hangi odanın bağlı olduğu belli değilse eve giremiyorsunuz. Aynen öyle. Bu adımı asla, ama asla atlamayın.
Küçük startup için nasıl görünür?
Vallahi, Küçük ekiplerde genelde tek public subnet yeterli olabiliyor; hatta bazı PoC senaryolarında direkt public erişimli birkaç servisle başlanıyor. Bu hızlıdır. Ama güvenlik borcu yaratır. Ben buna “kredi kartıyla zamandan ödünç almak” diyorum — bugün rahatlatır, yarın faturası gelir. Mutlaka gelir.
Kurum ölçeğinde nasıl değişir?
Bir enterprise ortamda tek public subnet görmek pek hoş karşılanmaz (buna dikkat edin). Multi-AZ yapı istenir, private subnette uygulama katmanı tutulur, database katmanı internete hiç açılmaz. Burada Terraform’un gücü daha net ortaya çıkar —. Aynı düzeni tekrar tekrar tutarlı şekilde üretirsiniz, elle kurulan ortamların getirdiği “ya bu sefer farklı yaptım mı acaba” kaygısı ortadan kalkar.
Kurulumdan Sonra Ne Yapmalı?
terraform init
terraform plan
terraform apply
Bunlar klasik üçlüdür ama hafife almayın. Bilhassa plan çıktısını okumadan apply‘a geçmek bence tehlikeli bir alışkanlık. Ben bunu ilk yıllarımda birkaç kez yaptım; sonra “neden ekstra resource çıktı?” diye kendime bakıp durdum. Çok vakit kaybı. Butterfly CSS: 2026’da Dikkat Çeken Hafif Bir Seçenek yazımızda bu konuya da değinmiştik.
Hmm, bunu nasıl anlatsamdı…
Daha önemlisi temizlik. Lab bitince kaynakları bırakmayın — özellikle AWS’de ufak şeyler bile ücret yazabiliyor, bunu küçümsemeyin. Ekim 2023’te Bursa’daki bir ekipte yalnızca unutulan NAT denemeleri nedeniyle ay sonunda gereksiz maliyet gördük. Komik değil, ama ders oldu.
- CIDR bloklarını çakıştırmayın: Sonradan peering veya genişleme geldiğinde baş ağrıtır.
- İzinleri kontrol edin: IAM policy eksikse Terraform sizi yarıda bırakabilir.
- Tag disiplinini koruyun: Aradığınızı bulmayı çok kolaylaştırır.
- İçeride Yapay Zekâ Ürününü Doğru Yayına Almak: Sakin Plan: Oradaki aşamalı yayına alma mantığı burada da birebir işe yarar.
- Apache Arrow Neden Önemli: Veri Taşımanın Gizli Vergisi: Ağ tasarımında veri hareketinin maliyetini düşünmek için iyi bir okuma.
- Festus’ta Veri Merkezi Tepkisi: Sandıkta Gelen Ders: Altyapının siyaset kadar sert sonuçları olabileceğini hatırlatıyor.
Neyi Kazandık?
Lafı gevelemeden söyleyeyim: artık teorik olarak değil, gerçekten çalışan bir AWS ağına sahipsiniz. Public subnet, internet gateway, route table… Bunlar birbirine düzgün bağlıysa temel hazır demektir. Burası önemli.
Garip gelecek ama, Ama eksiksiz mi? Hayır. Üretim ortamında güvenlik — kendi adıma konuşayım — grupları, NACL’ler, private/public ayrımı ve muhtemelen load balancer da lazım olacak. Yine de ilk taşın yerleştirilmesi açısından bu lab bayağı değerli — “tamam, bu işin ABC’sini gördüm” diyebilmek için yeterli bir başlangıç noktası.
Bunu biraz açayım.
İyi altyapı göz önünde bağırmaz; sessiz çalışır, unutulur, ama kriz anında herkes ona döner.
Sıkça Sorulan Sorular
)
AWS VPC nedir?
AWS VPC,AWS içinde size ayrılmış izole ağ alanıdır. IP aralıklarını,subnet’leri,routing’i ve internet erişimini siz yönetirsiniz.
Terraform ile VPC kurmak neden iyi fikir?
Çünkü aynı ağı tekrar tekrar tutarlı şekilde kurarsınız. Elle yapılan işlemler hız kazandırabilir ama hata riski yüksektir.
Sadece Internet Gateway eklemek internete çıkış sağlar mı?
Hayır. Route table içinde uygun rota tanımlamazsanız trafik ilerlemez. Association adımı da mutlaka gerekir.
This setup production için yeterli mi?
Hayır, tek başına yetmez. Private subnet,security group strategy,multi-AZ planlama ve logging katmanı da gerekir.
Kaynaklar ve İleri Okuma
HashiCorp Terraform ile AWS Başlangıç Rehberi
AWS Provider Dokümantasyonu (VPC Kaynakları)
Amazon VPC Resmi Dokümantasyonu
Bu içerik işinize yaradı mı?
Benzer içerikleri kaçırmamak için beni sosyal medyada takip edin.



