Düzenlenebilir site içeriği depolanıyor mu?


9

İçeriğinin bir kısmını (fiyatlandırma planları gibi metin ve iş mantığı) şirket içinde kolayca düzenlenebilir hale getirmek istediğimiz Django tabanlı bir web sitemiz var ve bu yüzden onu kod tabanının dışında saklamaya karar verdik. Genellikle nedeni aşağıdakilerden biridir:

  • Teknik olmayan kişilerin düzenlemek istediği bir şey . Bir örnek bir web sitesi için metin yazarlığıdır - programcılar varsayılan olarak "Lorem ipsum ..." olarak ayarlanmış metin içeren bir şablon hazırlar ve gerçek içerik daha sonra veritabanına eklenir.

  • Bu, yeni kodu (şu anda haftada iki kez yapıyoruz) konuşlandırmaya gerek olmadan hızlı bir şekilde değiştirmek istediğimiz bir şey . Bunun bir örneği, şu anda farklı fiyatlandırma seviyelerinde müşteriler için mevcut olan özellikler olabilir. Bunları kodlamak yerine, veritabanından okuyoruz.

Tarif edilen çözüm esnektir, ancak beğenmememin bazı nedenleri vardır.

  • İçeriğin veritabanından okunması gerektiğinden, bir performans yükü vardır .

    Bir önbellek şeması kullanarak bunu hafifletiyoruz, ancak bu da sisteme biraz karmaşıklık katıyor.

  • Kodu yerel olarak çalıştıran geliştiriciler, sistemi üretimde nasıl çalıştığından çok daha farklı bir durumda görürler . Otomatik testler ayrıca sistemi farklı bir durumda kullanır. Bir hazırlama sunucusundaki yeni özellikleri test etme gibi durumlar da daha karmaşık hale gelir - hazırlama sunucusunun veritabanının yakın bir kopyası yoksa, beklenmedik bir şekilde üretimden farklı olabilir.

    Yeni durumu depoya ara sıra yürüterek hafifletebiliriz (örneğin veri taşıma işlemleri ekleyerek), ancak bu yanlış bir yaklaşım gibi görünüyor. Bu mu?

Bu sorunları en iyi nasıl çözeceğiniz hakkında bir fikriniz var mı? Göz ardı ettiğim içeriğin işlenmesi için daha iyi bir yaklaşım var mı?


2
Bu gibi problemleri çözmenin en iyi yolu 'analiz felçinden' kaçınmaktır. Bunu yapmayı seçtiğiniz herhangi bir şekilde ek yük olacak, ikinci veya üçüncü olarak kendinizi tahmin ederek daha fazlasını eklemeyin.
Nocturno

Burada ne kadar devlet tarihi hakkında konuşuyoruz? Birkaç kbs mi?
Amit Wadhwa

Yanıtlar:


5

Düzenlenebilir içeriği tam bir özellik olarak düşünmelisiniz .

  • Bazı ilave karmaşıklık açıkça gereklidir. Belki performansın zarar görmesini önlemek için düzenledikten sonra statik kaynağı saklayabilirsiniz.
  • İçerik veridir, bu nedenle sistem durumunun bir parçasıdır. Geliştiriciler, kullanıcıların kullanıcı arayüzünüzün izin verdiği hemen hemen her şeyi yapabileceğini düşünerek bununla başa çıkmak zorundadır.
  • Otomatik testler veritabanı durumuna bağlıysa, testler çalıştırmadan önce veritabanı durumunu da (TestDataBuilders, fikstürler ...) ayarlamalı veya birim testleri (belki de alay yoluyla) yapmalıdır.

Ancak, içeriği düzenlenebilir yapmak yerine, teknik kişileri geliştirme akışınızın bir parçası haline getirebilirsiniz. Verileri geliştirmek -> konuşlandırmak -> değiştirmek yerine, verileri değiştirmek -> geliştirmek -> konuşlandırmak. Belki Octopress gibi statik bloglama platformlarından bazı fikirler ödünç alabilirsiniz .


0

Bu, DevOps'unuz için iyi bir görevdir. :) Aşağıdakileri yapabilirsiniz:

  1. Düzenlenebilir kaynakları ayrı yapı / VCS deposuna koyun (Git terminolojisini burada kullanacağım).
  2. Bu kaynakların bu havuzdan sunucudaki ayrı bir konuma çekilmesi için derleme ve dağıtım işleminizi uygulayın (farklı ortamlar için bazı kurallar oluşturabilirsiniz, böylece bu konumu her biri için ayrı ayrı yapılandırmanız gerekmez).
  3. Kullanıcı web sitesindeki bir şeyi değiştirdiğinde, değişiklik basitçe kaynak dosyasına kaydedilir. Uzak depoya aktar her değişiklikte eşzamansız olarak yürütülür.
  4. Değişiklikleri dağıtmak için geliştirici düzenleme işlevini devre dışı bırakır ve değişikliklerini uzak depoda birleştirir. Daha sonra, üretimde, birleştirilmiş dosyaları uzak repodan çeker. Bundan sonra, düzenleme işlevselliği yeniden etkinleştirilebilir.

Chef veya başka bir araçla birleştirme dışındaki her şeyi otomatikleştirmek mümkündür, böylece bu çözüm hem kullanıcılar, geliştiriciler hem de SQA için rahat olabilir.


0

Bu sorunları en iyi nasıl çözeceğiniz hakkında bir fikriniz var mı?

Aynı durum vardı. Aşağıdaki Django uygulamalarını kullandık:

Mükemmel değil, ama ihtiyacınız olan her şeyi veriyor:

  • teknik olmayan kişiler düzenleyebilir,
  • kod dağıtımı gerekmez.
  • Sürüm kontrolüne ihtiyacınız varsa, ters çevirme uygulaması size tam olarak bunu verecektir.

Geliştiricilerin üretim sistemiyle aynı sayfaları deneyimlemeleri için, gerçek bir gereklilikse, üretimden geliştirmeye dışa aktarın ve demirbaşlar kullanarak test edin.

Göz ardı ettiğim içeriğin işlenmesi için daha iyi bir yaklaşım var mı?

Kavramsal olarak, doğru yolda olduğunuzu düşünüyorum. Kendi çözümünüzü uygulamaya ihtiyacınız olup olmadığını veya bir çeşit CMS ile yaşayabileceğinizi kendinize sorun. Flatpages bunun çok basit bir versiyonudur. Daha sofistike CMS'ler mevcuttur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.