이슬티
101
2019-02-21 20:32:49 작성 2019-02-21 20:33:50 수정됨
16
659

WAS와 웹서버에 대하여 질문 올립니다.


안녕하세요~

이제 입사 몇개월 안된 신입 웹개발자입니다.

다름이 아니라 오늘 선배 개발자분께서 문제를 주고 퇴근하셨는데,

정말이지 아리송해서 옼키에 질문드립니다.

그분이 웹서버와 WAS(Web Application Server)의 차이에 대해 설명하라 하셔서  

 '웹서버는 클라이언트로부터 요청을 받아 html, css, png등 정적 데이터를 처리하고, 동적 데이터 처리는 컨테이너에게 넘긴다. WAS는 웹서버+컨테이너의 개념이며 WAS도 정적 데이터 처리를 할 수 있지만, 성능상의 이유로 정적 데이터는 웹서버에게 맡기고 동적 데이터 위주로 처리한다' 라고 했습니다.

이에 '그럼 소스들은 어디에 있는데? 클라이언트로부터 요청을 받아서 처리를 하려면 어쨌든 JSP든 자바든 서블릿이듯 html이든 있어야 반환을 하잖아? 웹서버에 있나? WAS에 있나? 어디에 있을까? 공부해가지고 와'

하셨습니다.


질문의 요지를 정확히 파악하지 못해서인지... 검색을 해봐도 어떻게 검색해야 할지도 모르겠고 감도 안잡힙니다... 도와주세요 ㅠㅠ




