스프링부트 동작원리

1. 내장 톰켓을 가진다.

socket

  • 운영체제가 가지고 잇는 것으로 시스템 연계 방식의 간접적 연계방식 중 하나

  • 서버는 통신을 위한 소켓을 생성하여 포트를 할당하고 클라이언트의 통신 요청 시 클라이언트와 연결하는 네트워크 기술, 송신 기술

  • 소켓은 포트번호가 있어야 함

ip주소와 포트번호를 넣고 연결한다. A와 사용자 B를 연결하며 통신한다. 그러다가 B가 5001 port와 통신하게 되면 A는 다른 사용자인 C와 통신이 불가능하게 된다.

왜냐하면 CPU가 일을 하고 있기 때문이다. 그렇기 때문에 스레드를 만든다. 5000번은 main 스레드로 5001은 스레드 1로 만든다.

그렇게 되면 C는 A와 연결이 가능하게 된다.

그 후에는 또 랜덤으로 소켓의 포트번호가 생성되고 나서 새로운 스레드로 만들어지고 그리고 나서 5000번인 main 스레드와의 연결이 또 끊기게 된다. 왜냐하면 새로운 사용자의 요청을 받아야 하기 때문이다.

C와 5002이 연결된다. 통신한다. 이런 방식이 바로 소켓 통신이다.

소켓의 장점은 연결이 끊어지지 않는다. 연결되고 나서 연결된 사람은 같은 사람으로 계속 인식하지만 이렇게 되면 단점은 부하가 많아지게 돼서 느려질 수 있다.

그래서 Http 통신 방식(문서를 전달하는 통신)은 계속 이어지는 소켓 통신 방식이 아닌 지속시키지 않고 연결을 끊어버리는 Stateless 방식을 사용한다.

문서를 요청 받으면 문서를 돌려주고 연결을 끊어버린다.

그렇기 때문에 장점은 부하가 적다. 그렇지만 단점으로는 항상 새로운 사람으로 인식한다.

이러한 단점들을 보완하면서 만들어진 것이 Web 서버다.

웹 서버(Web Server)란?

🔗 전에 자세히 정리 한 것 : https://velog.io/@prettylee620/CS-지식-서버관련

웹 서버는 클라이언트로부터 요청을 받으면 해당 요청에 대한 처리를 수행하고, 클라이언트에게 응답을 전송하는 역할을 한다. 이때, 각 클라이언트의 상태를 기억하지 않고, 각 요청에 대해 독립적으로 응답하는 특성을 갖는다. 이러한 특징은 "Stateless(상태 없음)"한 특성을 가진다고 표현된다.

웹 서버는 HTTP 프로토콜기반으로 동작하며, 클라이언트가 요청을 보내면 서버는 해당 요청에 대한 응답을 생성하여 반환한다. 서버는 각 요청에 대해 독립적으로 처리하므로, 클라이언트와의 연결을 지속적으로 유지하지 않는다. 이러한 특성은 간단하고 빠른 응답을 가능하게 하며, 많은 클라이언트에 대한 처리를 효율적으로 수행할 수 있다.

즉, 정리하자면

  • 웹 서버는 클라이언트로부터 요청을 받아 해당 요청에 대한 처리를 수행하고, 클라이언트에게 응답을 전송하는 역할을 하는 소프트웨어 또는 하드웨어

  • 웹 서버는 주로 정적인 콘텐츠(HTML 페이지, 이미지 파일 등)을 제공하며, 동적인 요청에 대한 처리는 웹 애플리케이션 서버(웹 애플리케이션을 실행하는 서버)에 위임할 수 있다.

  • Apache, Nginx, Microsoft IIS 등이 웹 서버의 예시

🤔 그렇다면 다른 간접 연계 방식인 웹 서비스랑은 다른거겠지?

Yes

웹 서비스는 웹 서버의 기능을 넘어서, 네트워크를 통해 서로 다른 시스템 간에 상호작용하기 위한 표준화된 방법을 제공하는 서비스를 의미한다. 웹 서비스는 주로 XML 또는 JSON 형식의 데이터를 교환하며, 서로 다른 플랫폼 간에 통신을 가능하게 하는 기술적인 규격을 포함한다. RESTful API나 SOAP 등이 웹 서비스의 예시

간단하게 말하면, 웹 서비스네트워크 상에서 서로 다른 시스템 간에 표준화된 방법으로 통신하기 위한 규격을 나타내는 것이며, 웹 서버는 클라이언트의 요청을 받아 정적인 콘텐츠를 제공하거나 동적인 처리를 위해 애플리케이션 서버로 요청을 전달하는 역할을 하는 소프트웨어 또는 하드웨어를 나타낸다.

HTTP란?

예전에 수기 문서로 논문을 찾던 시절 자신의 논문을 업로드에서 다른 사람들이 논문 쓸 때 겹치지 않게 참고하라고 올린다. 그 올린 것을 받아오기만 하면 돼서 연결이 지속될 필요 x ⇒ HTTP

  • 웹 서비스를 위해 이용되는 프로토콜로 보안성이 안 좋음

  • 암호화되지 않는 상태로 웹 볼 때 사용되는 프로토콜

  • 인터넷에서 하이퍼텍스트(hypertext) 문서를 교환하기 위하여 사용되는 통신규약

Last updated