스프링(Spring) 및 자바(JAVA)

스프링 부트 개념 정리 - 이론08

Dev.99_tale 2025. 3. 9. 18:24

스프링부트 동작 원리 – 내장 톰캣과 HTTP 통신 개념 잡기

이번 글에서는 스프링부트가 어떻게 동작하는지, 그리고 내장 톰캣(Tomcat)과 HTTP 통신의 원리에 대해 쉽게 정리해보겠습니다.


 스프링부트는 내장 톰캣을 가진다

"별도로 톰캣을 설치할 필요 없이, 스프링부트 실행만 하면 자동으로 톰캣이 동작한다!"

📌 톰캣(Tomcat)이란?

  • 자바 웹 애플리케이션을 실행할 수 있는 웹 서버
  • 서블릿(Servlet) 기반의 요청(Request)과 응답(Response)을 처리
  • 스프링부트는 톰캣을 내장하고 있어, 별도 설치 없이 실행 가능

📌 "스프링부트는 톰캣을 내장하고 있어, 단순히 실행만 하면 웹 애플리케이션이 바로 동작한다!"


 톰캣과 소켓(Socket) 개념

"서로 다른 시스템이 네트워크를 통해 데이터를 주고받으려면, 운영체제가 제공하는 소켓(Socket)을 사용해야 한다!"

🔹 소켓이란?

  • 네트워크에서 데이터를 주고받는 창구 역할
  • 통신을 위해 IP 주소 + 포트번호가 필요
  • 소켓을 이용하면 두 개 이상의 시스템이 데이터를 주고받을 수 있음

📌 "소켓을 통해 서로 다른 장치 간의 통신이 가능하다!"


🔹 소켓 통신의 동작 원리

1️⃣ A → B로 메시지를 보내려면?

  • 운영체제가 제공하는 소켓(Socket)을 오픈해야 함
  • 포트 번호를 지정하여 연결을 수립
  • 예: 5000번 포트를 사용해 연결

2️⃣ C가 추가로 B와 통신하려면?

  • 새로운 포트(5001번)를 사용하여 연결
  • A(5001번)과 C(5002번) 두 개의 연결이 동시에 유지됨

3️⃣ 새로운 요청이 올 때마다 새로운 소켓 & 쓰레드 생성

  • A와 B는 5001번 포트에서 통신
  • C와 B는 5002번 포트에서 통신

📌 "소켓은 포트번호를 기반으로 네트워크 통신을 가능하게 한다!"


 쓰레드(Thread)와 성능 문제

"새로운 연결이 발생할 때마다 새로운 쓰레드를 생성하여 동작한다!"

🔹 쓰레드란?

  • 하나의 프로그램(프로세스) 안에서 동시에 여러 작업을 수행할 수 있도록 함
  • CPU가 시간을 쪼개서 여러 작업을 동시에 실행하는 것처럼 보이게 함

📌 "쓰레드를 사용하면 동시에 여러 사용자를 처리할 수 있지만, 너무 많아지면 부하가 생길 수 있다!"


 HTTP 통신 – 웹이 동작하는 방식

"HTTP는 연결을 유지하지 않는(stateless) 방식으로, 요청이 끝나면 연결을 끊는다!"

📌 HTTP의 특징
 Stateless(무상태성) – 요청(Request)과 응답(Response)이 끝나면 연결 종료
 문서 전송 중심 – 원래 목적은 HTML 문서 전송
 속도가 빠름 – 불필요한 연결을 유지하지 않음

📌 "HTTP는 요청이 끝나면 연결을 끊어버리는 방식이라 서버 부하가 적다!"


 HTTP의 탄생 배경 – CERN 연구소와 팀 버너스리

"HTTP는 원래 문서를 효율적으로 공유하기 위해 만들어졌다!"

🔹 문제 상황

  • CERN 연구소에는 전 세계의 과학자들이 모여 연구
  • 논문을 작성하려면 관련 논문을 모두 검토해야 함
  • 각자의 컴퓨터에 저장된 논문을 직접 찾아가야 했음 (비효율적)

🔹 해결 방법

  • 팀 버너스리(Tim Berners-Lee)  각 컴퓨터를 하나의 서버에 연결
  • 모든 논문을 중앙 서버에 저장 & 검색 가능하도록 만듦
  • 필요한 논문만 요청(HTTP 요청)해서 가져오도록 설계

📌 "HTTP는 문서를 빠르게 공유하기 위한 목적으로 개발되었다!"


 HTTP와 블록체인 – 탈중앙화 흐름

"HTTP 창시자 팀 버너스리는 현재 중앙집중화를 막고, 데이터를 분산화하는 연구를 진행 중!"

📌 블록체인과 HTTP의 공통점  분산화 (Decentralization) – 특정 기관이 모든 데이터를 통제하지 않음
 데이터의 투명성 – 누구나 데이터에 접근 가능
 네트워크를 통한 연결 – 중앙 서버 없이 데이터 공유

📌 "HTTP의 창시자는 데이터를 중앙에서 통제하지 않고, 탈중앙화된 웹을 만들려고 한다!"


🔥 핵심 정리

개념 설명
스프링부트 내장 톰캣을 포함하고 있어 바로 실행 가능
톰캣(Tomcat) 자바 웹 애플리케이션을 실행하는 웹 서버
소켓(Socket) 네트워크에서 데이터를 주고받는 창구
쓰레드(Thread) 새로운 연결마다 생성되어 독립적인 작업 수행
HTTP 연결을 유지하지 않는 (stateless) 방식의 통신
팀 버너스리 HTTP를 창시하여 문서를 공유하는 시스템을 개발
탈중앙화 HTTP 창시자가 현재 블록체인과 유사한 방식으로 연구 진행 중

📢 마무리

스프링부트는 내장 톰캣을 활용하여 웹 애플리케이션을 쉽게 실행할 수 있도록 지원합니다.
톰캣은 소켓과 쓰레드를 활용해 여러 사용자의 요청을 처리하며,
HTTP는 연결을 유지하지 않고 요청/응답 후 끊어버리는(stateless) 방식을 사용합니다.

이제 HTTP의 원리 HTTP 요청 & 응답을 처리하는 방식!

 

https://getinthere.tistory.com/9

 

스프링부트 with JPA 1강 - 스프링이란!

1. 스프링이란? 스프링은 프레임워크이다. 스프링은 오픈소스이다. 스프링은 IoC 컨테이너를 가진다. 스프링은 DI 를 지원한다. 스프링은 엄청나게 많은 필터를 가지고 있다. 스프링은 엄청나게

getinthere.tistory.com