실패한 릴리스에서 복구하기

LinuxBeginner
지금 연습하기

소개

Common Ground의 또 다른 후보 릴리스를 평가합니다. 게시 명령이 성공하더라도 방문자가 중요한 작업을 완료하지 못할 수 있습니다. 그 차이를 알아보고 필요하면 정상 동작이 확인된 릴리스를 복구하는 것이 목표입니다.

이 일회용 교육 사이트에는 실제 방문자가 없습니다. 의도적으로 복구를 연습합니다. 실제 제공 과정에서는 게시 전 검사로 후보를 거부하여 방문자에게 전달되지 않게 할 수 있습니다.

새로운 환경이므로 이전 실습과 관계없이 Room A의 event-v1이 실행됩니다. event-v3를 준비하고 실제 이용 경로를 검사한 뒤, 제공된 웹사이트 파일을 편집하지 않고 원래 서비스를 복구합니다. Workstation, Website, Topology 탭이 준비되어 있습니다.

복구 대상 준비하기

웹사이트를 바꾸기 전에 정상 버전을 확인하고 후보를 별도로 설치합니다. Website에서 시작하세요.

복구해야 할 상태 파악하기

홈페이지의 Linux Evening 장소는 Room A이고 바닥글에는 event-v1이 표시됩니다. 세션 행을 클릭해 상세 정보가 열리는지 확인한 뒤 Registration instructions도 여세요. 복구는 이런 정상 기능을 되돌려야 합니다. Website의 COMMON GROUND로 홈페이지에 돌아가세요.

Workstation으로 전환하세요. 터미널은 이미 /home/labex/project/website-release에 있습니다. 현재 심볼릭 링크를 확인하세요.

readlink current

releases/event-v1이 출력됩니다. 보존된 버전 파일을 확인하세요.

cat releases/event-v1/version.txt

event-v1이 출력됩니다. 여기서는 이 디렉터리가 명확한 복구 대상입니다. 모든 시스템에서 '이전 버전'이 자동으로 올바른 선택인 것은 아닙니다. 이 실습에서는 해당 버전이 필요한 페이지를 올바르게 제공함을 확인했습니다.

후보 준비하기

제공된 패키지를 나열하세요.

bash release.sh list

이 환경에는 event-v1과 event-v3가 있습니다. 후보는 장소를 Community Hall로 변경합니다. 새 이름이나 설치 성공만으로 품질이 입증되지는 않습니다.

선택하지 않고 설치하세요.

bash release.sh install event-v3

현재 웹사이트가 변경되지 않았다는 메시지가 나옵니다. 설치된 릴리스를 나열하세요.

ls releases

event-v1과 event-v3가 모두 있어야 합니다. 둘 다 변경하지 마세요. 후보는 평가 대상이고, 기준 버전은 복구할 수 있는 버전입니다.

실패한 릴리스 알아보기

후보를 게시하고, 선택 성공과 사용자 기능의 정상 동작을 구분합니다. Workstation에서 시작하세요.

선택 성공 관찰하기

후보를 선택하세요.

bash release.sh deploy event-v3

도우미는 event-v3를 보고하며 페이지를 확인하라고 안내합니다. 명령이 마친 것은 선택 작업이지 업무 기능 평가가 아닙니다.

첫 실습의 curl 옵션으로 홈페이지 상태를 확인하세요.

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/

200을 반환합니다. 버전 접속 지점도 동작합니다.

curl -sS http://127.0.0.1:8081/version.txt

event-v3가 출력됩니다. 어느 쪽도 세션 링크가 동작한다는 증거는 아닙니다.

사용자에게 보이는 실패 찾기

Website로 전환하고 COMMON GROUND로 홈페이지에 돌아와 새로고침하세요. 홈페이지는 완전해 보이며 Community Hall을 표시합니다. Linux Evening을 클릭하세요.

상세 정보 대신 **Let's get you back on track.**와 404 / A SMALL DETOUR가 나타납니다. 이것은 사이트의 페이지 미발견 화면입니다. 세련된 디자인이어도 요청한 세션의 HTTP 결과는 여전히 실패입니다.

후보에서 실제로 찾을 수 없는 세션

후보의 세션 링크는 /events/container-evening.html을 가리킵니다. Workstation으로 돌아가 정확히 그 경로를 요청하세요.

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/events/container-evening.html

예상 결과는 404입니다. 의도된 증거이며 고치거나 건너뛸 명령이 아닙니다. HTTP 오류 시 실패하도록 하는 curl 옵션을 쓰지 않았으므로, 404를 받아도 curl은 정상 종료할 수 있습니다. 서버 응답을 받는 것과 연결 자체가 실패하는 것은 다릅니다.

Topology로 전환하세요. 제한된 검사에 성공하므로 Homepage reachable이 계속 표시될 수 있습니다. 하지만 필요한 세션 경로는 실패합니다. 릴리스를 거부하고 정상 동작이 확인된 버전을 복구해야 합니다. 웹사이트를 중지하거나 후보를 다시 작성하지 마세요.

정상 동작이 확인된 버전 복구 및 검증하기

원래 웹사이트를 복구하고 방문자가 다시 사용할 수 있는지 확인합니다. Workstation에서 시작하세요.

보존된 릴리스 선택하기

rollback은 이미 설치된 버전을 선택합니다. 실패한 후보를 고치거나 다시 빌드하지 않습니다. 확인된 복구 대상을 복원하세요.

bash release.sh rollback event-v1

예상 출력:

Selected event-v1. The server reports:
event-v1
Selection finished. Check the required pages before accepting this release.

심볼릭 링크를 확인하세요.

readlink current

releases/event-v1이 선택됩니다. event-v3 디렉터리는 여전히 저장되어 있습니다. 나중에 조사하려고 남겨 두었다고 방문자에게 계속 제공되는 것은 아닙니다.

복구된 이용 흐름 확인하기

Website로 전환하세요. 브라우저는 후보의 존재하지 않는 URL에 남아 있을 수 있습니다. COMMON GROUND로 홈페이지에 돌아와 새로고침하세요. Room A와 event-v1이 보여야 합니다. Linux Evening을 다시 열면 복구된 링크가 /events/linux-evening.html을 엽니다. Registration instructions를 열어 참여 절차가 있는지 확인하세요.

복구된 세션 상세 정보

후보에서만 사용하던 URL을 다시 요청하면 여전히 404입니다. 복구는 정상 사이트의 실제 링크를 되돌리는 것이지, 없는 URL을 모두 만드는 작업이 아닙니다.

Workstation으로 돌아가 복구된 경로를 검사하세요.

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/events/linux-evening.html
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/registration.html

세 경로 모두 200을 반환합니다. 브라우저 검사로 내용도 올바르다는 것을 확인했습니다.

설치된 두 버전을 보존하세요.

ls releases

event-v1과 event-v3가 계속 있어야 합니다. 서비스는 복구되었지만 후보의 결함은 나중의 개발 작업으로 남습니다. 이 연습은 정적 웹사이트 파일만 복구합니다. 데이터베이스 변경, 사용자 제출 내용, 브라우저 세션 전체를 원자적으로 되돌리지는 않습니다.

요약

실제 게시 명령이 성공해도 이용 경로가 실패할 수 있음을 관찰하고, 후보를 거부한 뒤 정상 동작이 확인된 완전한 사이트를 복구했습니다. 실제 페이지 내용과 HTTP 응답 모두로 복구를 검증했습니다. 후보는 조사용으로 남아 있으며, 복구가 후보를 몰래 고친 것은 아닙니다.