1 Milyon Kullanıcıya Nasıl Hizmet Veriyoruz? CloudLMS Teknik Alt Yapı ve Mimarimiz 300 kurumsal müşterimizde 1 milyonun üzerinde kullanıcıya günlük 250 binin üzerine sunulan video ile sorunsuz ve mükemmel bir servis sunan CloudLMS alt yapısı nasıl çalışıyor sizlere bunu kısaca anlatmak istedik. Kullanılan teknoloji, deneyim, uzmanlık ve bilgi birikimiyle bu servisi nasıl çalıştırdığımızı inceleyebilirsiniz. Öncelikle çalıştığımız şirketlerin global de olması nedeniyle alt yapımızın da global olması gerekiyordu. Çünkü dünyanın her yerinden kullanıcılar sistemimize erişebiliyor olmalıydı. Bu nedenle bundan 5 yıl önce Amazon AWS (Amazon Web Services) kullanmayı tercih ettik ve tüm hizmetlerimizi AWS üzerinde yapılandırdık. BÖYLECE TÜRKİYE NİN İLK BULUT TABANI KURUMSAL LMS İ ORTAYA ÇIKMAYA BAŞLAMIŞ OLUYORDU. Özetle gereksinimlerimiz nelerdi? Global alt yapı (Dünya çapında 150 den fazla lokasyonda replikasyon) AutoScale - Gelen yüke göre sunucuların otomatik ölçeklenebilmesi Servis çeşitliliği - Hazır servislerle (e-posta, CDN, yük dengeleme, S3, Dosya yükleme vb) entegrasyon ve hatasız çalışma (LEGO mimarisi) Basitçe yöntemimiz İnşa Et Öğren Ölçümle
Basit Ölçekte Başlangıcımız Her şey basit ölçekte bir Sanal Sunucu, IP adresi ve Domain Controller ile başlıyor. Ama ilerledikçe sistem karmaşık hale geliyor. Orta Düzey Ölçek Veri tabanı ve uygulama sunucuları ayrılıyor, iş yüklerinin ayrılması ve paylaşılması önemli bir hale geliyor, burada Amazon Aurora yardımımız koşuyor. 64 TB a kadar otomatik ölçeklenebilir depolama 15 e kadar farklı bölgelerde veri tabanı konumlandırabilme S3 üzerinde otomatik yedekleme 3 farklı yere aynı anda 6 yollu yedekleme Veri tabanı seçimimiz; Microsoft SQL Ölçeklenebilir 5TB a kadar büyüyebilme Hızlı veri okuma ve yazma Büyük ölçekli verileri sunabilme Kullanıcı Yönetimi; Amazon Cognito Kullanıcı havuzu yönetiminde bize yardımcı oluyor. Bu sayede Federated Identity desteği sayesinde (Google, Facebook, LinkedIn, ) isteyen kurumsal müşterilerimiz sosyal medya login entegrasyonu kullanabiliyor. Farklı Bölgelerde Sunucu Barındırma (Availability Zone) Sunucuları farklı bölgelerde birbirini yedekleyecek şekilde barındırma ve risk dağıtımı önemli! Master veri tabanından diğer veri tabanlarına otomatik yedekleme yapıyoruz. Böylece risklerimizi minimize ediyoruz.
Uygulama Yük Dengeleyici (Application Load Balancer) Yüksek düzeyde risk yönetimi, %100 uptime yani kesintisiz çalışma, Monitoring ve logging avantajlarına sahip oluyor. Bu sayede uygulamamız yani CloudLMS yatayda büyürken yükler eşit düzeyde dağıtılıyor. İçerik Yönetimi; CDN (Amazon CloudFront) ve S3 İçerikler web sunucusuna yük getirmeden kullanıcıya sunuluyor S3; Nesne tabanlı sunucu, nesne kaybı olanaksız, dosyalar vb. CloudFront; İçerik sunarken ön bellek desteği, dinamik ve statik içerik, video streaming, SSL sertifika desteği, Time to Lead = 0
Ön bellek desteği için; Amazon ElastiCache = Kusursuz Response Time Ve İşte 1 milyon Kullanıcı İçin Mimarimiz
Veri Tabanı Ek Performansı için; Amazon Dynamo DB Session verilerinin dışarı alınması, NOSQL bir servis, JSON desteği, TTL (Time to live) avantajlarıyla gerektiğinde Dynamo DB Accelerator kullanıyoruz. Bu da veri okuma yazmada bize inanılmaz bir inanılmaz performans sunuyor. Otomatik Ölçeklendirme AutoScaling Bu noktada artık işletme maliyetinin otomatik düşürülmesi önemli bir hale geliyor. Yüke göre tüm alt yapıların otomatik olarak belirlenmesi. CloudLMS AutoScaling desteği sunar. Kaynakları gelen yüke göre otomatik arttırır veya azaltır. Mimarinin Özeti CloudLMS in tüm mimarisi otomatik olarak çalışır; AWS Elastic Beanstalk + AWS OpsWork
Kod Geliştirme Sürecinin Otomasyonu; AWS Code Services Tüm yazılım ve kod geliştirme sürecinin hatasız ve otomatik hale getirilmesi. AWS Code Star ile ortak kodların kolay paylaşımı, hızlı uygulama geliştirme. Tüm Sistemin İzlenmesi; CloudWatch Sistemin her ayrıntısının izlenmesi ve sürekli optimizasyon, alarm mekanizmaları tanımlama. Front-end teknolojilerimiz React, Vue.JS, HTML5 Mobil teknolojilerimiz React-native (ios - Android) Objective - C Swift (ios) Java Kotlin (Android)