새 버전 배포가 끝나, 서비스가 참조하는 /srv/versioned/latest 심볼릭 링크를 지금의 releases/v1 에서 releases/v2 로 바꿔야 합니다.
1. /srv/versioned/latest 는 /srv/versioned/releases/v2 디렉터리를 가리키는 심볼릭 링크여야 합니다.
2. latest 링크에 저장된 대상 경로는 / 로 시작하지 않는 상대 경로여야 합니다.
새 버전 배포가 끝나, 서비스가 참조하는 /srv/versioned/latest 심볼릭 링크를 지금의 releases/v1 에서 releases/v2 로 바꿔야 합니다.
1. /srv/versioned/latest 는 /srv/versioned/releases/v2 디렉터리를 가리키는 심볼릭 링크여야 합니다.
2. latest 링크에 저장된 대상 경로는 / 로 시작하지 않는 상대 경로여야 합니다.
웹 서비스를 새 버전으로 배포할 때 관리자는 버전별 디렉터리를 나란히 두고, 서비스 설정은 늘 latest 같은 고정된 이름만 바라보게 해 둡니다. 배포가 끝나면 이 링크가 가리키는 곳만 바꾸면 되고, 새 버전에 문제가 생겨도 링크를 이전 버전으로 돌려 빠르게 복구할 수 있습니다.
심볼릭 링크는 다른 파일이나 디렉터리의 경로를 문자열로 담고 있는 특수 파일입니다. ln으로 만들고 readlink로 그 안에 저장된 대상 경로를 확인할 수 있습니다. 대상을 상대 경로로 저장하면 상위 디렉터리를 통째로 옮기거나 다른 서버로 복사해도 링크가 깨지지 않습니다. 이때 상대 경로의 기준은 현재 작업 위치가 아니라 링크 파일이 놓인 디렉터리입니다.
흔한 실수는 디렉터리를 가리키는 기존 링크를 덮어쓰려다가, 링크 자체는 그대로 두고 그 링크가 가리키는 디렉터리 안에 새 링크를 하나 더 만들어 버리는 것입니다. 링크를 교체하는 일과 링크 너머의 디렉터리에 무언가를 만드는 일은 다르므로, 작업 뒤에는 저장된 경로를 직접 확인해야 합니다. 이런 버전 전환 작업은 서버 운영이나 배포를 맡는 실무 역할에서 기본기로 요구되며, linux_learning 실무 연습 트랙이 다루는 대표적인 유형입니다.