02.아파치와 톰켓

Jan 25, 2024
02.아파치와 톰켓
💡
아파치(Apaache) 웹서버 HTTP 요청을 받아들이고, 해당 요청에 대한 처리를 수행하여 클라이언트에게 HTTP 응답을 반환하는 소프트웨어입니다. 웹 서버는 웹 애플리케이션의 핵심 구성 요소 중 하나로, 웹 페이지, 이미지, 동영상 등의 정적인 콘텐츠를 제공합니다. 톰켓 웹 애플리케이션 서버(was) 동적인 웹 애플리케이션의 실행 환경을 제공하는 소프트웨어입니다. 웹 애플리케이션 서버는 클라이언트의 요청을 받아들이고, 해당 요청에 대한 처리를 수행하여 동적인 콘텐츠를 생성하고 반환합니다. Servlet(클래스)이 내장 돼있다. Servlet 자바 클래스로 클라이언트의 요청 받은 데이터를 DB에 전달하는 과정과 DB에서 캐싱한 데이터를 다시 클라이언트에게 전달하는 과정을 도와준다.
아파치 톰켓 동작 그림
notion image
  1. 클라이언트가 아파치 톰캣을 통해 연결할 시 아파치 포트에 연결을 진행 후 허용 시 연결 소켓을 따로 생성하여 통신을 한다. web.xml은 문지기(필터)가 해야될 일이 적혀있음
  1. 문지기가 web.xml보고 내부 내용가 해당하면 index로들여보내고 아니면 안들여 보내준다).
문지기를 통과해서 처음으로 마주하는게 아파치다.
  1. 요청한 데이터를 파싱하여 오브젝트화 시킨 후 필터에 넣어 아파치의 조건문을 통해 파일 형식이면 아파치과 관리하는 웹 서버식별자 요청 시 톰캣에게 위임한다. → 톰캣에게 넘어 갈 시 아파치 나름대로 문자열로 바꿔 넘긴다.
아파치에게 넘어오는 문자열의 모습
아파치의 버퍼에 처음 받는 명령 ( 문자열로 들어 간다 )
아파치의 버퍼에 처음 받는 명령 ( 문자열로 들어 간다 )
  1. 만약 파일 형식이면 다시 넘기며 연결이 끝이 나지만, 톰캣으로 넘어갈 시(위임) 톰캣에서 또한 파싱과 오브젝트 작업을 진행하게 된다.
  1. 톰캣에서 진행 시 “HTTPServletRequest”“HTTPServletResponse”가 생겨난다. → HTTPServletRequest : BR → 요청 정보를 저장한다.HTTPServletResponse : BW → 응답할 정보를 담는다.
  1. 다음으로 “서블릿(Servlet)”“디스패처(Dispatcher)”가 생기는데 이를 통해 서블릿에는 리스폰스와 리퀘스트의 정보를 담은 후 디스패처에서 라우팅 과정을 거치며 진행이 된다.
  1. 이후 필요한 “컨트롤러(Controller)”는 직접 개발자가 만든다.
  1. 이 과정을 진행 후 다시 역 과정을 거쳐 정보를 전달해주는 방식으로 아파치 톰캣의 웹 통신이 진행 된다.

동적 페이지와 정적 페이지

💡
  • 정적 페이지 → 페이지가 항상 동일하게 나오는 것 → 주로 “아파치(Apache)”에서 처리가 된다.
  • 동적 페이지 → 페이지가 실행 할 때 마다 변하는 것 → 주로 “톰캣(Tomcat)”에서 처리가 된다.
  • 서버가 “동적 페이지”인지 “정적 페이지”인지 알아서 프로토콜에 맞도록 클라이언트에게 알려 준다.
  • “정적페이지”헤더“캐싱”하라고 서버에게 알려준다.
  • 헤더에 동적/정적 정보를 넣고 브라우저가 캐싱해야 될지 알려준다. 캐싱을 하게되면 서버에 부담이 적게들고 비용이적게든다.
속도가 빠르다. (서버에 부화가 적게 걸린다 → 서버의 비용이 적게 든다.)
  • 계속 바뀌는 페이지를 정적으로 만들게 되면 계속 페이지가 늘어나면서 파일이 늘어나게 된다. → 그래서 웹 사이트를 동적으로 만드는 것이다. → 요즘은 회사 페이지 정도만 정적페이지로 만들 수 있다.
 
💡
설명에 대한 보충 설명과 알아야 하는 정보!
  1. 프론트 컨트롤러는 서블릿이다. 프론트 컨트롤러를 모두 if로 다 때리면 다른 개발자가 짤 수가 없다는 단점이 생긴다. 이로 인해 톰캣의 디스패쳐에서 자동으로 리플렉션을 진행한다.
  1. 요청이 들어올때마다 생기는 서블릿은 프론트 컨트롤러가 아니다. 하지만 모든 요청을 하나의 서블릿에서 처리하면 프론트 컨트롤러가 된다.
  1. 서블릿은 많이 만들면 용량의 부화가 생기지만 처리하긴 편하다. 이를 위해 하나의 서블릿(진입점을 하나로만듬)으로 모든 것을 다할려면 라우터가 꼭 필요하다! → 장점은 하나의 공통 로직을 만들 수 있다. → 단점은 라우터를 만들어야한다는 것
 
  1. 서블릿을 만드는건 개발자 이고 new해주는건 톰캣이다. → 톰캣이 new 해주고 서비스 메서드를 쓰고 리스폰과 리퀘스트를 때린다. → SRP를 지키기 위해 레이어를 나눈다. → 스프링 프레임 워크 → 디스패쳐를 리플렉션으로 만들어준다. 그리고 모든 객체들을 new하지마! 어노테이션만 해! 넌 컨트롤러만 만들어 라고 하는 것이다.
  1. 자바프레임워크 → servelt을 직접 만들어줘 일의 일관성을 만들어준다. → 첫번째 init은 디스패쳐 구축(디스패쳐 서블릿)
👉
기억하면 좋을만한 정보!
디스패쳐를 만들어서 모든 정보를 위임하고 적절한 컨트롤러를 찾아낸다. ( 디스패쳐는 리플렉션으로 만들어져 있다 )
if 로 하면 뭔가 추가되면 자기 자신만 할때는 괜찮은데 팔때는 문제가 생겨서 리플렉션으로 만든다. 동적 컨트롤러로 만들어준다.
스프링 프레임워크 라는 제단이 있는데 여기서 만든 시스템이 일관되게 servlet을 쓰는 틀을 잡아주는 프레임워크 시스템이다. spring 프레임워크 이것에 핵심은 dispatcher를 만들어 주는 것 이다.
톰캣은 웹 어플리케이션 서버 → 동적파일을 응답한다. → 동적파일을 응답하려면 무조건 자바랭귀지가 필요하다. → 프로그래밍이 안되면 동적 페이지를 불러 오는게 불가능하다. (자바코드 작성)

 
 
 
 
 
 
 
 
 
 
 

http 오류

profile set: 아직 설정되지 않았다.
notion image
Share article
RSSPowered by inblog