본문 바로가기
Back-end

Springboot 동작원리

by 신재권 2021. 7. 19.

스프링부트 동작원리

 

내장 톰켓을 가진다.

톰켓을 따로 설치할 필요 없이 바로 실행이 가능하다.

Socket : 운영체제가 가지고 있는 것이다.

소켓이 새로 열릴때마다 쓰레드도 열려 동시작업을 가능하게 해준다.

서로 연결이 계속되어 있어 지속적으로 통신이 가능하지만, 부하가 걸린다.

http 통신은 stateless 방식으로 작동한다.

http는 문서를 전달하는 통신이다.

http는 소켓에 비해 부하는 적지만 작업이 끝나면 연결이 끊겨 다시 연결을 할때는 새로운 연결을 해야 한다.

위의 단점을 보안한게 웹서버이다.

http의 목적은 html(확장자)로 생성된 문서를 요청자에게 전달해주는 것이다.

http : 소켓을 기반으로 함

 

톰켓 | 웹서버의 차이를 알아야 한다.

웹서버 : 갑/을 구조이다. 필요한 사람이 을이고 웹서버가 갑이다.

웹서버 통신은 항상 을이 갑에게 request(요청)를 한다.

request할때는 위치를 알아야하기 때문에 IP주소가 필요하다.

request할때는 어떤 것이 필요한지 알 수 있게 URL을 통해 전달한다.

URL은 자원을 요청하는 주소이다.

또한 요청을 받고 response(응답)할때는 위의 정보를 토대로 보내기때문에 위의 정보들을 다시 찾지 않아도 응답할 수 있다.

즉 http는 응답자는 요청자의 정보를 알 필요가 없다.

대신 요청자가 요청을 하지 않았으면 , 응답자는 요청자랑 연결이 되지 않기 때문에 불가능하다.

을의 주소를 알기 위해서는 소켓을 사용해야 한다.

소켓은 을이 연결을 하는 순간 연결이 계속 지속되기 때문에 한번 연결하면 갑이 원하는 시점에 데이터 전달이 가능하다.

http통신은 단순히 요청시에 응답하는 구조이고, 응답은 문서나 자원을 요청자에게 응답을 해준다.

이 자원들은 전부 static 자원이라고 한다.

즉 정적인 데이터를 응답해주는 것을 웹서버라 한다.

 

웹서버는 자바코드등 인식못하는것이 있다.

대신 여기다 톰켓을 달면 톰켓이 컴파일을 해줘서 html파일로 만들어준다.

즉 웹서버가 다시 인식할 수 있게 해주는 것이다.

즉 정상적으로 웹브라우저가 파일을 읽을 수 있게 도와주는 것이다.

 

서블릿 컨테이너

만약 정적 자원들을 요청을 하면 톰켓대신 아파치(웹서버)가 일을 한다.

만약 자바 파일을 요청하게 되면 톰켓이 일하게 된다.

스프링에서는 정적자원들은 요청이 불가하다.

스프링은 URL접근 방식을 막아놔서 URI(식별자 접근) 방식을 사용한다 .

즉 특정한 파일을 요청할 수 없고, 요청시에는 무조건 자바를 거쳐야 한다.

자바 파일을 받으면 아파치는 톰켓에게 제어권을 넘기게 된다.

서블릿 : 자바 코드로 웹을 다루는 것

클라이언트가 자바와 관련된 자원을 요청하게 되면 서블릿 컨테이너(톰캣)를 거치게 된다.

요청이 들어오면 톰켓은 스레드를 생성하게 된다 .

스레드가 서블릿 객체를 생성하게 된다.

만약 요청이 스레드 설정 개수보다 많아지면 대기하게 된다.

스레드가 하던 일이 끝나고 response를 하면 스레드는 할 일이 끝나게 된다.

스레드가 할 일이 끝나면 사라지는 것이 아니고 대기 중인 요청을 다시 처리하게 된다.

즉 , 재사용하여 불필요한 연산을 없애 속도를 증가 시킨다.

결국 톰캣은 HttpServeletRequest, HttpServletResponse 객체를 가지고 있는다.

 

web.xml가 하는 일

ServletContext의 초기 파라미터 설정

Session의 유효시간 설정

Servlet/JSP에 대한 정의 및 매핑을 한다.

Mime Type 매핑을 한다.

Welcome File List를 설정한다.

Error Pages를 처리한다.

리스너와 필터를 설정한다.

보안을 설정한다.

 

초기 파라미터는 한번 설정을 해놓으면 어디서든지 동작이 가능하다.

세션은 인증의 개념이랑 비슷하다. 인증의 유효기간은 web.xml이 설정이 가능하다.

web.xml의 정의된 정보를 토대로 알맞은 곳으로 매핑시킨다.

Mime Type은 정보가 들고온 데이터의 타입이다.

정보를 들고오지 않은 것들은 http의 get방식으로 전달된다.

만약 정보를 들고오면 검사 및 가공을 하여 정보를 사용한다.

즉 Mime Type을 틀리게 되면 에러가 발생하게 된다.

Welcome File List는 정보를 들고오지 않은 것들이 처음으로 가는 곳이다. 이곳은 관리자가 직접 설정이 가능하다.

Error Pages는 정보가 잘못들어왔거나 등 에러가 발생하였을 때 보내는 곳이다.

필터는 잘못된 정보가 들어왔을 때 걸러내는 방식이다.

리스너는 필요한 정보만 얻어오는 대리인의 느낌이다.

즉 웹서버에 진입을 하게 되면 최초로 도는게 web.xml 이다.

'Back-end' 카테고리의 다른 글

SQL 문법 (4)  (0) 2021.08.01
SQL문법 (3)  (0) 2021.07.25
JPA 개념  (0) 2021.07.18
Spring 개념  (0) 2021.07.18
SQL 문법(2)  (0) 2021.07.18