경로 맵핑(Path Mapping) 설정이란?
경로 맵핑이란, 웹 서버에서 특정 URL이 어떤 파일이나 폴더로 연결되는지를 정의하는 설정이다. 이를 통해 사용자가 쉽게 이해할 수 있는 URL을 사용하면서도 서버에 필요한 컨텐츠를 정확하게 제공할 수 있다.
우리가 웹사이트를 방문할 때 ULR(Uniform Resource Locator)를 사용한다. 예를 들어, www.example.com/about
이라는 URL에 접속한다고 가정하자. 이 URL은 웹 서버 상의 실제 파일 혹은 폴더에 연결되어 있어야 한다.
서버는 특정 URL이 요청될 때 어디에서 해당 콘텐츠를 가져와야 하는지 알 수 있다.
예) www.example.com/about
URL요청이 들어온 경우, 경로 매핑 설정에 따라 서버는 D:\website\about.html
파일 또는 D:\website\about
폴더의 콘텐츠를 제공할 수 있다.
Azure Portal – Path mappings
Windows App (비컨테이너화된 앱)
이 경우에는 IIS 핸들러 맵핑(Handler mapping)1과 가상 앱(Virtual Application)2 및 디렉토리를 의도에 맞게 설정할 수 있다.
핸들러 맵핑 설정
핸들러 맵핑을 통해 특정 파일 확장자에 대한 요청을 처리하기 위한 사용자 지정 스크립트 프로세서를 추가할 수 있다. 각 앱은 기본값으로 루트 경로가 D:\hoem\site\wwwroot
로 맵핑되어 있고, 일반적으로 메인 코드가 배포된다.
- 확장자: 요청을 받고 처리하기 위한 파일 확장자 ex) *.php, handler.fcgi 등
- 스크립트 프로세서: 스크립트 프로세서의 절대 경로
D:\home\site\wwwroot
와 파일 확장자가 일치하는 요청은 해당 스크립트 프로세서에 의해서 처리된다.
Tip. 앱의 루트 경로 를 사용하는 것을 추천 - 인수: 대상 스크립트 프로세서에 대한 선택적인 커맨드
가상 앱과 디렉토리 설정
가상 앱과 디렉토리는 D:\home
에 상대적으로 지정함으로써 구성할 수 있다.
Tip. 가상 디렉토리를 웹 앱에 표시하려면 ‘디렉토리’ 체크 박스를 해제
Linux 및 컨테이너화된(Containerized) 앱
모든 Linux 앱과 App Service에서 실행되는 Windows 및 Linux 사용자 지정 컨테이너에 필요한 스토리지를 추가할 수 있다. 스토리지 설정은 앱의 데이터 관리와 확장성에 중요한 포인트이다.
Tip. 다음과 같은 시나리오에서 컨테이너화된 앱에 스토리지를 추가할 필요가 있다.
- 대용량 데이터 처리: 로컬 저장소만으로 용량이 부족한 경우, 클라우드 기반의 확장 가능한 저장 공간을 활용하여 데이터를 효율적으로 처리할 수 있다.
- 유연한 데이터 접근: 클라우드 스토리지는 어디서나 데이터에 접근할 수 있는 유연성을 제공한다.
- 지속성 있는 데이터 저장: 일반적으로 컨테이너는 일시적이며, 컨테이너가 종료되면 그 안의 데이터도 사라진다.
- 인스턴스 간 데이터 공유: 여러 컨테이너 또는 서비스가 동일한 데이터에 액세스해야 하는 경우, 중앙 집중식 Azure Storage를 사용하면 모두 같은 데이터 세트를 공유할 수 있다.
- 고가용성 및 재해 복구: 데이터 복제 및 백업 옵션을 제공하여 비즈니스 연속성을 지원한다.
- 보안 및 규정 준수 요구사항: 데이터를 안전하게 저장하고 관리하는 데 필요한 여러 보안 기능과 옵션을 제공한다.
Azure Storage 탑재
컨테이너화 된 앱에 추가 스토리지를 제공하기 위해서는 Azure Storage
탑재를 선택한다.
스토리지 설정
- Name: 표시할 스토리지의 이름을 설정
- SKU:
기본(Basic)또는 고급(Advanced)을 선택 - Storage Accounts: 스토리지 계정을 선택 Tip. 데이터를 저장하는 컨테이너가 포함됨
- Storage Type:
Azure Blob
또는Azure Files
중에서 선택 - Storage Container: 기본 구성에서 사용할 컨테이너를 선택
- Share Name: 고급 구성에서 사용할 파일 공유의 이름을 설정
- Access Key: 고급 구성에서 필요한 액세스 키를 설정
- Mount Path: 컨테이너 내에서 사용자 지정 스토리지를 탑재할 절대 경로를 설정
Learning Note
- 핸들러 맵핑(Handler mapping)이란?
웹 서버에서 특정 유형의 웹 요청을 어떻게 처리할지 결정하는 설정이다. 핸들러 맵핑이 필요한 이유는, 웹 서버가 다양한 유형의 파일과 처리 요청을 처리해야 하기 때문이다.
예) 웹 서버에 .php, .asp, .jsp 같은 다른 종류의 파일이 요청되는 경우
위의 파일들은 단순한 텍스트 파일이 아니라 서버에서 실행되어야 하는Script
를 포함하고 있다. 그렇기 때문에 특정 확장자(.php 등)에 대해 어떤 프로세스(Handler)*를 사용하여 처리할 지 서버에 지정할 필요가 있다.
Tip. PHP 파일에 대한 요청이 들어오면 핸들러 맵핑은 PHP 인터프리터(Process)를 사용하도록 지시한다.
↩︎ - 가상 앱(Virtual Application)이란?
웹 서버에서 특정 폴더를 독립되 앱으로 취급하고, 별도의 설정을 하는 것을 의미한다. 가상 앱을 사용하는 경우는, 하나의 웹 서버에서 여러 개의 독립적인 웹 앱을 운영*할 때 이용된다.
일반적으로, 웹 서버의 루트 디렉토리는 메인 웹 사이트를 위한 공간으로 사용된다. 그러나 경우에 따라서 추가적으로 특정 웹 앱을 구성할 필요가 있다. 가상 앱은 루트 디렉토리와는 별개로 독립적인 설정을 가질 수 있다.
예) 보안 설정, 데이터베이스 연결, 독립적인 프로그래밍 언어 및 프레임 워크
Tip.하나의 웹 서버를 이용하는 장점
1. 자원 활용 최적화: 서버의 리소스를 효율적으로 사용 가능
2. 비용 절감: 앱을 분산 배치하는 것보다 저렴한 비용
3. 관리의 용이성: 보안 업데이트, 백업, 모니터링 등을 일괄적으로 처리할 수 있음
4. 도메인 관리의 간소화: 여러 앱을 메인 혹은 서브 도메인 아래에 두면 관리가 편함(사용자 입장에서도 관련 서비스를 동일한 도메인 아래에서 이용할 수 있음)
5. 확장성과 유연성: 필요에 따라서 웹 앱을 추가할 수 있음
6. 앱 간의 격리: 가상화 및 컨테이너 기술을 사용하면 각 앱을 독립적으로 운용 가능
↩︎