2

다음 프로젝트에서 Apache Commons Configuration을 사용할 계획입니다.Apache Commons 구성 변경 추적

주어진 응용 프로그램의 모든 구성을 읽고 데이터베이스에 읽고 쓰는 데 라이브러리를 사용하고 싶습니다.

모든 구성 변경 사항을 추적해야합니다 (또는 구성의 버전이 변경되었습니다). 이 변경 내용 추적은 또한 데이터베이스에 저장되어야합니다.

구성 변경이 자주 발생하지 않습니다.

이 변경 내용 추적 기능을 구현하는 가장 좋은 방법은 무엇일까? Apache Commons 자체에서 일부 지원이 있습니까? 다른 적합한 프레임 워크/라이브러리가 있습니까?

답변

2

불행히도 Apache Commons Configuration과 변경 내용 추적 구성 데이터베이스 요구 사항 사이에 겹치는 부분이 있다고 생각하지 않습니다.

configs를 데이터베이스에 저장해야하는 경우 다른 프레임 워크가 필요하거나 자체 솔루션을 구할 것으로 의심됩니다. 레. 데이터베이스, 2 개 생각 :

    유효 날짜/유효 날짜가있는 구성을 저장할 수 있습니다. 현재 구성은 유효 날짜가 null이고 구성을 업데이트 할 때 유효한 날짜를 설정합니다.
  1. 일부 데이터베이스는 버전이있는 데이터의 개념을 지원합니다. 예 : 오라클은 flashback 기능을 가지고 있으며 데이터베이스 엔티티를 다시 작성하기 만하면 오라클은 해당 테이블 의 버전을에 기록합니다 (자세한 내용은 훨씬 복잡 할 것입니다). 감사 목적으로 구성 변경 기록을 원할 경우 유용 할 수 있습니다.

또 다른 해결책은 SCM을 사용하여 구성을 관리하고 릴리스로 구성을 패키지화/배포하는 것입니다. 예 : dev/test/prod configs를 소스 코드 저장소에 만들고 그곳에서 변경 사항을 관리하십시오. 이 configs를 전개 가능하게 랩핑하고 적절한 환경으로 릴리스하십시오. SCM의 변경 내용 추적 기능이 있지만 배포 된 환경에서 발생하는 변경 내용을 쉽게 추적 할 수는 없습니다. 변경 관리 프로세스에서 허용하지 않을 수도 있습니다.

위의 수정 된 버전을 사용하면 배포 된 환경에서 SCM 솔루션을 사용할 수 있습니다. 구성을 귀화 된 환경으로 체크 아웃합니다. 나는 이것이 많이 사용되는 것을 보지 못했고, 나는 고백한다. 개발 및 프로덕션 환경 간의 브릿지/종속성을 의미하며 이는 너무 먼 다리 일 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 당신은 "또 다른 틀"에 대해 언급합니다 ... 요구 사항에 맞는 것을 알고 있습니까? 우리 사용자의 경우 구성이 프로덕션 환경에서 변경되기 때문에 클래식 SCM이 작동하지 않습니다. 그러나 Java 응용 프로그램에서 라이브러리로 사용할 수있는 일종의 "임베디드 SCM"은 도움이 될 수 있습니다 ... 그러나 어떤 SCM도 알지 못합니다. – jbandi

+1

SCM을 사용할 수 있다고 확신 할 수 있다면 배포 된 모든 머신에서 java.lang.Runtime.exec()를 사용하여 자바 애플리케이션에서 SCM 명령을 실행할 수 있습니다. 예, 프로세스 생성의 성능 오버 헤드가 있지만, 드물게 구성 변경이 발생한다고 말하기 때문에 성능 오버 헤드가 문제가 될 것이라고 생각하지 않습니다. –

+0

@Ciaran 감사합니다. SCM은 배포 된 컴퓨터에서 사용할 수 없으며 외부 종속성으로 사용할 수도 없습니다. 전체 SCM이 내 응용 프로그램의 일부인 "임베디드 SCM"에 대해 오히려 생각하고있었습니다. "라이브러리로서의 GIT"와 같은 것입니다 ...이 API는 애플리케이션에 API를 노출하고 일종의 로컬 (파일 기반) 저장소에 씁니다. – jbandi