소개
Common Ground는 커뮤니티 웹사이트 데모입니다. 방문자는 Linux Evening을 찾아 상세 내용을 열고 등록 방법을 읽습니다. 다음 릴리스에서는 장소를 Room A에서 Community Hall로 변경합니다. 현재 버전을 잃지 않고 준비된 업데이트를 게시하는 것이 여러분의 역할입니다.
설치된 릴리스와 실행 중인 릴리스를 구분하고, 업데이트를 선택한 뒤 실제 웹사이트를 테스트합니다. 애플리케이션과 게시 도우미가 제공되므로 코드를 작성하거나 Nginx를 설정할 필요는 없습니다. 기본적인 터미널 사용법만 알면 됩니다. 모든 행사와 주소는 가상입니다.
| 탭 | 용도 |
|---|---|
| Website | 실제 커뮤니티 웹사이트를 둘러봅니다. |
| Workstation | 준비된 작업 공간과 릴리스 도우미를 사용합니다. |
| Topology | 터미널, 파일, 웹사이트의 관계를 이해합니다. |
각 실습은 독립적으로 준비된 환경에서 시작합니다. 탭은 바로 사용할 수 있습니다.
웹사이트를 살펴보고 업데이트 준비하기
이 단계에서는 웹사이트의 정상 동작을 확인하고, 방문자가 보는 내용을 바꾸지 않은 채 새 릴리스를 설치합니다. Website 탭에서 시작하세요.
정상적인 이용 흐름 확인하기
홈페이지는 Common Ground를 소개하며 On the horizon 아래에 Linux Evening을 표시합니다. 현재 장소는 Location: Room A입니다. 맨 아래로 스크롤하면 작은 바닥글에 Release: event-v1이 보입니다. 릴리스란 웹사이트 파일을 특정 상태로 저장한 버전입니다.

Website에서 Linux Evening 행을 클릭하세요. 상세 페이지에는 화요일 18:00와 Room A가 표시됩니다. 그 안의 Registration instructions를 열면 데모용 이메일 등록 절차가 나옵니다. 실제로 등록할 필요는 없습니다. 위쪽 COMMON GROUND 로고를 클릭하면 같은 탭에서 홈페이지로 돌아옵니다.
유지해야 할 사용자 이용 경로는 바로 이런 흐름입니다. 홈페이지 하나가 서비스 전체를 뜻하지는 않습니다.
별도 사본 준비하기
Workstation으로 전환하세요. 터미널은 제공된 게시 작업 공간인 /home/labex/project/website-release에 이미 열려 있습니다. ls는 현재 디렉터리의 이름들을 나열합니다.
ls
packages, releases, current, release.sh가 보입니다. packages는 설치를 기다리는 제공 버전, releases는 설치된 버전의 저장 위치입니다. current는 방문자에게 제공할 버전을 선택합니다. 다음 단계에서 살펴봅니다.
release.sh는 제공된 작은 도우미 스크립트입니다. bash가 스크립트를 실행하고, 파일 이름 뒤의 단어들이 작업과 필요한 경우 릴리스를 지정합니다. 도우미를 사용하는 것이며 Bash 코드를 작성할 필요는 없습니다.
bash release.sh help
짧은 도움말을 읽어 보세요. install은 패키지를 자체 디렉터리에 복사하고, deploy는 웹사이트에 사용할 버전을 선택하며, rollback은 이미 설치된 버전을 선택합니다. 어느 작업도 업무에 필요한 페이지가 정상인지 판단하지 않습니다.
제공된 버전을 나열하세요.
bash release.sh list
이름은 event-v1과 event-v2입니다. 업데이트를 설치하세요.
bash release.sh install event-v2
예상 출력:
Installed event-v2. The current website was not changed.
설치된 두 디렉터리가 존재하는지 확인하세요. releases를 붙이면 ls가 나열할 디렉터리를 지정합니다.
ls releases
event-v1과 event-v2가 있어야 합니다. 별도 사본을 설치하면 이전 버전이 보존됩니다. 아직 업데이트를 게시한 것은 아닙니다.
Website로 돌아가 새로고침하세요. 장소는 여전히 Room A이고 바닥글도 event-v1입니다. 의도된 결과이며 다음 단계에서 업데이트를 선택합니다.
업데이트 선택 및 게시하기
이 단계에서는 복구용 버전을 보존하면서 웹사이트에 선택된 릴리스를 변경합니다. Workstation에서 시작하세요.
선택 방식 이해하기
심볼릭 링크는 파일시스템의 다른 위치를 가리키는 참조입니다. 여기서 current는 설치된 릴리스 디렉터리 하나를 가리킵니다. 제공된 웹 서버 Nginx는 이 링크를 통해 웹사이트 파일을 읽습니다.
readlink는 심볼릭 링크의 대상을 출력합니다.
readlink current
예상 출력:
releases/event-v1
이 상대 경로는 작업 공간의 releases 안에 있는 event-v1 디렉터리를 뜻합니다. 각 디렉터리에는 HTML 페이지, 로컬 CSS 스타일, 로컬 일러스트, 작은 버전 파일이 들어 있습니다. 이 전체가 완전한 웹사이트 릴리스입니다.
cat은 파일 내용을 출력합니다. 게시 전에 복구용 버전이 무엇인지 확인하세요.
cat releases/event-v1/version.txt
event-v1이 출력됩니다. 이 디렉터리 전체를 보존하세요. 업데이트가 검사를 통과하지 못하면 다시 선택하는 것이 복구 계획입니다. 재생성하거나 삭제하면 그 계획이 무너집니다.
설치된 버전 게시하기
업데이트를 선택하세요.
bash release.sh deploy event-v2
예상 출력:
Selected event-v2. The server reports:
event-v2
Selection finished. Check the required pages before accepting this release.
도우미는 설치된 디렉터리를 재사용하고, 임시 링크와 이름 변경으로 current를 전환한 뒤 실제 버전 요청을 보냅니다. 따라서 이전 웹사이트 파일을 덮어쓰지 않습니다. 하지만 모든 페이지가 동작한다는 증거나 브라우저 세션 전체가 동시에 버전을 바꾼다는 보장은 아닙니다.
선택 상태를 확인하세요.
readlink current
이제 releases/event-v2가 출력됩니다.
Website로 전환하세요. 다른 페이지가 열려 있다면 COMMON GROUND로 홈페이지에 돌아와 새로고침하세요. On the horizon 아래의 장소가 Location: Community Hall로 바뀌고 바닥글에는 event-v2가 표시됩니다.

