Bu proje, mikroservis mimarisi temeline baz alınmış bir online eğitim platformudur. Proje, farklı veritabanları ve teknolojiler kullanarak esnek, ölçeklenebilir ve sürdürülebilir bir yapı sunmayı amaçlamaktadır.
- .NET Core 5.0: Projenin ana çatısını oluşturur.
- ASP.NET Core MVC: Web uygulama katmanında kullanılmıştır.
- Entity Framework Core: Veritabanı işlemleri için kullanıldı.
- AutoMapper: Nesne dönüşümleri için kullanıldı.
- FluentValidation: Veri doğrulama işlemleri için kullanıldı.
- Refit: Mikroservisler arası HTTP tabanlı iletişim için kullanıldı.
- RabbitMQ: Mikroservisler arası mesajlaşma altyapısı olarak kullanıldı.
- MassTransit: RabbitMQ ile entegrasyon için kullanıldı.
- Ocelot: API Gateway olarak görev yapmaktadır.
- Polly: Hata yönetimi ve tekrar deneme mekanizması için kullanıldı.
- Docker: Mikroservislerin containerize edilmesi ve yönetilmesi için kullanıldı.
- Kubernetes: Container orkestrasyonu ve yönetimi için kullanıldı.
Her bir mikroservis, kendine özgü bir veritabanı kullanarak veri yönetimini gerçekleştirmektedir:
- SQL Server: Order ve Payment servislerinde kullanılmıştır.
- MongoDB: Catalog servisi için kullanılmıştır.
- PostgreSQL: User servisi için kullanılmıştır.
- In-Memory Database: Test süreçlerinde ve bazı servislerde hızlı veri erişimi için kullanılmıştır.
- Redis: Caching mekanizması olarak kullanılmıştır.
Proje, Docker kullanılarak containerize edilmiştir. Aşağıdaki adımlarla Docker kullanarak projeyi çalıştırabilirsiniz:
- Docker yüklü değilse Docker'ı indirin ve kurun.
- Proje dizininde bir
Dockerfilevedocker-compose.ymldosyası bulunmaktadır. - Terminal veya komut satırını açarak proje dizinine gidin.
docker-compose upkomutunu çalıştırarak tüm mikroservisleri başlatın.- Docker, tüm bağımlılıkları indirir ve mikroservisleri ilgili container'larda çalıştırır.
Bu proje, bir online eğitim platformunun altyapısını oluşturmayı hedefleyen bir eğitim amaçlı projedir. Projede kullanılan teknolojiler, mikroservis mimarisi ve mesajlaşma altyapısı gibi modern yazılım geliştirme pratikleri üzerine odaklanmıştır.
Özellikler:
- Kullanıcı kaydı ve kimlik doğrulama
- Kurs oluşturma, güncelleme ve silme
- Sepet ve ödeme işlemleri
- Sipariş takibi ve yönetimi
- Fotoğraf yükleme ve silme işlemleri (PhotoStock servisi)
- Mikroservisler arası mesajlaşma ve entegrasyon