2012-11-09 3 views
3

apache-passenger 서버 클러스터에서 실행되는 약 130 개의 sinatra 웹 응용 프로그램이 있습니다. 이러한 모든 앱은 일반 코드베이스에서 복제 된 다음 자체 인증 키를 갖도록 수정되었습니다. 대부분의 앱은 인증 키와 별도로 수정하지 않습니다. 개별 앱의 장점은 다른 앱의 다운 타임 위험없이 특정 앱을 매우 빠르게 변경할 수 있다는 것입니다.많은 유사한 sinatra 응용 프로그램에 대한 구성을 저장하는 위치

그러나 이러한 인증 키는 기본적으로 구성되어 있습니다. 코드베이스에 설정을 저장하는 것은 불편하고 직관적으로 잘못되었습니다. 필자가 조사한 다른 대안으로는 데이터베이스에 구성을 저장하고 메모리, 애플리케이션 별 Apache 환경 변수 및 공유 json 파일에 캐싱하는 방법이 있습니다.

더 좋은 옵션이 있습니까? 내가 놓친 잡기가 있니?

답변

0
그것은 아마도 환경 변수는 다음과 같이 당신의 애플 리케이션에 액세스 할 수있는 사용자의 목적에 가장 적합한 것 같은 소리

:

$ APPNAME_AUTH_KEY="saf3t33553" ruby -e "puts ENV['APPNAME_AUTH_KEY']" 
saf3t33553 

공유 위치에있는 JSON 파일, 또는 일반 루비 파일 트릭을 할 수도 있습니다. 구성을 데이터베이스에 저장하면 과도한 소리가납니다. 당신이 깊이 파고하려는 경우

, 나는 꽤 대해 작성한 주제입니다 :

구성 할 응용 프로그램 (part 1, part 2)을 작성 (에서 "사용 쉘 환경 구성"절을 참조하십시오 파트 2 특히)

+1

데이터베이스에 구성을 저장하는 것이 과도하다고 생각하지만 장점은 응용 프로그램을 다시 시작하지 않고 구성을 변경할 수 있다는 것입니다. – Erik

+0

좋은 지적이지만 구성 파일을 사용할 때도 마찬가지입니다. OP 클러스터의 sinatra 앱이 모두 데이터베이스를 공유하고 있다면 파일 대 데이터베이스와 비교했을 때 데이터베이스의 값을 편집 할 때 파일을 편집하는 것보다 더 많은 작업이 필요하다는 점을 제외하면 파일 대 데이터베이스가 비슷한 장점과 단점이 있습니다. –

+0

오른쪽은 아파치 설정에 키를 저장하는 것을 의미하며, 아파치/패서 런트에서 실행되는 sinatra 앱을위한 환경 변수를 설정합니다. –

관련 문제