
모범 사례 질문이 있습니다. 로드 밸런서 뒤의 두 서버에서 실행되는 앱이 있습니다. 대부분의 데이터는 공통 DB에 있고, 사용자가 업로드한 파일은 개체 저장소에 있습니다. 따라서 사용자가 앱 백엔드를 통해 생성한 일부 YAML 구성 파일을 제외하고는 동기화를 유지할 것이 많지 않습니다.
이러한 파일을 동기화 상태로 유지하는 가장 좋은 방법은 무엇입니까? 제가 생각한 한 가지 해결책은 공유 볼륨을 마운트하여 코드와 구성 파일을 호스팅하는 것입니다. 더 나은 해결책이 있습니까?
답변1
단 하나의 "모범 사례"를 가정하는 것은 함정입니다. 항상 하나 이상의 솔루션이 있습니다.
구성 파일의 내용을 데이터베이스에 저장하는 것도 하나의 옵션입니다. 일부 응용 프로그램에 의해 관리되는 Blob. 다른 응용 프로그램이 읽고 있는 경우 디스크에 기록될 수 있습니다. 또는 YAML 문서 대신 DB의 개별 데이터 필드를 사용하도록 애플리케이션을 변경하세요. 기존 중앙 데이터베이스를 활용하지만 해당 DB를 먼저 사용할 수 있어야 합니다.
애플리케이션이 포함된 소프트웨어 패키지 또는 이미지에 구성 파일을 저장합니다. 앱을 업그레이드하여 새로운 앱을 배포하세요. 동일한 사람이나 애플리케이션 업데이트 프로세스에 의해 해당 파일이 변경된 경우에만 의미가 있습니다.
일정에 따라 또는 변경 시 신뢰할 수 있는 복사본의 파일을 각 인스턴스에 복사합니다. 파일 복사 소프트웨어인 rsync, sftp를 선택하세요. 모든 파일이 설치되거나 아무 것도 설치되지 않는 등 트랜잭션 방식으로 설치해야 하는 경우 추가 스크립팅이 필요합니다.
네트워크 파일 공유를 마운트합니다. NFS 또는 SMB 공유가 계획되지 않은 방식으로 연결이 끊어지면 성능 문제가 발생할 수 있다는 점에 유의하세요.