Jay @pfaffman 님, 안녕하세요. 이 ‘두 컨테이너’ 주제에 대해 이 글과 다른 글들, 그리고 Sam 님의 글까지 감사드립니다.
질문드립니다:
말씀하신 대로 data용 컨테이너 하나와 web-only용 컨테이너 하나를 설정하는 것을 시도해 왔는데, macOS에서 이를 구동하는 과정에서 여러 가지 문제가 발생하고 있습니다.
하지만 Mac이나 Ubuntu에서 이 '두 컨테이너 구성’을 디버깅하는 것에 대해 걱정하기 전에, 우리가 이 일을 하는 것이 올바른 이유인지 먼저 확인하고 싶습니다.
'두 컨테이너 방식’을 시도하려는 이유는 웹 앱을 재구축할 때(예: 플러그인 설치 시) 사이트가 다운되지 않도록 하기 위해서입니다. 또한, 자체 개발한 플러그인을 수정할 때, 변경 사항이 작동하도록 하는 유일한 방법이 재구축인 경우가 있다는 것을 알게 되었습니다(이것은 다른 날 이야기할 내용입니다). 또한, 제 마음에 드는 ‘빠르고 친근한’ 웹 개발 환경을 구축하는 것도 고군분투하고 있지만, 그것도 또 다른 주제입니다.
따라서 제 질문은, ‘두 컨테이너’ 구성이 웹 앱의 웹 전용 부분이 재구축될 때 다운타임을 현저히 줄여주는지 여부입니다.
이것이 이 문제를 생각하는 올바른 방식이 맞죠, 그렇죠?
플러그인을 설치하거나 수정할 때, ‘web-only’ yml 파일만 재구축하면 되고 data yml 파일은 재구축하지 않아도 되는 것인가요?
우리는 LAMP 포럼 배경에서 왔기 때문에, 플러그인 변경은 대부분 라이브 사이트에서 런타임으로 이루어집니다(실수를 하지 않는 한 다운타임이 없습니다). 또한, VueJS 웹 앱에서 데스크톱에서 빌드한 후 새 앱을 업로드하고 제자리에 배치하면 거의 다운타임 없이 업그레이드/업데이트가 가능했습니다. 그러나 Discourse에서는 다운타임이 발생하는데, 우리는 이를 원하지 않습니다(몇 초라도).
‘두 컨테이너’ 솔루션이 (1) 앱을 재구축할 때(플러그인, 코드 수정 등) 또는 (2) 전체 백업에서 복원할 때 다운타임에 있어 상당한 개선 효과를 보이는가요?
우리는 Discourse를 프로덕션 환경에서 실행하고 거의 제로 다운타임으로 변경 사항을 적용하는 방법을 찾고 있지만, LAMP이나 VueJS 앱(예를 들어)에서처럼 쉽게 할 수 있는 방법을 아직 찾지 못했기 때문에 이 질문을 하면 또 '마구잡이로 비판’을 당할 것 같은 기분이 듭니다.
그래서 아직 구동하지 못한 ‘두 컨테이너’ 방식에 대한 고군분투와 관심이 있는 것입니다.
감사합니다!