0
0
  • 답변 16

  • 나도아빠다
    2k
    2019-02-21 20:50:46

    저도 정말모르겠네요


    서버설치된 컴퓨터 하드디스크 어딘가에 들어있겠지요.

    소스를 꼭 어디넣어야 한다는 국제규격이 있는것도ㅜ아니고말이죠..

    0
  • 초무쿤
    2k
    2019-02-21 21:04:55 작성 2019-02-21 21:07:24 수정됨

    예전 자바가 무겁고 시스템성능은 않좋고 하던 시절에나 웹서버/WAS 나누는게 의미가 있었고.

    요즘은 의미 없습니다 그냥 다 WAS(웹어플리케이션서버) 라고 보시면 됩니다.

    운영상에도 까다롭고요.

    지금 시점으로 말씀드리면 저런 아키텍쳐는 좀 한물간 아키텍처에요.

    좀 옛날 방식인데...공부한다고 치면 알 필요는 있지요.뭐.;;

    공부해보시려면
    Apache + mod_jk + Tomcat 연동하는 방법에 대한 글들이 많이 있는데 그거 읽어보시면 됩니다.
    0
  • 이슬티
    101
    2019-02-21 21:40:07

    두분 답변 감사드립니다.

    내일 답변을 어찌해야될지 막막하긴 하지만, 아무리 찾아봐도 모르겠더라 말씀 드리면

    이해해 주시지 않을까요 ㅎㅎ....

    0
  • 초무쿤
    2k
    2019-02-21 21:54:09 작성 2019-02-21 21:54:52 수정됨

    근데 아마 이해 않해줄겁니다. 

    Apache + mod_jk + Tomcat연동을 공부하시는게 맞을듯 하네요.

    이런방식이 낡은 방식이라도

    왜 이게 이렇게 됬는지를 알아야 현재가 이해가 되기때문에 알고는 계셔야되요.

    마치 현재 사회를 이해려면 역사를 알아야되는 거랑 일맥상통할듯.

    0
  • 이슬티
    101
    2019-02-21 21:57:10

    초무쿤 // 꼭 확인하고 공부하겠습니다. 정말 고맙습니다.



    0
  • 나도아빠다
    2k
    2019-02-21 23:17:28 작성 2019-02-21 23:19:34 수정됨

    일단.. 소스위치는 어짜피 설정파일에서 개별설정되는건 아실겁니다.

    소스가 어디에 있냐는 질문은 10년전이라도 무의미한건 마찬가지지요.


    억지로 말 갖다붙여보면 아파치 Httpd파일과 server.xml이나 context.xml에서 설정된곳에 있다정도가 답일거 같네요

    기껏해야 스태틱 파일은 아파치가관리한다 이런거일텐데.. 그건 이미 질문자님 답변에 있는 내용같은데 말이죠.

    사수 질문하는거보니.. 오히려 공부 열심히해서 뒤통수 때려보는것도 추천드립니다 ...ㅋㅋ

    0
  • 타키투스
    861
    2019-02-22 00:05:37

    질문한 사람도 포커스를 비켜갔네요.... 소스를 어디에 배포할건가가 질문의 요지가 아닐텐데...

    거기다 Web 서버나 WAS 의 차이는 없어요. 이론상으로는....


    단지 역할을 지금 그렇게 나눠놨을뿐이고 Java 진영이 그렇게 포맷을 정해서 운영하는거고

    유명한 Apache HTTPD 나 Nginx 같은 경우에 나름의 규칙같은 걸로 인해서 그런 역할만 구현되서 운영되는걸뿐...


    차이는 없어요.


    0
  • 초무쿤
    2k
    2019-02-22 06:01:39 작성 2019-02-22 07:14:46 수정됨

    왜 저렇게 되었는지 말씀드리면 예전의 EJB라는 괴물떄문에 저런 아키텍처가 나오게 됬구요.

    (당시 EJB로 개발되던 프로젝트에 있던 외국개발자가 아~ 좃같아.. 하면서 만든게 spring이고..;;;)

    그 당시만 해도 그 수준의 서버들에서 java 자체가 상당히 무거웠기때문에 (사실 EJB때문에..;;)

    static 리소스들은 전방 웹서버(apache같은..)에서 처리를 하고

    비지니스적인 모듈들의 처리는 뒷단 WAS에서 처리를 하는식으로 구성을 했었습니다.


    웹서버(아파치) <=====> mod_jk (아파치 연동모듈) <=====> WAS(웹어플리케이션)
    
    static 리소스             AJP커넥터                  비지니스처리 JAVA서비스 
    
    (img,html,js,css등) 
    
    


    요즘 이렇게 하는데 없다고 봐야될듯 합니다. 사실 유지보수하기도 까다롭구요.

    이제 대부분 spring으로 개발하다보니 신규프로젝트는 EJB도 않쓰고요.

    서버들도 좋아지고 java자체가 서버에서 돌리는게 부담스럽지도 않은 상황이라.

    의미없다고 보면 되겠습니다.

    배포의 경우는 보통 WEB/WAS소스가 동일하다보니...

    소규모인 경우 동일서버장비에 웹서버/WAS를 동시에 적재하는 경우는 상관없지만

    대형시스템의 경우에는 웹서버/WAS서버가 서로 다른장비인데..

    보통 스토리지 장비를 NFS(네트워크 마운트)하거나  미러링(rsync같은거)하는 방법으로 했던거 같네요.

    이부분은 요즘도 마찬가지일거라고 봐집니다.

    당시 저런 아키텍쳐 사실 상당히 약장사 같은 사기극이었을지도 모르겠네요.

    프로젝트비용 300억에 장비비만 70억 뭐 이렇게 나왔던적도 있는데....

    (저 70억에 리베이트가 엄청 녹아있습니다.)

    지금 생각해보면 오버엔지니어링이죠..

    SI 회사 입장에서는 저게 다 돈이라..튀기고 튀기고 또 뻥튀기고..ㅋㅋㅋ

    장비로 튀겨도 않되면 프로그램도 튀기고 튀기고 또 뻥튀기고...ㅋㅋㅋ

    그래도 않되면 개발자 하청 단가는 후려치고 후려치고 또 후려치고..ㅋㅋ

    (내가 공부한거지 개뿔 교육해준것도 없는데 교육비로도 띠어먹고...)

    추악하죠..뭐..ㅋㅋ

    0
  • 안개짱
    2019-02-22 07:40:59

    보안 문제로 web과 was를 분리 합니다.

    web은 인터넷망. was는 방화벽 안쪽 내부망

    요즘은 이것도 다른가요?

    0
  • bayleys
    1k
    2019-02-22 09:43:36

    뭐 답글들이 너무 나간거 같네요...


    '그럼 소스들은 어디에 있는데? 클라이언트로부터 요청을 받아서 처리를 하려면 어쨌든 JSP든 자바든 서블릿이듯 html이든 있어야 반환을 하잖아? 웹서버에 있나? WAS에 있나? 어디에 있을까? 공부해가지고 와'


    --> 스태틱한 파일은 WEB서버에 비즈니스로직은 WAS서버에 있습니다.


    이 한문장으로 답해도 될거 같은데... 

    0
  • 초무쿤
    2k
    2019-02-22 16:24:35 작성 2019-02-22 16:25:14 수정됨

    @안개짱

    저런식으로도 많이 했었는데요.(예전 개발해서 운영하는 시스템들은 저렇게 많이 되있죠.)

    근데 보안때문이라면

    사실 로드밸런서(L4) 가 인터넷망에 있고...

    어플리케이션 서버는 내부망에 있으면서 둘만 iptable 잡아주면 저 문제는 해결이 됩니다.

    시스템 보안을 커버 해주려고 어플리케이션 구조를 결정하는거는 불합리한듯 합니다.



    0
  • 안개짱
    2019-02-22 16:28:58

    초무쿤 //

    L4이용하면 그렇게 하면 되겠네요.

    L4가 비싸다고 로드벨린싱을 web서버에서 해달라고도 하더라구요. ㅠㅠ

    0
  • 초무쿤
    2k
    2019-02-22 16:35:32

    @안개짱 

    L4 드럽게 비싸지요.ㅎㅎ;  대기업 아니면 비용투자하기 좀 그렇죠.뭐.

    저희에게는 HAProxy 같은 소프트웨어 로드밸런싱이 있지 않습니까. ㅎㅎ

    깡통서버 2대 전진 배치 시켜놓고 HAProxy 설치하시고 Active-Active나 Ative-Stanby로 운용하시면 됩니다.


    0
  • 안개짱
    2019-02-22 16:59:13

    @초무쿤

    그렇군요.. 전 몰랐습니다. HAProxy라는 것을요..

    좋은 정보 감사합니다. 앞으론 굳이 해야 겠다면 HAProxy 쓰면된다고 하면 되겠네요..

    저야 프리라서 묻지도 않겠지만요 ㅎㅎ


    0
  • 초무쿤
    2k
    2019-02-22 17:04:10

    @안개짱

    SI말고는

    쓸일이 아주아주 많습니다. 로드밸런서는 꼭 들어가니깐요. 다른 소프트웨어 로드벨런서 쓰셔도 되는데 저게 HAproxy가 오래되기도 했고 쓰기 편해서용

    0
  • 안개짱
    2019-02-22 17:14:44

    @초무쿤

    지난 11일에도 릴리즈 되었네요.. 좋은정보 다시한번 감사드립니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.