編集可能なサイトコンテンツを保存しますか?


9

一部のコンテンツ(テキスト、料金プランなどのビジネスロジック)を社内で簡単に編集できるようにしたいDjangoベースのWebサイトがあるため、コードベースの外部に保存することにしました。通常、理由は次のいずれかです。

  • これは、技術者でないが編集したいものです。1つの例は、Webサイトのコピーライティングです。プログラマーは、デフォルトで "Lorem ipsum ..."になるテキストを含むテンプレートを準備し、実際のコンテンツは後でデータベースに挿入されます。

  • これは、新しいコードをデプロイする必要なく(現在は週に2回)迅速に変更できるようにしたいものです。例としては、さまざまな価格階層の顧客が現在利用できる機能があります。これらをハードコーディングする代わりに、データベースから読み取ります。

説明されているソリューションは柔軟ですが、私がそれを気に入らない理由がいくつかあります。

  • コンテンツはデータベースから読み取る必要があるため、パフォーマンスのオーバーヘッドがあります

    キャッシングスキームを使用してこれを軽減しますが、これによりシステムが多少複雑になります。

  • コードをローカルで実行する開発者は、本番環境での実行方法と比較して、システムを大幅に異なる状態で認識します。自動テストでは、システムを別の状態で実行します。ステージングサーバーでの新機能のテストなどの状況も複雑になります。ステージングサーバーにデータベースの最新のコピーがない場合、それは本番環境とは予期せず異なる場合があります。

    新しい状態をリポジトリにコミットすることで(たとえば、データの移行を追加することで)軽減できますが、それは間違ったアプローチのようです。それは...ですか?

これらの問題を解決するための最良のアイデアはありますか?私が見落としているコンテンツを処理するためのより良いアプローチはありますか?


2
このような問題を解決する最善の方法は、「分析麻痺」を回避することです。これを行う方法を選択すると、オーバーヘッドが発生します。2番目または3番目の推測で追加しないでください。
Nocturno 2014年

ここで話している州の日付はどのくらいですか?数キロバイト、メガ?
Amit Wadhwa 2014年

回答:


5

編集可能なコンテンツは完全な機能と考える必要があります。

  • 明らかにいくつかの追加された複雑さが必要です。パフォーマンスへの悪影響を避けるために、編集後に静的リソースを保存することもできます。
  • コンテンツはデータなので、システム状態の一部です。開発者は、ユーザーがUIで許可するほとんどすべてのことを実行できると考えて対処する必要があります。
  • 自動化されたテストがデータベースの状態に依存している場合、テストは実行前にデータベースの状態(TestDataBuilders、フィクスチャ...)を設定するか、ユニットテスト(たぶんモックによる)にする必要があります。

ただし、コンテンツを編集可能にする代わりに、その技術者を開発フローの一部にすることができます。開発->デプロイ->データの変更の代わりに、データの変更->開発->デプロイを行うことができます。たぶん、Octopressのような静的なブログプラットフォームからいくつかのアイデアを借りることができます。


0

これはDevOpsにとって良いタスクです。:)次のことができます。

  1. 編集可能なリソースを個別のアーティファクト/ VCSリポジトリに配置します(ここではGit用語を使用します)。
  2. ビルドおよびデプロイメントプロセスを実装して、これらのリソースがそのリポジトリからサーバー上の別の場所にプルされるようにします(環境ごとにいくつかの規則を確立できるため、この場所をそれぞれに個別に構成する必要はありません)。
  3. ユーザーがWebサイトで何かを変更すると、変更はリソースファイルに保存されます。リモートリポジトリへのプッシュは、変更ごとに非同期で実行されます。
  4. 変更をデプロイするには、開発者は編集機能を無効にし、自分の変更をリモートリポジトリにマージします。次に、本番環境で、マージされたファイルをリモートリポジトリからプルします。その後、編集機能を再度有効にすることができます。

Chefや他のツールとのマージ以外のすべてを自動化することが可能であるため、このソリューションはユーザー、開発者、SQAの両方にとって快適です。


0

これらの問題を解決するための最良のアイデアはありますか?

まったく同じ状況でした。最終的に、次のDjangoアプリを使用しました。

完璧ではありませんが、必要なものはすべて揃っています。

  • 非技術者は編集できます
  • コードの展開は不要です。
  • バージョン管理が必要な場合は、復帰アプリがそれを提供します。

開発者が本番システムと同じページを体験できるようにするには、それが実際の要件である場合、フィクスチャを使用して本番環境から開発およびテストにエクスポートします。

私が見落としているコンテンツを処理するためのより良いアプローチはありますか?

概念的には、あなたは正しい方向に進んでいると思います。独自のソリューションを実装する必要があるか、または何らかのCMSを使用できるかどうかを自問してください。Flatpagesは、その非常に単純なバージョンの1つです。より洗練されたCMSが利用可能です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.