새 장소와 바닥글은 웹사이트가 바뀌었다는 증거입니다. 릴리스를 승인하기 전에는 중요한 이용 경로도 확인해야 합니다.
웹사이트를 검증하고 복구 가능 상태 유지하기
새 릴리스를 방문자와 HTTP 클라이언트의 관점에서 확인하고, 이전 버전도 사용할 수 있는지 점검합니다. Website에서 시작하세요.
사용자 이용 경로 따라가기
Linux Evening 행을 클릭하세요. 상세 사이드바에는 Room A 대신 Community Hall이 표시되어야 합니다. Registration instructions를 여세요. 페이지에는 참여 절차와 events@example.test가 있어야 하며, 페이지를 찾을 수 없다는 화면이 나오면 안 됩니다.

Website 안에서 COMMON GROUND를 클릭해 홈페이지로 돌아가세요.
실제 HTTP 응답 확인하기
Workstation으로 전환하세요. HTTP는 이 웹사이트가 사용하는 요청과 응답 규약입니다. 요청은 /registration.html 같은 경로를 지정하고, 서버는 상태와 내용을 반환합니다. 200은 요청한 응답의 성공을, 404는 요청한 페이지를 찾지 못했음을 뜻합니다.
curl은 요청을 보냅니다. -sS는 진행 표시를 숨기지만 연결 오류는 보여 줍니다. -o /dev/null은 응답 본문을 버립니다. /dev/null은 시스템의 데이터 폐기 대상입니다. -w는 뒤에 오는 형식대로 출력합니다. 작은따옴표가 형식을 하나로 묶고, %{http_code}가 상태를 선택하며, \n이 출력 줄을 끝냅니다.
127.0.0.1은 이 실습 환경을 가리키며, 포트 8081은 준비된 웹사이트 접속 지점입니다. 자신의 컴퓨터 터미널이 아니라 Workstation에서 이 주소를 사용하세요. 마지막 /는 홈페이지를 요청합니다.
홈페이지를 확인하세요.
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/
결과는 200입니다.
상세 페이지와 등록 경로를 각각 확인하세요.
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을 반환해야 합니다. Website에서 내용을 확인하는 것도 중요합니다. 잘못된 페이지를 담은 200 응답은 성공이 아닙니다.
본문을 버리지 않고 작은 버전 응답을 요청할 수도 있습니다.
curl -sS http://127.0.0.1:8081/version.txt
event-v2가 출력됩니다. 유용한 증거이지만 버전 표시는 페이지 및 링크 검사를 대신할 수 없습니다.
복구 수단 보존하기
원래 릴리스는 온전하게 남아 있어야 합니다.
cat releases/event-v1/version.txt
여전히 event-v1이 출력됩니다. 페이지, 스타일, 일러스트도 보존하세요. 버전 표시만 바꾸는 것으로 웹사이트를 보존할 수는 없습니다.
Topology로 전환하세요. Homepage reachable은 홈페이지가 응답한다는 뜻일 뿐입니다. 전체 릴리스의 합격 판정이 아닙니다. 이제 이용 경로를 개별적으로 검증했고 완전한 복구용 버전도 남겨 두었습니다.
요약
별도의 릴리스를 설치하고, 이전 파일을 덮어쓰지 않고 선택한 뒤 실제 페이지와 링크를 검증했습니다. 정상 동작이 확인된 완전한 버전도 복구용으로 보존했습니다. 다음 실습에서는 홈페이지는 동작하지만 중요한 이용 경로가 실패하는 상황에서 이 복구 수단을 사용합니다.



