편집 가능한 사이트 컨텐츠를 저장 하시겠습니까?


9

Django 기반 웹 사이트를 통해 내부에서 일부 컨텐츠 (텍스트 및 가격 책정 계획과 같은 비즈니스 로직)를 쉽게 편집 할 수 있도록하고 싶었고 이를 코드베이스 외부에 저장하기로 결정했습니다. 일반적으로 그 이유는 다음 중 하나입니다.

  • 그것은 뭔가의 비 기술적 인 사람들이 편집 할. 예를 들어 웹 사이트의 카피 라이팅이 있습니다. 프로그래머는 기본적으로 "Lorem ipsum ..."이라는 텍스트가있는 템플릿을 준비하고 실제 내용은 나중에 데이터베이스에 삽입됩니다.

  • 새로운 코드를 배포 할 필요없이 (현재 우리는 일주일에 두 번) 신속하게 변경할 수 있기를 원합니다 . 다양한 등급의 가격으로 고객이 현재 사용할 수있는 기능을 예로들 수 있습니다. 이를 하드 코딩하는 대신 데이터베이스에서 읽습니다.

설명 된 솔루션은 유연하지만 마음에 들지 않는 몇 가지 이유가 있습니다.

  • 데이터베이스에서 컨텐츠를 읽어야하므로 성능 오버 헤드가 있습니다.

    캐싱 구성표를 사용하여이를 완화하지만 시스템에 약간의 복잡성이 추가됩니다.

  • 코드를 로컬로 실행하는 개발자는 시스템이 프로덕션 환경에서 실행되는 방식과 비교하여 상당히 다른 상태로 시스템을 보게 됩니다. 자동 테스트는 또한 시스템을 다른 상태로 실행합니다. 스테이징 서버에서 새 기능을 테스트하는 것과 같은 상황도 까다로워집니다. 스테이징 서버에 최신 데이터베이스 사본이 없으면 프로덕션과 예상치 못하게 다를 수 있습니다.

    우리는 때때로 새로운 상태를 리포지토리에 커밋함으로써 (예를 들어 데이터 마이그레이션 추가)이를 완화 할 수 있지만 잘못된 접근법처럼 보입니다. 그렇습니까?

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 내가 간과하는 내용을 처리하는 더 좋은 방법이 있습니까?


2
이와 같은 문제를 해결하는 가장 좋은 방법은 '분석 마비'를 피하는 것입니다. 이 방법을 선택하면 오버 헤드가 발생하므로 두 번째 또는 세 번째 추측으로 더 이상 추가하지 마십시오.
녹턴

우리가 여기서 말하는 주 날짜는 얼마입니까? 몇 킬로그램, 메가?
Awad Wadhwa

답변:


5

편집 가능한 컨텐츠는 완전한 기능 으로 생각해야 합니다 .

  • 추가 된 복잡성이 분명히 필요합니다. 성능 저하를 피하기 위해 편집 후 정적 리소스를 저장할 수 있습니다.
  • 내용은 데이터이므로 시스템 상태의 일부입니다. 개발자는 사용자가 UI에서 허용하는 거의 모든 작업을 수행 할 수 있다고 생각해야합니다.
  • 자동화 된 테스트가 데이터베이스 상태에 의존하는 경우 테스트는 또한 실행하기 전에 데이터베이스 상태 (TestDataBuilders, 조명기 ...)를 설정하거나 단위 테스트 (모의를 통해 가능)로 설정해야합니다.

그러나 컨텐츠를 편집 가능하게 만드는 대신 기술 담당자를 개발 플로우의 일부로 만들 수 있습니다. 개발-> 배포-> 데이터 변경 대신 데이터 변경-> 개발-> 배포를 수행 할 수 있습니다. Octopress 와 같은 정적 블로그 플랫폼에서 아이디어를 빌릴 수 있습니다 .


0

이것은 DevOps에게 좋은 작업입니다. :) 다음을 수행 할 수 있습니다.

  1. 편집 가능한 리소스를 별도의 아티팩트 / VCS 저장소에 넣습니다 (여기서는 Git 용어를 사용하겠습니다).
  2. 이러한 리포지토리에서 해당 리소스를 서버의 별도 위치로 가져 오기 위해 빌드 및 배포 프로세스를 구현하십시오 (다른 환경에 대해 일부 규칙을 설정할 수 있으므로 각 위치마다이 위치를 별도로 구성 할 필요가 없습니다).
  3. 사용자가 웹 사이트에서 무언가를 변경하면 변경 사항이 리소스 파일에 저장됩니다. 원격 저장소로 푸시는 각 변경시 비동기 적으로 실행됩니다.
  4. 변경 사항을 배포하기 위해 개발자는 편집 기능을 비활성화하고 변경 사항을 원격 리포지토리에 병합합니다. 그런 다음 프로덕션 환경에서 병합 된 파일을 원격 저장소에서 가져옵니다. 그런 다음 편집 기능을 다시 활성화 할 수 있습니다.

Chef 또는 다른 도구와의 병합을 제외한 모든 것을 자동화 할 수 있으므로이 솔루션은 사용자, 개발자 및 SQA 모두에게 편안합니다.


0

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

우리도 같은 상황에 처해있었습니다. 우리는 다음과 같은 장고 앱을 사용했습니다.

완벽하지는 않지만 필요한 모든 것을 제공합니다.

  • 비 기술적 인 사람들은 편집 할 수 있고
  • 코드 배포가 필요하지 않습니다.
  • 버전 관리가 필요한 경우 복귀 앱이 바로 그 기능을 제공합니다.

개발자가 프로덕션 시스템에서와 동일한 페이지를 경험하게하려면 실제 요구 사항 인 경우 조명기를 사용하여 프로덕션에서 개발로 내보내고 테스트하십시오.

내가 간과하는 내용을 처리하는 더 좋은 방법이 있습니까?

개념적으로, 나는 당신이 올바른 길을 가고 있다고 생각합니다. 자체 솔루션을 구현해야하는지 또는 CMS와 함께 살 수 있는지 자문 해보십시오. 플랫 페이지는 매우 간단한 버전 중 하나입니다. 보다 정교한 CMS 를 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.