Bu proje, e-ticaret platformu için mikroservis mimarisi kullanılarak geliştirilmiş bir uygulamadır.
- User Service: Kullanıcı yönetimi ve kimlik doğrulama
- Product Service: Ürün yönetimi
- Order Tracking Service: Sipariş takibi
- Cart Service: Alışveriş sepeti yönetimi
- Payment Service: Ödeme işlemleri
- API Gateway: Servisler arası iletişim ve yönlendirme
- Frontend: React tabanlı web arayüzü
- Prometheus: Metrik toplama
- Grafana: Metrik görselleştirme
- Node Exporter: Sistem metrikleri
- AlertManager: Uyarı yönetimi
- PostgreSQL: Kullanıcı servisi için
- MongoDB: Ürün ve sipariş servisleri için
- MySQL: Ödeme servisi için
- RabbitMQ: Mesaj kuyruğu
- Redis: Cache ve session yönetimi
# MongoDB'ye bağlanma
docker exec -it micro-mongodb-1 mongosh
# Kullanılabilir veritabanlarını listeleme
show dbs
# Admin veritabanına geçiş
use admin,cart_service_db,ProductsDb order-tracking
# Koleksiyonları listeleme
show collections
# Ürünleri görüntüleme
db.products.find().pretty()
# Siparişleri görüntüleme
db.orders.find().pretty()
# PostgreSQL'e bağlanma
docker exec -it micro-postgres-1 psql -U postgres
# Mevcut veritabanlarını listeleme
\l
# user_service_db veritabanına geçiş
\c user_service_db
# Tabloları listeleme
\dt
# Kullanıcıları görüntüleme
SELECT * FROM public."Users";
# MySQL'e bağlanma
docker exec -it micro-mysql-1 mysql -u payment_user -ppayment_password payment_db
# Veritabanlarını listeleme
SHOW DATABASES;
# Tabloları listeleme
SHOW TABLES;
# Siparişleri görüntüleme
SELECT * FROM orders;
# Sipariş detaylarını görüntüleme
SELECT * FROM order_items;
# Örnek sorgular:
# Son 10 siparişi görüntüleme
SELECT * FROM orders ORDER BY created_at DESC LIMIT 10;
# Tamamlanmış siparişleri görüntüleme
SELECT * FROM orders WHERE status = 'completed';
# Belirli bir kullanıcının siparişlerini görüntüleme
SELECT * FROM orders WHERE user_id = 'id girilecek';
# Redis'e bağlanma
docker exec -it micro-redis-1 redis-cli
# Redis bilgilerini görüntüleme
info
# Tüm anahtarları listeleme
keys *
# Belirli pattern'deki anahtarları listeleme
keys user:*
keys product:*
keys cart:*
keys payment:*
# Anahtar değerini görüntüleme
get user:session:123
get product:price:456
# Cache istatistiklerini görüntüleme
info stats
# Memory kullanımını görüntüleme
info memory
# Veritabanı boyutunu görüntüleme
dbsize
# Belirli TTL'e sahip anahtarları görüntüleme
ttl user:session:123
# Cache'i temizleme (dikkatli kullanın!)
flushdb
# Örnek cache sorguları:
# Kullanıcı session'larını görüntüleme
keys user:session:*
# Product cache'lerini görüntüleme
keys product:*
# Cart cache'lerini görüntüleme
keys cart:*
# Payment session'larını görüntüleme
keys payment:session:*
PORT
: 3001DB_HOST
: postgresDB_PORT
: 5432DB_NAME
: user_service_dbDB_USER
: postgresDB_PASSWORD
: postgresJWT_SECRET
: V58XuK9zPq4sDwjEbCfa7hJLgMrTn2YHRABBITMQ_URL
: amqp://rabbitmq:5672REDIS_HOST
: redisREDIS_PORT
: 6379
ASPNETCORE_ENVIRONMENT
: DevelopmentMongoDbSettings__ConnectionString
: mongodb://mongodb:27017MongoDbSettings__DatabaseName
: ProductsDbMongoDbSettings__ProductsCollectionName
: ProductsRabbitMQ__Host
: rabbitmqRabbitMQ__Username
: guestRabbitMQ__Password
: guestREDIS_HOST
: redisREDIS_PORT
: 6379
PORT
: 5000MONGODB_URI
: mongodb://mongodb:27017/order-trackingRABBITMQ_URL
: amqp://guest:guest@rabbitmq:5672JWT_SECRET
: V58XuK9zPq4sDwjEbCfa7hJLgMrTn2YHNODE_ENV
: developmentREDIS_HOST
: redisREDIS_PORT
: 6379
PORT
: 4004JWT_SECRET
: V58XuK9zPq4sDwjEbCfa7hJLgMrTn2YHRABBITMQ_HOST
: rabbitmqRABBITMQ_PORT
: 5672PRODUCT_SERVICE_URL
: http://product-service:80/api/productsCART_SERVICE_URL
: http://cart-service:4003MYSQL_HOST
: mysqlMYSQL_PORT
: 3306MYSQL_USER
: payment_userMYSQL_PASSWORD
: payment_passwordMYSQL_DATABASE
: payment_dbREDIS_HOST
: redisREDIS_PORT
: 6379
PORT
: 4000JWT_SECRET
: V58XuK9zPq4sDwjEbCfa7hJLgMrTn2YHREDIS_HOST
: redisREDIS_PORT
: 6379
PORT
: 4003JWT_SECRET
: V58XuK9zPq4sDwjEbCfa7hJLgMrTn2YHREDIS_HOST
: redisREDIS_PORT
: 6379
GF_SECURITY_ADMIN_PASSWORD
: adminGF_SECURITY_ADMIN_USER
: admin
- Frontend: 3000
- API Gateway: 4001
- User Service: 5002
- Product Service: 5001
- Order Tracking Service: 5000
- Cart Service: 4003
- Payment Service: 4004
- Prometheus: 9090
- Grafana: 3001
- RabbitMQ Management: 15672
- RabbitMQ: 5672
- MongoDB: 27017
- PostgreSQL: 5432
- MySQL: 3306
- Redis: 6379
- Redis Commander: 8081
- Node Exporter: 9100
- Grafana: http://localhost:3001 (admin/admin)
- Prometheus: http://localhost:9090
- RabbitMQ Management: http://localhost:15672 (guest/guest)
- Redis Commander: http://localhost:8081
- Host: localhost
- Port: 5432
- Database: user_service_db
- Username: postgres
- Password: postgres
- Host: localhost
- Port: 27017
- Database: ProductsDb, order-tracking
- Host: localhost
- Port: 3306
- Database: payment_db
- Username: payment_user
- Password: payment_password
- Host: localhost
- Port: 6379
- Web UI: http://localhost:8081 (Redis Commander)
- User Sessions:
user:session:{userId}
(TTL: 30 dakika) - User Profiles:
user:profile:{userId}
(TTL: 30 dakika) - Product Data:
product:{productId}
(TTL: 30 dakika) - Product Prices:
product:price:{productId}
(TTL: 1 saat) - Cart Data:
cart:{userId}
(TTL: 1 saat) - Order Data:
order:{orderId}
(TTL: 1 saat) - Payment Sessions:
payment:session:{userId}
(TTL: 30 dakika) - API Responses:
api:response:{endpoint}:{params}
(TTL: 10 dakika) - Rate Limiting:
rate_limit:{userId}:{endpoint}
(TTL: 1 dakika)
- Cache-Aside: Veri önce cache'den kontrol edilir, yoksa veritabanından alınıp cache'e konur
- Write-Through: Veri hem veritabanına hem cache'e eş zamanlı yazılır
- Write-Behind: Veri önce cache'e yazılır, daha sonra asenkron olarak veritabanına yazılır
- TTL (Time To Live): Tüm cache verilerinin otomatik sona erme süreleri vardır