본문 바로가기
IT 개발 이야기/WEB | WAS

[WebtoB] 정적 콘텐츠 분리 및 index 페이지 설정하기

by 개발자 Aiden 2023. 2. 3.
반응형

오늘은 인프라 작업으로 인한 서비스 중단 상황에서 사용자에게 작업 공지를 전달하는 방법 중 하나인, 정적 콘텐츠 분리와 index 페이지 설정에 대해 알아보겠습니다.

정적 콘텐츠 분리 및 index 페이지 설정 배경

기업 IT 환경에서는 종종 시스템 정기 점검, PM 작업, 네트워크 장비의 교체(백본 스위치 등) 등으로 인해 서비스가 일시적으로 중단되는 경우가 있습니다. 이런 상황에서 사용자에게 서비스 중단 사실을 효과적으로 공지하는 방안을 모색해야 하는데, 이때 정적 콘텐츠의 분리와 index 페이지 설정이 큰 도움이 됩니다.

특히, 저희 회사의 경우, 사용자 요청에 의한 모든 응답 처리(index page 포함)를 WAS에서 처리하는 구조를 가지고 있습니다. 하지만, 백본 스위치 교체 등으로 인해 WAS와 연결이 끊기는 상황이 발생하면, 이러한 구조는 장애 상황을 악화시킬 수 있습니다. 이를 방지하기 위해, WEB Server 환경 설정을 통해 모든 요청에 대한 응답을 작업 공지 페이지로 전달되도록 설정하는 방법을 활용하고 있습니다.

정적콘텐츠분리및index페이지설정하기


Tmax사 WEB Server인 WebtoB에 정적 콘텐츠 분리 및 index 페이지 설정하기

그럼 이제, Tmax사의 WEB Server인 WebtoB를 활용하여 정적 콘텐츠 분리와 index 페이지를 어떻게 설정하는지 살펴보겠습니다.

 수정 케이스 1: VHOST 설정

WebtoB 환경설정 파일 $WEBTOBDIR/config/http.m을 사용해 작업을 시작합니다. 이 파일은 WebtoB의 핵심 설정 정보를 담고 있는 중요한 파일입니다. 먼저, "도메인:IP" 요청에 대한 응답 처리를 위해 VHOST 절에 설정을 추가합니다.

소스 코드 정보는 아래와 같습니다.

*NODE
hyodev1        WebtobDir    = "$WEBTOBDIR",
               ShmKey       = 54000,
               DocRoot      = "$WEBTOBDIR/docs/",                 
               Port         = "80",
               Hth          = 1,
               # WebToB와 Jeus를 연동하여 사용할 때 필요한 서비스 포트 정보.
               JsvPort      = 9900,
               Logging      = "access_log",
               ErrorLog     = "error_log",
               SysLog       = "system_log",
               # 서비스를 결정할 때 URI 절과 EXT 절의 우선순위를 결정한다.(기본값: "uri,ext")
               ServiceOrder = "ext,uri"
               
*VHOST
smart_web      HostName     = "www.smart.com",
               Docroot      = "/appdata/smartWeb",
               Port         = "80",
               # EXT절 "text/html" SvrType이 HTML인 경우
               # www.smart.com:80 접근 시 index.html 페이지로 접근된다.
               IndexName    = "index.html",
               Logging      = "smart_access_log",
               ErrorLog     = "smart_error_log"
                 
*EXT
html           Mimetype = "text/html",                 SvrType = HTML


이 설정은 정적 자원과 동적 자원을 분리하기 위한 옵션 중 하나인 "ServiceOrder" 속성을 사용합니다. 이 옵션은 사용자가 서비스를 요청하면 URI 절을 먼저 참조할지, 아니면 EXT 절의 내용을 먼저 참조할지를 결정하기 위한 설정 값입니다. VHOST 절의 ServiceOrder는 기본적으로 NODE 절의 설정을 따르지만, 필요에 따라 개별 설정이 가능합니다.

반응형

그러나, 이 설정은 단순하게 대상 서비스 정보 호출 시 설정된 Docroot에서 기본으로 처리할 문서의 이름을 설정한 것일 뿐입니다. 따라서 Context 정보가 추가되거나 json 등 특정 자원을 호출하게 되면 "404 Not Found" 응답을 받게 됩니다. 이 문제를 해결하기 위해, 더 세부적인 설정이 필요합니다.

