Diğer hocalarıma katılıyorum. Ama asıl soruya net cevap vermedikleri için yazma gereği duydum.
Nasil bir site yaparsam basvurularima donus daha garanti olur?
Production ortamında, belli kullanıcısı ve trafiği olan bir projen olsun. Bu projeyi open source yap. Madem amacın iş bulabilmek o halde yeteneklerini ve sektör bilgini göster.
Trafik alan bir proje fikri bulsak ilk biz yaparız

O sebeple senin araştırman ve ihtiyaçları tespit edip, projeyi kendin oluşturman daha mantıklı.
Bir diğer proje fikri şu olabilir; Backend de kullanılan bazı teknolojileri kullandığın bir repo oluştur. Bunları bildiğini ve kullanabildiğini göster. Bilmiyorsan öğrenmiş olursun.
Mesela;
- Kuyruk yapısı. Inbox-outbox yapısı. Producer/consumer yapısı.
Bu projede kafka kullanılabilir. Kafka çok sık kullanılan bir teknoloji.
- Logging, monitoring, alerting
Normalde zabbix falan kurarlar, pek senlik bir durum olmayabilir. Ama en azından sık kullanılan, elasticsearch araştırıp kullanmayı dene. Özellikle microservice yapılarında bir isteği takip edebil. CorrelationId olarak geçer çoğu yerde. Monitoring ve alert içinde Prometheus + Grafana öğren. Yabancı kalmamış olursun. Ama elzem bir konu değil.
- Cache
Tabiki ilk akla gelen Redis. Redis duymadım diyen bir backend geliştiricisi yoktur bence. Memory Cache de bil, CDN cache de.
- Container/orchestration
Yine ilk akla gelenler; Docker, Kubernetes. Bir projeyi containerlaştırmak (Türkçesi ne bunun?) ve scale edebilmek lazım. Scale horizontal olur vertical olur. Farketmez. Yapıyı ona göre kurgulayabilmelisin. Yeri geldiğinde DB ler bile scale olur.
- Database/ORM
Hem SQL hemde NoSQL bil bence. İlla mongodb kullanmak zorunda değilsin. Redis çok kullanışlıdır. Redisi tercih ederim çoğu durumda. SQL sorgusu yazabilmelisin. Büyük veri setlerinde çalış. Gece gündüz sql yaz. DB tarafında benim sık kullandığım PostgreSQL dir. MySQL, MSSQL, MariaDB kullanılabilir. Burada yabancı olmamak için db management programlarına belki göz atılabilir. Ben navicat kullanıyorum.
- Network
Ağ yapılarını bilmelisin. API kullandığı protokolleri(Bu ifade doğru mu bilemedim) bilmelisin. RestAPI, Soap, GraphQL, Socket, gRPC, message queue vs. Kullanmasan bile bu yapıların olduğunu bil. Her şey restapi olmayabiliyor.
- Authentication/Authorization
Bence en can alıcı kısım olabilir. Projelerinde auth sistemlerini kullan. Bir api sistemini dışarıya açtığını düşün. API key vermelisin. Yada Public(client) API key verdiğini düşün. Bunu koruyabilmelisin (cors-origin). Bu sistemi kurgulayabilmelisin. Bunun dışında belki oAuth bakabilirsin. Böyle bir mimari tasarlayabilirsin.
Detaylı link
- CI/CD
CI; testler (unit, A/B, api vs), statik kod analizleri, code review (Yeni çıkan bazı AI'lar yapabiliyor). CD; Proje open source ise Github actions iyidir. Private ise Jenkins iyidir.
- Job/Worker
Gerçek projelerde çok sık görebileceğin bir konudur bu. İlk maddede ki kuyruk yapısı ile aynı başlıkta toplanabilir. Ama bunu genelde proje içerisinde kullanırız. Mesela; Bir işi arka planda halletmesi gerekiyor ki ön taraf beklemesine gerek kalmasın. Yada 90sn response kuralı vardır. Ama işlem min 5dk sürecektir. Worker'a atıyorsun işi hallediyor, en son kullanıcıyı bilgilendirir geçer. Kuyruk yapısında ise, proje içinde kuyruğa atarsın. İşleyen consumer artık ne yapıyorsa yapıyor, bu consumer başkası tarafından yazılabilir. Sana şu kuyruğa gönder ben onu işlerim der. Sende yapıyı ona göre kurgularsın. Bunu şu yüzden sık kullanıyoruz açıkçası, consumer genelde başka programları tetikliyor, dosya sistemine erişiyor falan. Yoksa basit db ye gidecekse worker yazmak daha mantıklı.
Çok uzun bir yazı oldu kusura bakmayın. Tüm backend bilgimi aktarmış oldum sanki : ) Ama bu konuları bilen birini, özellikle junior olup bunları bilen birilerini gördüğünde, işe girme yüzdeliğin büyük ölçüde artmış olacaktır. Benim 3-4 yıllık tecrübem bunlar : )
Aç bir repo, klasör klasör koy içine. Tek repoda birleştir. Bir proje olmasına gerek yok. Log bas. README dosyasına kullandığın teknolojileri yaz. İlgi çekecektir.