본문 바로가기

Programming/Web

Webserver와 WAS

WAS 무엇인가

  1. Web Application Server 약자로 국내에서는 통상 java프로그램을 구동시켜주는 application server 지칭함.
  2. 대표적인 WAS로는 tomcat 있으며 tomcat java servlet jsp 구동을 지원한다. (servlet container 혹은 web container라고 지칭한다.)
  3. WAS본인 또한 하나의 java프로그램이며 jvm위에서 동작한다. jdk 설치되어있지 않으면 동작하지 않는다. 다만 centos같은경우 open-jdk 기본 설치되어있다.
  4. WAS http요청이 오면 java servlet프로그램을 jvm위에 올려서 실행시켜주며 결과를 받아 http리턴한다.

 

Webserver WAS 관계

  1. webServer html파일 같은 고정된 리소스를 제공해주는 정적인 역할을 담당. 대표적으로 Apache 있다.
  2. WAS server application 구동시켜주는(web container) 플랫폼 역할을 하는데 application DB 연결하여 데이터를 주고받거나 프로그램으로 데이터를 조작하는 등의 동적인 데이터 처리가 필요한 역할을 담당한다.
    • Tomcat 경우 web container역할 외에 webserver 기능도 가지고 있다. 그러나 apache만큼 정적인 문서를 빠르게 처리하지 못하며 안정성도 apache 비해 떨어진다그래서 apache tomcat 연동시켜서 보통 사용한다.
  3. 사용자 요청은 apache 받고 내부 프로그램은 was 통해 처리하는 형태가 보편적임.
  4. 웹브라우저 - 웹서버 - WAS(servlet container) - java기반 서버사이드 프로그램 구조가 보편적임.

 

Java Servlet jsp 무엇인가?

  1. 먼저 CGI프로그램이란 용어를 알아야 한다. 서버에 의해 실행되며 CGI(Common Gateway Interface)규칙에 따라 서버와 데이터를 주고받는 프로그램을 CGI프로그램이라 한다. CGI프로그램은 C,C++, JAVA, PHP, Python 등등으로 작성이 가능하다.
  2. JAVA기반의 CGI프로그램을 servlet이라고 지칭한다.
  3. servlet servlet container(WAS) 통해서만 웹서버와 통신한다.
  4. servlet 최대 장점은 http요청에 따라 WAS servlet 스레드로 돌리기 때문에 메모리 효율성이 좋다는 것이다.
  5. jsp(Java Server Page) JAVA기반의 서버사이드 스크립트 언어이다. servlet java코드 안에 html 넣은 것이라면 jsp html안에 java코드를 넣은 개념이다. jsp 짜면 html java코드의 분리가 가능해지겠지.
  6. servlet 경우 결국 .java 파일을 .class파일로 컴파일 한것을 WAS jvm위에 올려 구동시켜 주는 형태인데 소스가 변경될 마다 매번 .java파일을 컴파일 해야한다. 그것이 번거로우니 jsp 사용하게 된것. jsp 스크립트 언어이므로 수정 컴파일이 필요없다. java소스 변경이 필요한 경우만 컴파일 해주면 되겠지. 

 

그러면 php 만든 Server Application(CGI 프로그램) 어떻게 동작하는가?

  1. php php인터프리터에 의해 읽히는 스크립트 언어이다.
  2. centos php 설치하면 인터프리터가 설치된다.
  3. apache 의해 php인터프리터가 구동되어 .php문서를 바로 읽어들여 프로그램화 한다.

Java Servlet처럼 servlet container 필요없다. WAS 필요없다.

 

그러면  C 만든 Server Application(CGI프로그램) 어떻게 동작하는가?

  1. C 만든 프로그램은 인터프리터나 jvm 아닌 운영체제가 직접 실행시켜준다. 따라서 웹서버 별도의 도움이 필요없다.
  2. 다만 웹서바가 C프로그램을 직접 실행시키는 경우 스레드가 아닌 프로세스를 매번 새로 생성하기 때문에 메모리 효율이 극히 떨어진다는 단점이 있어 사용하지 않는다고 한다.

 

was 종류

 WAS BEA사의 Web Logic, IBM사의 Web Sphere, T-max사의 Jeus, Tomcat, Redhot사의 Jboss 있다.

front-end개발

  • HTML, CSS 화면을 만드는 개발
  • 웹서버사이드에서 개발하는 것으로 생각하면 된다.

back-end개발

  • php, java, c# 등으로 어플리케이션을 만드는 개발
  • CGI프로그램 개발이라고 생각하면 된다.