이에 대한 추가적인 내용은 이전에 작성한 블로그 글인 "[WebtoB] WEB Server Error 페이지 설정하기"에서 찾아볼 수 있습니다. 이 글에서는 에러 코드별로 특정 페이지를 적용하는 방법에 대해 설명하고 있습니다.

 

 수정 케이스 2: SvrType 변경

다음으로, 모든 요청을 웹에서 응답하도록 SvrType을 변경하겠습니다. 이 설정은 웹 서버가 사용자의 요청을 직접 처리할 수 있게 해주므로, 백엔드 인프라가 불안정한 상황에서도 웹 서비스가 중단되지 않도록 해줍니다.

소스 코드 정보는 아래와 같습니다.

*SVRGROUP
htmlg           SvrType = HTML
jsvg_smart      SvrType = JSV,   VhostName = "smart_web"
jsvg_chatbot    SvrType = JSV,   VhostName = "chatbot_web"

*SERVER
html            SvgName = htmlg,   MinProc = 10,   MaxProc = 20
# smartGroup      SvgName = jsvg_smart,   MinProc = 20,   MaxProc = 40
# HTML 요청 대응으로 SvrType 도 변경 조치
smartGroup      SvgName = htmlg,   MinProc = 20,   MaxProc = 40
# chatbotGroup    SvgName = jsvg_chatbot,   MinProc = 10,   MaxProc = 20
chatbotGroup    SvgName = htmlg,   MinProc = 10,   MaxProc = 20

*URI
uri1            Uri = "/chatbot/",
                # SvrType = JSV,                
                # HTML 타입으로 변경 조치
                SvrType = HTML,
                SvrName = chatbotGroup,   VhostName = "chatbot_web"
                 
uri2            Uri = "/",
                # SvrType = JSV,
                SvrType = HTML,
                SvrName = smartGroup,   VhostName = "smart_web"
                
*EXT
html            Mimetype = "text/html",                   SvrType = HTML
pdf             MimeType = "application/x-pdf",           SvrType = HTML
css             MimeType = "text/css",                    SvrType = HTML
png             MimeType = "image/png",                   SvrType = HTML
js              MimeType = "application/x-javascript",    SvrType = HTML
jsp             MimeType = "application/jsp",             SvrType = JSV


위 예시 코드처럼 SvrType을 JSV에서 HTML로 변경하면, 모든 요청을 웹에서 직접 응답하게 됩니다. 그 이유는 NODE 절의 ServiceOrder 설정이 "ext, uri"로 설정되어 있기 때문입니다. 이 설정은 EXT 절을 먼저 참조하고, Docroot 기본 페이지( index.html ) 경로가 아닌 요청은 URI 절을 참조해서 WAS로 서비스 전달하기 때문입니다. 따라서, URI 설정 정보를 위와 같이 변경해야 합니다.


위의 내용은 WebtoB 환경설정 파일을 이용하여 정적 콘텐츠와 동적 콘텐츠를 분리하고, index 페이지를 설정하는 방법을 보여줍니다. 실제로 적용하기 위해서는 본인의 환경에 맞게 세부적인 설정이 필요하므로, 이를 참고하여 자신의 상황에 맞게 수정해야 합니다.

 

웹 서버의 효율적 활용을 위한 고민

필자 포함 대부분 실무에서는 웹 서버가 제대로 활용되지 않는 경우가 많습니다. 웹 서버는 단지 클라이언트의 접근을 위한 서비스 포트를 열어주는 역할과 내부망에 구성된 WAS 서버를 호출하는 프록시 역할로만 사용되는 경우가 많습니다.

하지만 이런 방식은 웹 서버의 본래 기능을 제대로 활용하지 못하는 것이므로, 가능하다면 웹 서버를 보다 효율적으로 활용하는 방법을 찾아보는 것이 좋습니다. 웹 서버의 설정과 관리에 대한 깊은 이해는 웹 서비스의 품질을 향상시키는 데 기여할 수 있습니다. 우리는 웹 서버가 단순한 중계 역할 이상의 가치를 지닐 수 있음을 인지하고, 그 효율적인 활용을 위해 노력해야 합니다.

 

※ WebtoB  http.m 설정 후 적용하기

 

[WebtoB] http.m 컴파일 및 재기동 방법

WebtoB 환경 설정 변경 후 http.m config 파일 컴파일 과정과 재기동 방법에 대해 알아보자. http.m config 파일 변경 이후 작업이다. webtob@hyodev1:/home/webtob/config> wscfl -i http.m Current configuration: Number of client h

aday7.tistory.com

반응형

댓글


loading