Mimari Prensipler
5 minute read
Mimari Prensipler
Denomas'ın tüm ürünleri ve altyapısı aşağıdaki mimari prensipler üzerine inşa edilir. Mimari, "Önce Teknik Temel (Foundation First)" felsefesine dayanır. Müşteriye sunulacak özellikler geliştirilmeden önce tüm geliştirme ve otomasyon altyapısı mükemmelleştirilir.
Teknoloji Yığını (Technology Stack)
| Bileşen | Teknoloji | Versiyon / Detay | Gerekçe |
|---|---|---|---|
| Ana Platform | Odoo | 18.0+ (Python 3.10+) | CRM, satış, faturalandırma, muhasebe için zengin özellik seti |
| Backend Framework | Python / Django | 4.2+ LTS | Mikroservisler ve harici API'ler için |
| Mikroservisler | Python (FastAPI) | 0.100+ | Yüksek performanslı API güdümlü servisler |
| Veritabanı | PostgreSQL | 15+ | Nesne-ilişkisel, ölçeklenebilir, güvenilir |
| Önbellek / Kuyruk | Redis | 7+ | Session, cache, Celery broker |
| Web Sunucu | Caddy | Reverse proxy, SSL termination, load balancing | |
| Kaynak Kod Yönetimi | GitLab (Self-Hosted) | code.denomas.com ve code.ilimteknoloji.com | |
| CI/CD | GitLab CI/CD | Mevcut GitLab Runner'lar ile entegre pipeline | |
| Ön Yüz (Frontend) | Odoo Owl JS Framework | Odoo ekosistemi içinde sorunsuz entegrasyon | |
| Bilişsel Altyapı | Node.js tabanlı MCP Sunucuları | Model Context Protocol (Yapay Zeka Asistanı erişimi) | |
| Konteynerizasyon | Docker, Docker Compose | Tutarlı, izole ve tekrarlanabilir ortamlar | |
| IaC | Ansible / Terraform | Konfigürasyon yönetimi ve cloud provizyon | |
| İzleme | Prometheus + Grafana | Metrik toplama ve görselleştirme | |
| Loglama | Wazuh | Merkezi log yönetimi |
1. API-First
Her ürün ve hizmet, önce API olarak tasarlanır. UI, API'nin bir tüketicisidir.
- Tüm API'ler OpenAPI 3.0+ spesifikasyonu ile dokümante edilir
- API versiyonlaması zorunludur (
/api/v1/,/api/v2/) - Rate limiting ve authentication her endpoint'te bulunur
- API tasarımı, implementasyondan önce review edilir
Gerçek Örnek — Siber Sigorta Tarama API:
POST /api/v1/security_scan
Content-Type: application/json
{
"target_url": "https://example.com",
"scan_type": "quick",
"callback_url": "https://odoo.internal/api/scan_callback"
}
Bu endpoint, Odoo Controller tarafından Güvenlik Tarama Servisi'ni (Docker konteyner) tetikler. Sonuçlar JSON olarak döner, Odoo risk skoru hesaplar ve otomatik olarak crm.lead kaydı oluşturur.
Yeni bir API tasarlarken önce OpenAPI spec'i yazın, review alın, sonra implementasyona başlayın. Tüm API'ler docs/api/ dizininde Swagger UI ile erişime açılır.
2. Infrastructure as Code (IaC)
Tüm altyapı, kod olarak tanımlanır ve versiyon kontrolünde tutulur.
- Ansible — Konfigürasyon yönetimi ve deployment
- Standart Ansible rolleri:
denomas-base,denomas-monitoring,denomas-security,denomas-backup - Tüm roller
code.denomas.com/ansible/roles/altında versiyon kontrolündedir - Playbook'lar idempotent olmalı ve
moleculeile test edilmelidir
- Standart Ansible rolleri:
- Terraform — Cloud kaynak yönetimi (AWS, Proxmox, VMWare provizyon)
- Docker / Docker Compose — Konteynerizasyon
- Başlangıç mimarisi: Docker Compose ile tek sunucu
- Ölçeklenme planı: Kubernetes'e geçiş (auto-scaling, self-healing)
- Makefile — Karmaşık geliştirici ortamını basit komutlarla yönetir (
make setup,make start,make test) - Manuel altyapı değişikliği yapılmaz; tüm değişiklikler MR üzerinden gelir
# Örnek: Yeni ortam başlatma
make setup # Bağımlılıkları yükle, .env oluştur
make start # Docker Compose ile tüm servisleri başlat
make test # Tüm testleri çalıştır
make deploy-staging # Staging ortamına deploy
3. Zero Trust
Ağ içerisinde bile güven varsayılmaz. Her istek doğrulanır.
- mTLS ile servisler arası iletişim
- RBAC ile en az yetki (least privilege) prensibi — Odoo'nun standart ACL ve Record Rules yapısı en katı şekilde uygulanır
- Tüm erişim logları merkezi olarak toplanır (Wazuh)
- Düzenli erişim denetimleri yapılır
- Sır Yönetimi (Secrets Management):
- API anahtarları, veritabanı parolaları asla kodun içinde (
hardcoded) yer almaz - Geliştirme ortamı:
.envdosyaları (.gitignore'da zorunlu) - CI/CD ortamı: GitLab CI/CD Variables (Protected + Masked)
- Canlı ortam: HashiCorp Vault veya GitLab CI/CD Variables
- API anahtarları, veritabanı parolaları asla kodun içinde (
- Otomatik Kalite Kapısı, SQL injection ve XSS gibi bilinen açıkları koda girmeden engeller
4. Modülerlik
Ürünler bağımsız modüllere ayrılır:
- Her modül bağımsız deploy edilebilir
- Modüller API üzerinden iletişim kurar
- Gevşek bağlı, sıkıca tanımlanmış arayüzler
- 700+ modül bu prensiple yönetilir
Hibrit Odoo Çekirdeği Mimarisi
Platform, Hibrit ve Genişletilebilir Odoo Çekirdeği Mimarisi üzerine kuruludur:
| Katman | Sorumluluk | Örnekler |
|---|---|---|
| Odoo Çekirdeği | Merkezi veri ve iş mantığı hub'ı | res.partner, sale.order, account.move, project.task |
| Özel Odoo Modülleri | Denomas'a özel iş mantığı | ilim_ekosistem_base, ilim_hr_skills, ilim_compliance_bgrehber, ilim_strategy_management |
| Mikroservisler | Odoo'nun çekirdek yeteneklerini aşan görevler | Evrensel Provizyon Motoru, Otonom Fırsat Motoru, Siber Güvenlik Tarama Servisi |
| MCP Sunucuları | Yapay Zeka Asistanı erişim katmanı | mcp-odoo, mcp-file-search, mcp-git |
Multi-Tenant Mimari
Çoklu müşteri izolasyonu için:
- Her müşteri için izole veritabanı şeması (PostgreSQL schema-based isolation)
- RBAC ile tenant bazlı erişim kontrolü
- Tenant-aware API middleware
- Partner portalı ve bayi portalı ayrı Odoo Website instance'ları olarak çalışır
5. Mimari Karar Süreci (Architecture Decision Records)
Her teknik karar, "Mimari Analiz ve Karar Verme Süreci (SOP v6.0)" belgesine uyularak verilir. Bu süreç, "Kullan > Yükselt > Genişlet > İnşa Et" hiyerarşisini zorunlu kılar.
Karar Hiyerarşisi
| Öncelik | Yaklaşım | Açıklama |
|---|---|---|
| 1 | Kullan | Odoo çekirdek veya güncel OCA modülü olduğu gibi kullanılır |
| 2 | Yükselt | Kurumsal arşivdeki eski versiyon modül güncellenir |
| 3 | Genişlet | Mevcut modül üzerine özel geliştirme yapılır |
| 4 | İnşa Et | Sıfırdan modül geliştirilir (son çare) |
Kantitatif Karar Matrisi
Her mimari karar için docs/decisions/decision_log_[konu].md dosyasında şu matris doldurulur:
| Seçenek | PRD Uygunluk % (Ağırlık: 40%) | Geliştirme Eforu (1-10) (Ağırlık: 30%) | Bakım Riski (1-10) (Ağırlık: 20%) | Best Practices Uyumu % (Ağırlık: 10%) | Nihai Mimari Puanı |
|---|---|---|---|---|---|
| Odoo Çekirdek | [Puan] | [Puan] | [Puan] | [Puan] | [Hesaplanan] |
| OCA Modülü | [Puan] | [Puan] | [Puan] | [Puan] | [Hesaplanan] |
| Sıfırdan İnşa | 100% | [Puan] | [Puan] | [Puan] | [Hesaplanan] |
Her mimari analizin 0. adımında, BMad Analist Agent'ı (Mary) MCP sunucuları (mcp-odoo, mcp-file-search) ve Google Search kullanarak Odoo ekosistemindeki en iyi pratikleri araştırır. Sonuçlar docs/architecture/odoo_best_practices.md dosyasına kalıcı standart olarak eklenir.
Alınmış Mimari Kararlar Örnekleri
| Karar | Seçenek | Gerekçe |
|---|---|---|
| Yapılandırılabilir Ürünler | OCA product-configurator + genişletme | Otomatik provizyon mantığı eklendi |
| Sözleşme Yönetimi | OCA contract + agreement_legal + genişletme | Uyumluluk ve Denomas Yetkinlik Çerçevesi modelleri bağlandı |
| Denomas Yetkinlik Çerçevesi & Uyumluluk Katmanı | Sıfırdan inşa | Standart çözüm bulunamadı, Odoo best practices ile geliştirildi |
6. Resilience (Dayanıklılık)
Sistemler, arızaya hazır tasarlanır:
- Circuit breaker pattern
- Graceful degradation
- Otomatik retry mekanizmaları
- Canary deployment ve otomatik rollback
- Evrensel Connector Mimarisi — Bir sağlayıcıda sorun yaşandığında başka bir sağlayıcıya geçişi kolaylaştıran esnek yapı
7. Gözlemlenebilirlik (Observability)
Her sistem, izlenebilir ve hata ayıklanabilir olmalıdır:
- Prometheus metrikleri — Odoo ve PostgreSQL için özel exporter'lar
- Yapılandırılmış loglama — Tüm bileşenler loglarını JSON formatında stdout'a yazar
- Merkezi log toplama — Fluentd ile Docker/Kubernetes log'ları toplanır ve Wazuh'a gönderilir
- Dağıtık tracing (OpenTelemetry)
- Grafana panoları — Veritabanı bağlantı sayısı, yavaş sorgular, aktif kullanıcı sayısı gibi kritik metrikler
- Alerting ve on-call süreçleri
8. Ölçeklenebilirlik
| Faz | Mimari | Detay |
|---|---|---|
| Başlangıç | Docker Compose | Tek sunucu, kolay yönetim, hızlı başlangıç |
| Büyüme | Kubernetes | Otomatik ölçeklenme, self-healing, rolling updates |
Kubernetes'e geçişte kazanılacak yetenekler:
- Auto-scaling — Yoğun saatlerde Odoo web sunucusu pod sayısı otomatik artar
- Self-healing — Çöken servisler otomatik yeniden başlatılır
- Rolling Updates — Sıfır kesinti ile güncelleme
İlgili Sayfalar
- Mühendislik Genel Bakış
- Mühendislik
- Hibrit Bulut Stratejisi
- İzleme ve Gözlemlenebilirlik
- Güvenlik Yaklaşımı
- CI/CD Pipeline
- Kod Kalitesi
Geribildirim
Bu sayfa yararlı oldu mu?
Bu sayfa faydali oldu
Bu sayfa gelistirilmeli
