Artık yapmadığınız kurulum işi
Bir veritabanı ayağa kaldırmak normalde bir sunucu sağlamak, motoru kurmak, kullanıcılar ve yetkiler oluşturmak, bağlantı limitlerini ayarlamak, doğru portları açmak ve her şeyi yamalı tutmak anlamına gelir. Tek bir uygulama için, bir satır iş mantığı yazmadan önce bu hatırı sayılır miktarda ayırt edici olmayan iştir. cdn.com.tr, MySQL, MariaDB, PostgreSQL ya da Redis instance'ını sizin için sağlar ve kullanıma hazır kimlik bilgilerini geri verir; böylece doğrudan uygulamanızı bağlamaya geçersiniz.
Kod olarak değil, ortam olarak kimlik bilgileri
Platform kullanıcı adını ve şifreyi üretir, host, port, veritabanı, kullanıcı ve şifreyi bağlı uygulamaya ortam değişkeni olarak enjekte eder. Bu, güvenlik ve operasyon açısından önemlidir: sırlar hiçbir zaman Git geçmişinizde ya da Docker image'ınızda oturmaz, ve uygulama bunları çalışma zamanında okuduğu için bir şifreyi döndürmek bir kod değişikliği değil bir binding güncellemesidir. Kendi altyapınızı kurmadan config'in koddan ayrılması yönündeki twelve-factor prensibini korur.
MySQL, MariaDB ve PostgreSQL arasında seçim yapmak
Çoğu WordPress ve klasik PHP stack'i MySQL ya da onun drop-in kuzeni MariaDB'yi bekler, ve ikisi de bu uygulamalar için güvenli bir varsayılandır. PostgreSQL, framework'ünüz ya da şemanız Postgres'e özgü tiplere, uzantılara ya da daha katı SQL davranışına dayandığında doğru seçimdir. Üçü de aynı bağla-ve-enjekte akışıyla yönetilen ek hizmet olarak sunulduğundan, karar her birinin işletilmesinin ne kadar zor olduğuyla değil, uygulamanızın ne beklediğiyle ilgilidir — hepsi aynı şekilde sağlanır.
Yönetilen Redis gerçekte ne için kullanılır
Redis bellek içi bir depodur ve platformda tipik olarak üç işten birini yapar: pahalı sorgu sonuçlarını ve render edilmiş fragmanları cache'lemek, container replica'ları arasında hayatta kalması gereken kullanıcı oturumlarını tutmak, ve yoğun sayfalarda tekrarlanan veritabanı isabetlerini azaltmak için bir WordPress object cache'i olarak görev yapmak. Uygulama container'ının dışında yaşadığından, ölçeklenmiş bir servis her replica'nın kendi cache'ini tutması yerine tek bir cache ve tek bir oturum deposu paylaşır. Yatay ölçeklendirmenin stateful hissettiren özellikler için doğru davranmasını sağlayan şey budur.
WordPress için Redis object cache
Yük altındaki bir WordPress sitesi, her sayfayı oluşturmak için aynı veritabanı sorgularını şaşırtıcı derecede fazla tekrar çalıştırarak zaman harcar. WordPress'i object cache'i olarak yönetilen bir Redis ek hizmetine yönlendirmek, bu sonuçların veritabanı yerine bellekten sunulması anlamına gelir; bu da sorgu baskısını azaltır ve bir kampanya sırasında trafik arttığında yanıt sürelerini istikrarlı tutar. Statik assetler için CDN cache ile eşleştirildiğinde, Redis dinamik tarafı halleder, böylece veritabanı darboğaz olmaz.
Rotasyon, reset ve paylaşımlı kullanım
Şifreler sonsuza kadar sürmemeli, ve bazen biri bir logda ya da bir ekran görüntüsünde sızar. Reset/rotate akışı taze bir kimlik bilgisi üretir ve bağlı uygulamalar bunu kendi binding'leri üzerinden alır; böylece birkaç kod tabanında sabit kodlanmış bir şifrenin peşinden koşmazsınız. Birden çok servis gerçekten aynı veritabanını paylaştığında, aynı ek hizmeti her birine bağlamak onları tutarlı tutar, platform durumu ise herhangi bir değişiklikten sonra veri katmanının sağlıklı olduğunu doğrulayacağınız tek bir yer sağlar.
Adım adım nasıl kurulur
Uygulamanızın ihtiyaç duyduğu motoru seçin
Panelde Add-ons alanını açın ve bir veritabanı oluşturun. Çoğu PHP ve WordPress iş yükü için MySQL ya da MariaDB'yi, Postgres özelliklerini bekleyen uygulamalar için PostgreSQL'i seçin. Cache, oturum ya da bir WordPress object cache'i için bir Redis ek hizmeti oluşturun. Her biri sizin için bir veritabanı adı, kullanıcı ve üretilmiş bir şifreyle sağlanır.
Bir uygulamaya bağlayın
Ek hizmetten ya da uygulamanın kendi ayarlarından, veritabanını bir Container App'e, PHP Platform'a ya da bir WordPress sitesine bağlayın. Bağlamak, bağlantı detaylarını elle kopyalamanız yerine uygulamaya bağlar, ve aynı ek hizmet buna gerçekten ihtiyaç duyan servisler tarafından paylaşılabilir.
Kimlik bilgilerini ortamdan okuyun
Bağlandıktan sonra host, port, veritabanı adı, kullanıcı adı ve şifre uygulamada ortam değişkeni olarak gelir. Kodunuz bunları çalışma zamanında okur — örneğin bu env değişkenlerinden oluşturulmuş bir PDO DSN'i ya da bir Redis client'ı — böylece hassas hiçbir şey image'a gömülmez ya da repoya commit edilmez.
WordPress ve PHP'nin kendi kendini bağlamasına izin verin
Bir WordPress sitesi için platform, kurulum sırasında veritabanı bağlantısını doldurur; böylece wp-config'i elle düzenlemezsiniz, ve bir Redis ek hizmeti object cache'i destekleyebilir. Özel bir PHP uygulaması için framework'ünüzün veritabanı ve cache yapılandırmasını enjekte edilen env adlarına yönlendirmeniz yeterlidir.
Gerektiğinde döndürün ya da sıfırlayın
Bir kimlik bilgisi açığa çıkarsa ya da sadece belirli bir programa göre döndürüyorsanız, ek hizmet üzerindeki reset/rotate akışını kullanın. Yeni bir şifre üretilir ve bağlı uygulamalar güncellenmiş değeri kendi binding'leri üzerinden alır; böylece döndürme, servisler arasında manuel bir yeniden deploy avına dönüşmez.
Sağlığı izleyin ve cdnctl ile otomatikleştirin
Ek hizmetin ayakta ve erişilebilir olduğunu doğrulamak için platform durumunu kullanın, ve bir ek hizmet oluşturma, bağlama, bir rotate tetikleme gibi rutin görevleri cdnctl'den yönlendirin; böylece ortam sağlama manuel tıklamalar yerine scriptlere ve CI'a uyum sağlar.
Örnek senaryolar
Bir içerik sitesi kurulum sırasında yönetilen bir MySQL veritabanı ve object cache'i olarak bir Redis ek hizmetiyle sağlanır; böylece sayfalar bellekten render edilir ve veritabanını zorlamadan trafik artışlarına dayanır.
Bir Laravel API'si, yönetilen bir PostgreSQL ek hizmetini ve kuyruklar ile cache için bir Redis ek hizmetini bağlar; her iki bağlantı setini de sunucu yönetimi olmadan enjekte edilen ortam değişkenlerinden okur.
Birkaç replica'ya ölçeklenmiş bir container uygulaması, oturumları yönetilen Redis'te saklar; böylece bir kullanıcı hangi replica bir sonraki isteği karşılarsa karşılasın giriş yapmış kalır.
Bir ekip her çeyrekte veritabanı şifresini panelden döndürür; bağlı uygulamalar yeni secret'ı kendi binding'leri üzerinden alır, böylece yapılandırma dosyalarında manuel bir tarama gerekmez.
Sıkça sorulan sorular
Hangi veritabanı motorlarını sağlayabilirim?
MySQL, MariaDB ve PostgreSQL yönetilen veritabanı ek hizmeti olarak, Redis ise yönetilen bir cache ek hizmeti olarak mevcuttur. Tipik WordPress ve PHP uygulamaları için MySQL ya da MariaDB'yi, uygulamanız özellikle Postgres beklediğinde PostgreSQL'i seçin.
Uygulamam bağlantı detaylarını nasıl alır?
Bir ek hizmeti bir uygulamaya bağladığınızda, host, port, veritabanı adı, kullanıcı adı ve şifre ortam değişkeni olarak enjekte edilir. Kodunuz DSN'ini ya da Redis client'ını çalışma zamanında bu değişkenlerden oluşturur; böylece image'da ya da repoda hiçbir kimlik bilgisi yaşamaz.
Redis bir veritabanı yerine mi geçer, yoksa bir cache midir?
Bir cache ve bellek içi depodur, birincil veritabanınızın yerine geçmez. Sorgu ve fragman cache'lemesi, replica'lar arasında paylaşılması gereken oturumlar ve bir WordPress object cache'i için kullanın — kalıcı veriniz ise MySQL, MariaDB ya da Postgres'te kalır.
Uygulamaları bozmadan bir veritabanı şifresini nasıl döndürürüm?
Ek hizmet üzerindeki reset/rotate akışını kullanın. Yeni bir şifre üretilir ve bağlı uygulamalar onu kendi binding'leri üzerinden alır; böylece her kod tabanında yapılandırmayı düzenlemenize gerek kalmaz. Sonrasında platform durumu üzerinden sağlığı doğrulayın.
Birkaç uygulama tek bir veritabanını ya da Redis instance'ını paylaşabilir mi?
Evet. Buna gerçekten ihtiyaç duyan her servise aynı ek hizmeti bağlayın, böylece instance'ı paylaşırlar ve tutarlı kalırlar. İzolasyon için, uygulama başına ayrı bir ek hizmet sağlayın — her iki desen de aynı bağla-ve-enjekte akışını kullanır.
WordPress manuel veritabanı yapılandırması gerektirir mi?
Hayır. Platform, WordPress kurulumu sırasında veritabanı bağlantısını doldurur; böylece wp-config'i elle düzenlemezsiniz, ve yoğun sayfalarda tekrarlanan veritabanı sorgularını azaltmak için bir Redis ek hizmeti object cache olarak bağlanabilir.