[TIL] 2025-01-21_기초_Spring

Yuri·2025년 1월 21일

TIL

목록 보기
33/59

✏️ 기초 Spring 1주차 & 2주차

Web Server

  • HTTP 기반으로 동작하며 정적 리소스(HTML, CSS, JS, 이미지 등)를 제공
  • NGINX, Apache

WAS(Web Application Server)

  • HTTP 기반으로 동작하며 웹 서버의 기능을 포함
  • 추가적으로 코드를 실행해서 Application 로직수행하고 DB와 상호작용 하여 동적 컨텐츠를 생성
  • Tomcat, Jetty, Undertow

👉 WAS는 Web Server의 기능을 포함하지만 실제 웹 시스템에서는 기능을 분리하여 구성한다. (WAS만 구성하는 경우의 서버 과부하 방지)

장점

  • 효율적으로 리소스를 관리할 수 있다.
    • 정적 자원이 많이 사용된다면 Web Server를 ScaleOut 한다.
    • Application 관련 자원이 많이 사용된다면 WAS를 ScaleOut 한다.
  • 물리적 분리로 보안 강화
  • 여러 대의 WAS 연결 가능
    • Load Balancing을 위한 Web Server를 사용
    • fail over(장애 극복), fail back 처리에 유리
    • 대용량 웹 어플리케이션의 경우, Web Server와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응

👍 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server와 WAS를 분리한다.

✏️ Scale Out
같은 사양의 서버(인스턴스)를 여러 대 배치한다.
동시에 더 많은 사용자 요청을 처리할 수 있도록 만든다.

Web Service Architecture

서버는 클라이언트의 요청을 받아 응답한다.

  1. WAS는 Multi Thread를 지원한다.

    • 개발자가 Multi Thread 관련 코드는 고려하지 않아도 된다.
    • Multi Thread 환경이므로 싱글톤 객체(Servlet, Spring Bean)는 주의해서 사용해야한다.

    → 🚨 공유변수 사용 주의

✏️ 싱글톤(Singleton)
객체를 하나만 생성하여 생성된 인스턴스를 공유하여 사용하는 것을 의미한다. 특정 클래스의 인스턴스가 여러개 생성되지 않도록 하여 자원의 낭비를 방지하고, 인스턴스를 공유함으로써 상태를 일관되게 유지하기 위함이다.

  1. Thread Pool
    • Thread는 Thread Pool에 보관 및 관리한다.
    • Thread Pool에 생성 가능한 Thread 최대치를 관리한다. Tomcat은 최대 200개 기본 설정이 되어있다.(변경 가능)
      • 성능테스트를 통해 적정 Thread 수를 찾으면 된다.
    • 장점
      1. 요청 마다 Thread를 생성하는 단점을 보완하였다.
      2. Thread가 미리 생성되어 있어서 Thread를 생성, 종료하는 비용이 절약된다. → 응답이 빠름
      3. 생성 가능한 Thread 최대치가 제한되어 있어서 많은 요청이 들어와도 안전하게 처리할 수 있다.
    • 단점
      1. Thread Pool의 최대 Thread 수를 낮게 설정한다면 응답이 지연된다.
      2. 최대 Thread 수가 너무 높으면 즉, 요청이 많아지면 리소스 부족으로 서버가 다운된다.
    👉 가장 효율적인 동시 요청 처리 방식

Spring Framework

Java Application Framework로 엔터프라이즈 애플리케이션 개발에 주로 사용

  • Spring Framework는 서버 성능, 안정성, 보안 문제를 고도화된 수준으로 해결해준다.
  • 개발자들은 복잡한 문제를 해결하는 대신, 비즈니스 로직 개발에 집중할 수 있게 되었다.

Spring Boot

📚 Spring Framework를 기반으로 하여 간편하고 신속하게 애플리케이션을 개발할 수 있도록 도와주는 도구

Spring Boot의 특징

  • 자동 구성(Auto-configuration) 기능을 제공하여, 개발자가 복잡한 설정을 직접 처리할 필요 없이 기본 설정으로도 비즈니스 로직에 집중할 수 있게 해준다.
  • 내장 WAS(Tomcat)를 제공하여, 애플리케이션을 별도의 서버 설정 없이 바로 실행할 수 있다.
  • spring-boot-starter-web빌드 관리 도구에 추가하면 웹 애플리케이션에 필요한 모든 종속성(라이브러리)과 설정이 자동으로 구성된다.
  • 라이브러리들의 버전을 명시하지 않아도 호환 가능한 버전들을 찾아 자동으로 설정해준다

Web Servlet

  • Spring MVC
    안정적이고 동기식 프로그래밍 모델을 기반으로 한 웹 애플리케이션 개발에 널리 사용

📝 TO-DO

  1. 기초 Spring 수강
  2. 강의 노트 작성

💭 Diary

본격적으로 웹 개발에 들어가기 전 필수 네트워크 지식, Web 구조 전반, Spring Framework를 사용하기 위한 기본 개념을 이론 강의로 학습하였다. 모두 중요한 내용들이라 강의노트를 적으면서 집중하며 들었는데 강의 시간 내내 집중은 역시 힘들다. (모르는 내용은 빨리빨리 넘어가려고 하지만 애매한 완벽주의 때문에 그게 어렵다.😭) 과제를 진행하기 전 최대한 빠르게 수강해야겠다.

🔗 참고자료
[Web] Web Server와 WAS의 차이와 웹 서비스 구조

profile
안녕하세요 :)

0개의 댓글