Yazılım geliştirirken, kod yazmak kadar onu organize etmek de çok önemlidir. Peki, bunu nasıl yapabiliriz? İşte burada yazılım mimarisi devreye giriyor! Bu yazıda, yazılım mimarisinin ne olduğunu, neden önemli olduğunu ve yaygın mimari desenleri inceleyeceğiz. Hadi başlayalım! 🚀
İçerik
Yazılım Mimarisi Nedir?
Yazılım mimarisi, bir yazılım sisteminin genel yapısını, bilesenlerini ve bunların birbirleriyle olan ilişkilerini tanımlar. Yani, bir bina inşa ederken kullanılan mimari planlar gibi, yazılım için de bir plan gibidir.
Kötü bir mimari seçimi, zamanla kodun karmaşıklaşmasına, bakımın zorlaşmasına ve yeni özellik eklemenin çileye dönmesine neden olabilir. Bu nedenle, doğru mimariyi baştan belirlemek çok kritiktir.
Neden Yazılım Mimarisi Önemlidir?
- Kodun okunabilirliğini artırır.
- Bakımı kolaylaştırır.
- Performansı iyileştirir.
- Yeniden kullanılabilir bileşenler oluşturur.
- Takım içi iş birliğini kolaylaştırır.
Popüler Yazılım Mimarileri
1. Katmanlı (Layered) Mimari
Bu mimari, yazılımı katmanlara ayırarak organize eder. Genellikle aşağıdaki gibi bir yapıya sahiptir:
- Kullanıcı Arayüzü (UI) Katmanı: Kullanıcının gördüğü kısım.
- İş Mantığı (Business Logic) Katmanı: Uygulamanın kurallarını ve mantığını içerir.
- Veri Erişim (Data Access) Katmanı: Veritabanı işlemlerini yürütür.
Kod Örneği (Java – Spring Boot)
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
return ResponseEntity.ok(userService.getUserById(id));
}
}
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User getUserById(Long id) {
return userRepository.findById(id).orElseThrow(() -> new RuntimeException("User not found"));
}
}
@Repository
public interface UserRepository extends JpaRepository<User, Long> {}
2. Mikroservis Mimarisi
Büyük sistemleri küçük ve bağımsız hizmetlere böler. Her servis, belirli bir işlemi yerine getirir ve bağımsız olarak çalışabilir.
Kod Örneği (Spring Boot + Docker)
@RestController
@RequestMapping("/products")
public class ProductController {
@GetMapping
public List<String> getProducts() {
return List.of("Laptop", "Mouse", "Keyboard");
}
}
Dockerfile:
FROM openjdk:17
COPY target/microservice.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
3. MVC (Model-View-Controller) Mimarisi
Bu desen, görünüm (View), veriler (Model) ve kontrol (Controller) işlemlerini ayrır. Bu desenin yanı sıra, MVVM (Model-View-ViewModel) ve MVP (Model-View-Presenter) gibi türevleri de bulunmaktadır.
MVVM (Model-View-ViewModel) Nedir?
MVVM, özellikle masaüstü ve mobil uygulamalarda kullanılan bir desendir. ViewModel katmanı, View ile Model arasında bir köprü görevi görür.
MVP (Model-View-Presenter) Nedir?
MVP deseni, MVC’ye benzer ancak Controller yerine Presenter kullanır. Presenter, View ile Model arasında bir bağlantı kurarak iş mantığını soyutlar.
Kod Örneği (Python – Flask)
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/products', methods=['GET'])
def get_products():
products = ["Laptop", "Mouse", "Keyboard"]
return jsonify(products)
if __name__ == '__main__':
app.run(debug=True)
Son Söz
Yazılım mimarisi, sağlam ve bakımı kolay bir sistem oluşturmanın temelidir. Projenizin gereksinimlerine göre doğru mimariyi seçmek, hem geliştirme sürecinizi kolaylaştırır hem de uzun vadede projeyi daha sağlam hale getirir. Umarım bu rehber, doğru mimari seçiminde size yardımcı olur! 😊
Hangi mimariyi tercih ettiğinizi ve deneyimlerinizi yorumlarda paylaşabilirsiniz! 🚀