- 주로 서버 구성 시 웹서버와 WAS를 분리하여 구성함. - 웹서버는 정적인 웹리소스를 반환 - WAS는 동적인 웹리소스를 반환 - WAS 고전 버전에서는 정적 웹서버의 기능을 제공하지 않았었음. - 최신 WAS의 경우 웹서버의 모듈을 포함하여 기능을 제공함. - 그렇다면 왜 WAS와 웹서버를 분리하여야 하는가? - 첫째로, 기능을 분리하여 서버 부하 방지 - 둘째로, 물리적으로 분리하여 보안강화 - 셋째로, 여러 대의 WAS를 연결 가능 - 이는 로드밸런싱의 역할 및 fail over, fail back 처리에 유리 - 넷째로, 여러 웹어플리케이션을 서비스 가능 - 즉 java서버, c# 서버, php서버 등 하나의 웹서버를 통해서 서비스 가능 (아래 내용은 별로 공감가지 않음.) - 추가적으로 로드밸런싱 처리를 위한 L4 장비가 있으나 고가임. - L4 장비는 WAS가 비정상적으로 종료 시 인지가 느림. (정말 느릴까?) - 그에 비해 웹서버의 경우 Plug in을 통해 WAS 클러스터 상태를 항상 인지하고 있음. - 때문에 fail over, fail back이 매우 빠르고, L4보다 나은 성능을 기대할 수 있음. (정말 나을까?) 참고 : http://blog.daum.net/kmeunvaram/32 http://toby.epril.com/?p=1125 Fail over : 시스템 대체 작동, 즉 주 시스템이 작동이 정지되면 예비 장비가 자동으로 대체 작동함 Fail back : 재난이나 지정된 유지보수 기간 후 서비스를 정상 상태로 돌리는 프로세스 웹 서버와 was의 차이점은 무엇일까? 서버 개발에 있어서 기초적인 개념이다. 먼저, 정적 페이지와 동적 페이지를 알아보자 Static Pages
웹 서버는 파일 경로 이름을 받고, 경로와 일치하는 file contents를 반환함 항상 동일한 페이지를 반환함 Dynamic Pages
인자의 내용에 맞게 동적인 contents를 반환함 웹 서버에 의해 실행되는 프로그램을 통해 만들어진 결과물임 (Servlet : was 위에서 돌아가는 자바 프로그램) 개발자는 Servlet에 doGet() 메소드를 구현함 웹 서버와 WAS의 차이웹 서버개념에 있어서 하드웨어와 소프트웨어로 구분된다. 하드웨어 : Web 서버가 설치되어 있는 컴퓨터 소프트웨어 : 웹 브라우저 클라이언트로부터 HTTP 요청을 받고, 정적인 컨텐츠(html, css 등)를 제공하는 컴퓨터 프로그램 웹 서버 기능
요청에 맞게 두가지 기능 중 선택해서 제공해야 한다.
웹 서버 종류 : Apache, Nginx, IIS 등 Web Application Server의 약자
HTTP를 통해 애플리케이션을 수행해주는 미들웨어다. WAS는 웹 컨테이너 혹은 서블릿 컨테이너라고도 불림 (컨테이너란 JSP, Servlet을 실행시킬 수 있는 소프트웨어. 즉, WAS는 JSP, Servlet 구동 환경을 제공해줌) 역할웹 서버의 기능들을 구조적으로 분리하여 처리하는 역할
WAS 주요 기능1.프로그램 실행 환경 및 DB 접속 기능 제공 2.여러 트랜잭션 관리 기능 3.업무 처리하는 비즈니스 로직 수행 WAS 종류 : Tomcat, JBoss 등 그럼, 둘을 구분하는 이유는?웹 서버가 필요한 이유웹 서버에서는 정적 컨텐츠만 처리하도록 기능 분배를 해서 서버 부담을 줄이는 것 WAS가 필요한 이유WAS를 통해 요청에 맞는 데이터를 DB에서 가져와 비즈니스 로직에 맞게 그때마다 결과를 만들고 제공하면서 자원을 효율적으로 사용할 수 있음 그러면 WAS로 웹 서버 역할까지 다 처리할 수 있는거 아닌가요?또한, 여러 대의 WAS를 연결지어 사용이 가능하다. 웹 서버를 앞 단에 두고, WAS에 오류가 발생하면 사용자가 이용하지 못하게 막아둔 뒤 재시작하여 해결할 수 있음 (사용자는 오류를 느끼지 못하고 이용 가능) 자원 이용의 효율성 및 장애 극복, 배포 및 유지 보수의 편의성 때문에 웹 서버와 WAS를 분리해서 사용하는 것이다. 가장 효율적인 방법
클라이언트의 요청을 먼저 웹 서버가 받은 다음, WAS에게 보내 관련된 Servlet을 메모리에 올림 WAS는 web.xml을 참조해 해당 Servlet에 대한 스레드를 생성 (스레드 풀 이용) 이때 HttpServletRequest와 HttpServletResponse 객체를 생성해 Servlet에게 전달
doGet()이나 doPost() 메소드는 인자에 맞게 생성된 적절한 동적 페이지를 Response 객체에 담아 WAS에 전달 WAS는 Response 객체를 HttpResponse 형태로 바꿔 웹 서버로 전달 생성된 스레드 종료하고, HttpServletRequest와 HttpServletResponse 객체 제거 [참고자료]반응형 - 주로 서버 구성 시 웹서버와 WAS를 분리하여 구성함. - 웹서버는 정적인 웹리소스를 반환 - WAS는 동적인 웹리소스를 반환 - WAS 고전 버전에서는 정적 웹서버의 기능을 제공하지 않았었음. - 최신 WAS의 경우 웹서버의 모듈을 포함하여 기능을 제공함. - 그렇다면 왜 WAS와 웹서버를 분리하여야 하는가? - 첫째로, 기능을 분리하여 서버 부하 방지 - 둘째로, 물리적으로 분리하여 보안강화 - 셋째로, 여러 대의 WAS를 연결 가능 - 이는 로드밸런싱의 역할 및 fail over, fail back 처리에 유리 - 넷째로, 여러 웹어플리케이션을 서비스 가능 - 즉 java서버, c# 서버, php서버 등 하나의 웹서버를 통해서 서비스 가능
출처: http://blog.naver.com/sangmanla?Redirect=Log&logNo=100199297270
반응형 공유하기 게시글 관리 구독하기착살의 숲저작자표시
'프로그래밍 > JAVA, JSP' 카테고리의 다른 글Java split 함수의 이용 (0)2017.09.11웹서버와 WAS의 차이 (0)2014.06.02마이플랫폼(miplatform)이란..? (0)2014.06.02jqGrid란..? jqGrid 기본 설정 (0)2014.06.02제이슨(JSON)이란 무엇인가..? (0)2014.06.02 |