was는 J2EE 스펙을 구현한 서버입니다.
그중에서 특히 주목해야할 건 jsp/servlet Container와 EJB Container로서의 기능입니다.
이중에서도 EJB Container로서의 역할에 비중이 크죠.
가장 많이 쓰이는 WAS는 BEA사의 Web Logic이며, 그밖에도 여러가지의 WAS가 있습니다. 참고로 tomcat 은 jsp/servlet Container의 기능은 구현했으나 EJB Container로서의 기능은 없습니다. 그래서 tomcat은 WAS가 아니라고 하는 분들도 있습니다.
application이라 함은 응용프로그램입니다.
응용프로그램이란 어떤 목적을 위해 만들어진 프로그램입니다.
word는 문서작성을 위한 목적을 가지고 만들어진 프로그램이며,
포토샵은 이미지 편집/작성을 목적으로 만들어진 프로그램입니다.
web application이란 web에서 어떤 목적을 처리할 목적으로 만들어진 프로그램을 총칭하는 말입니다. 대표적인 웹 어플리케이션으로는 게시판, 쇼핑몰 등이 있겠네요. 아 지금 이곳 지식iN도 웹 어플리케이션입니다. word와 포토샵을 웹으로 구현하면 그것도 웹 어플리케이션입니다만 일반 어플리케이션을 그 상태 그대로 웹에서 실행시킬 수는 없습니다.
미들웨어도 하나의 응용 프로그램이라고 볼 수 있습니다.
주요 기능으로는 각 응용 프로그램간의 연계이죠.
미들웨어로서의 WAS는 Web Server와 DB Server 사이에 존재하면서 웹 어플리케이션을 탑재하고 있습니다. 이 웹 어플리케이션의 주요 기능은 DB의 데이터를 사용자의 목적에 맞게 가공하여 web server를 통해 보여주는 것이죠.
그럼 왜 WAS를 사용하느냐?
한마디로 분산환경에서 사용합니다.
분산환경에서의 가장 큰 이슈는 트랜잭션 처리인데, 이 트랜잭션 처리를 아주 적은 비용으로 효과적으로 처리할 수 있게 해주는 것이 WAS입니다
--------------------------------------------------------------------------------------------------------
음 우선 대표적인 것들을 예로들자면...
tomcat, jeus... 등이 있습니다 뭐 워낙 여러가지라...웹로직 등등 해서 무수히 많습니다..
와스에 대표적인 기능을 설명 드리자면..
서블릿 과 jsp 란걸 들어 보셨을걸로 압니다...
뭐 간단하게 설명을 드리자면...
서블릿은 통신을 통하여 전달된 정보를 가지고 html 파일을 동적으로 생성하는 class를 통틀어서 말을합니다. (어디까지나 간단하게 설명 하자면 그런거고 좀더 정확한 정의는 좀...)
간단히 예를 들자면 특정에 html페이지에서 넘긴 정보를( request ) 받아 특정된 처리를 하여 html페이지를 넘깁니다(response) 뭐 예를 들자면 이런건데 말로 하자니 어렵군요..
html 파일을 java로 생성한다고 생각하시면 가장 간단합니다...
jsp는 html 파일을 생성하는데 있어서 서블릿 보다 편한 방식으로 코딩 하기위하여..
자바형식에 맞는 코딩이 아닌 html형식에 코딩을 하는 형태라고 생각 하시면 됩니다..
뭐 대략 예를 들면 이렇다는 거구요..
이제 와스에 대해서 설명을 드리자면...
.java 파일을 .class로 컴파일 하듯이..
.jsp파일을 .class파일로 컴파일 하여 줍니다..
그리고 통신쪽에 관한내용을 와스단에서 처리하게 됩니다..
이게 대표적인건데 말이 참..
예를 들자면...
와스단에서 서버에 8080포트로 오는 정보를 처리하도록 설정을 하고, 도큐먼트 root를 c:\doc_root\라고 설정한다면..
익스플로러 상에서 localhost:8080/test/testpage.jsp(localhost란 자신의 네트웍을 얘기합니다....)라는 url을 호출을 하면.. c:\doc_root\test\testpage.jsp 라는 페이지를 호출하도록 처리를 합니다. 물론 jsp파일일때는 jsp파일을 ->java -> class형식으로 컴파일하여 실제적인 처리를 하게 되는 페이지는 서블릿 형식에 .class파일이 됩니다..
말이 좀 어렵네요..
음 다른 형식으로 \windows_root\system32\drivers\etc\host (윈도우 열어봐야 되는데 귀찮아서 대충 저런 폴더에 host 뭐시기 파일이 있습니다.. -_ㅡa 긁적)라는 파일에 www.myhome.com localhost 라는 형식으로 저장한다면...
www.myhome.com:8080/test/testpage.jsp 라는 페이지를 인터넷 익스플로러(이하 IE)에 요천한다면.. 위와 같은 방식으로 작동하게 됩니다.
(host 파일은 IE가 www.myhome.comfksms 라는 값을 받으면, localhost로 인식을 하게끔 설정할수 있는 곳입니다.)
또한 네트웍으로 연결이 되어 있고, 와스가 설치된 IP가 123.123.123.123이라면...
네트웍에 연결된 다른 PC에서 123.123.123.123:8080/test/testpage.jsp을 호출 하게 된다면... 네트웍에 연결된 다른 PC에서도 같은 웹 화면을 볼수 입습니다..
와스는 이처럼 네트웍에 한정된 웹서버라고 생각하시면 됩니다.
java로 작성된 내용을 처리 하는...
이제 웹 서버를 설명 드려야 하는데요..
대표적으로 아파치, 웹투비.. 등등이 있습니다.
웹 서버는 말그대로 작성된 html페이지 등을 네트웍망에 종속 되지 않고, 웹서브스를 할수 있도록 하는 어플리케이션일고 생각하시는게 가장 간단 할겁니다...
윈도우에서 IIS를 예로 들수 있는데,
간단히 예를 들자면 웹서버의 웹 루트를 c:\web_root\라고 설정을 하고, 웹 서버가 설치된 서버의 IP가 123.123.123.123 이라면... 겜방이든 옆집 친구 PC던 123.123.123.123/web_test/testPage.html이라고 IE에 요청을 하면, c:\web_root\web_test\testPage.html 파일을 리턴 하게 됩니다..
간단하게 호스팅 장비죠..
이 두가지가 서버에 설치가 되면 (네트웍에 연결된 다른서버여도 상관은 없습니다만 잘그러진 않죠..-_ㅡ;;) 두개를 연동시켜 웹서비스를 합니다.
간단히 예를 들자면...
웹서버에서
123.123.123.123/test/ 라는 경로에 .jsp라는 확장자를 가진 파일을 요청을 한다면 이파일을
/web_root/test/밑에 있는 파일을 보지않고 와스단에 /doc_root/test/ 에 있는 정보를 가져오도록 설정 할수 있습니다.. html 페이지 파일을 읽거나 쓰고 DB정보를 읽거나 쓸수 없기 때문에 이런 일련에 행위를.. 와스를 통해 해결 하는겁니다....
이제 123.123.123.123을 www.myhome.com으로 도메인 신청 하면 www.myhome.com으로 웹서비스가 가능 합니다.
이거참 설명을 하다보니 여기 까지 왔네요... 이후에 L4가 어떻고 라우터가 어떻고 뭐 그런 내용들이 나오는건데... 이거참 와스를 설명하자고 여기 까지 올줄은 -_ㅡ;;;
그냥 간단히 설명 드리자면 와스는 html 페이지등으로 해결할수 없는 DB와의 통신이나 파일IO등을 처리할수 있도록 도와주는 서버를 말합니다.(이 간단한걸 ...)
웹 어플리케이션 서버 에 어플리케이션은 ..
word나 포토샾같은 것을 얘기 하는것이 아니고, DB통신이나 FTP 통신 소켓 통신, FILE I/O등등에 원초적인 처리를 말합니다..
---------------------------------------------------------------------------------------------------------
Web Application Server는 이름에서 알 수 있다시피, web application을 수행할 수 있는 환경을 제공해주는 서버입니다.
보통 WAS라고 이야기하면, Java 기반의 web application server를 이야기합니다.
( 마이크로소프트의 IIS외에는 유명 WAS는 모두 Java기반으로 되어 있기 때문입니다. )
WAS를 할 줄 안다고 이야기할 때는 3가지로 해석할 수 있을 것 같은데요,
첫째는 web application을 작성할 줄 안다는 것이고, 둘째는 WAS가 제공해주는 각종 관리 기능을 능숙하게 사용할 줄 안다는 것이며, 셋째는 성능/안정성을 위한 튜닝을 잘 한다는 것입니다.
우선 web application을 작성할 줄 안다고 하면, 그 사람은 자바로 기업용 어플리케이션을 개발하기 위한, J2EE라는 표준을 잘 이해하고, 그 표준에 맞추어 자바 프로그램을 작성할 줄 아는 사람입니다.
사실 J2EE는 상당히 방대한 표준의 모음인데요, WAS상에서 실행되는 어플리케이션을 작성하기 위해서는 J2EE 중에서 다음 표준을 기본적으로 알아야 합니다.
Servlet -> 웹으로부터의 요청을 받아 필요한 결과 화면을 만들어내는 기본 API
JSP -> Servlet을 코딩을 최대한 줄이고 HTML형태의 태그를 사용하여 개발하기 위한 표준 API
JDBC -> 각종 데이터베이스에 접속하여 데이터를 처리하기 위한 표준 API
그리고 최근에는 J2EE의 표준은 아니지만, 아파치 그룹에서 좀더 코딩을 효율적으로 하기 위한 servler/JSP표준의 확장인 struts라는 것이 사실상의 표준이(de facto standard) 되어 가고 있습니다.
그리고, WAS를 잘 관리한다고 하는 것은 WAS구성정보를 능숙하게 설정하고 변경할 수 있는 것인데요, 그 설정/변경 방법의 기본적인 내용 역시 J2EE 내에 정의되어 있습니다. 다만, WAS를 제공하는 업체에서 제품의 차별화를 위해 보다 정교하고 편리한 GUI화면을 제공하고 있습니다. 이 GUI를 사용하는 방법은 WAS종류와 버전에 따라 달라지게 됩니다. 그러나 그 항목들은 대동소이합니다.
서버의 시작과 종료
웹 어플리케이션의 등록
JDBC연결의 등록
등등
마지막으로 성능과 안정성을 위한 튜닝을 하는 것은 가장 고도의 기술을 요하는 것인데요, 상당히 넓은 범위의 지식과 경험을 필요로 합니다.
즉 일단은 WAS의 설정이 성능/안정성에 어떤 영향을 미치는지 이해하고, 설정할 줄 알아야 하고, 경우에 따라서는 실행되는 어플리케이션에 문제는 없는지 추적하고, DB쪽 설정이나 SQL문장이 성능에 미치는 영향까지 고려해야 합니다.
참고로 현재 다양한 WAS들이 나와 있지만, 제가 알고 있기로는 상용 WAS는 IBM websphere, BEA weblogic이 제일 많이 쓰이고 무료 WAS로는 아파치 tomcat이 많이 쓰이는 것으로 알고 있습니다. 그러나 전체적으로 J2EE기반 WAS들 사이에 기능상의 차이가 사라져가는 분위기입니다. 그 틈을 타서 다른 업체들도 저가를 무기로 공격적인 영업을 하고 있다고 합니다.