Spring 공부, 개발 중 Dispatcher-Servlet이라는 용어를 자주 접해 궁금증이 생겨 학습해볼 기회를 가지게 되었습니다.

 

Servlet ?

한 줄 설명

서블릿 (Servlet)은 JAVA를 사용하여 서버에서 동적으로 웹 요청을 처리하고 응답을 생성하는 서버 측 컴포넌트이다.

  • JAVA기반의 Web application 개발에서 핵심 역할
  • JAVA EE(Enterprise Edition)에서 제공하는 웹 컴포넌트
  • 클라이언트로부터 받은 HTTP 요청을 처리한뒤 HTTP 응답을 생성하는 기능을 수행한다.
  • 썬마이크로 시스템에서 JAVA로 웹 개발 하기 위해 만든 기술
    • 요청을 받아 무언가를 처리해 응답하는 Controller역할 수행한다.

Servlet 동작 원리

  1. 클라이언트 요청
    • 클라이언트가 서버로 HTTP 요청을 보낸다.
  2. 서블릿 호출
    • 서버(서블릿 컨테이너 )는 클라이언트의 요청을 적절한 서블릿으로 전달 한다.
    • 이때 서블릿 컨테이너는 서블릿 인스턴스를 생성하거나 이미 생성된 인스턴스를 재사용 한다.
  3. 요청 처리 (Request Handling)
    • 서블릿의 service()메서드는 HTTP Method(GET, POST 등)에 따라 doGet() 또는 doPost()와 같은 메서드를 호출하여 요청을 처리한다.
  4. 응답 생성 (Response Generation)
    • 서블릿은 필요한 데이터를 생성하고
      이를 기반으로 HTML, JSON 등의 형식으로 HTTP 응답을 작성해 클라이언트로 전송한다.
  5. 클라이언트로 응답 전송
    • 서버는 최종적으로 처리 결과를 응답으로 클라이언트에게 전송하고 클라이언트는 웹 브라우저에 이 결과를 표시하게 된다.

Servlet 생명 주기

  • 생성 (Initialization)
    • 서블릿 인스턴스가 처음 요청될 때 init() 메서드가 호출되어 초기화 작업을 수행한다.
  • 요청 처리 (Request Processing)
    • 각 요청에 대해 service() 메서드가 호출되고, 이 메서드는 doGet(), doPost() 등으로 분기되어 요청을 처리한다.
  • 소멸 (Destruction)
    • 서블릿이 더 이상 필요 없을 때 destroy() 메서드가 호출되어 자원을 해제하고 소명한다.

장 * 단점

  • 장점
    • JAVA의 장점인 객체지향적 설계에 용이
    • 서버 측에서 요청을 처리하므로 클라이언트의 성능에 의존하지 않는다.
    • 다양한 라이브러리와 호환이 좋고, 안정성과 보안성도 높은 편이다.
  • 단점
    • 서블릿 단독으로 HTML과 같은 UI를 직접 작성해야 해서 코드가 복잡해질 수 있다.
    • 비즈니스 로직과 프레젠테이션 로직이 혼합되기 쉬워 유지보수가 어려워질 수 있다.

 

반응형

'WEB' 카테고리의 다른 글

[WEB] RESTful API  (0) 2024.11.11

RESTful API 란?

  • 인터넷을 통해 두 컴퓨터 시스템이 데이터를 안전하게 교환하기 위해 사용하는 인터페이스
  • REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹서비스
  • RESTful 웹 API

 

출처) https://velog.io/@cyseok123/API


API ?

  • Application Programming Interface
  • 타 SW 시스템과 통신하기 위해 따르는 규칙을 정의

출처) https://www.erp-information.com/application-programming-interface.html


REST ?

  • REpresentational State Transfer (REST) : 대표 상태 전송
  • API 작동에 조건을 부과하는 SW 아키텍처
  • 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침을 위해 만들어짐
  • 대규모 고성능 통신을 안정적으로 지원

REST API: API 개발자가 REST 아키텍처 스타일을 따르며 API를 개발하는 것

  • REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹서비스라고 한다.

REST 아키텍처 원칙

  • 균일한 인터페이스
    • 모든 RESTful 웹 서비스 디자인의 기본
    • 서버가 표준 형식으로 정보를 전송하는 것
    • REST에서 형식이 지정된 리소스 = 표현
      • 서버 애플리케이션에 있는 리소스의 내부 표현과 다를 수 있다.
      • ex) 서버는 데이터를 text로 저장하되, HTML 표현 형식으로 전송할 수 있다.
    • 4가지 제약조건
      1. 요청은 리소스를 식별을 위해 균일한 리소스 식별자를 사용한다.
      2. 클라이언트는 원하는 경우 리소스를 수정하거나 삭제하기에 충분한 정보를 리소스 표현에서 가지고 있다.
        서버는 리소스를 자세히 설명하는 메타데이터를 전송하여 이 조건을 충족
      3. 클라이언트는 표현을 추가로 처리하는 방법에 대한 정보를 수신하기 위해
        서버는 클라이언트가 리소스를 적절하게 사용할 수 있는 방법에 대한 메타데이터가 포함된 명확한 메시지를 전공한다.
      4. 클라이언트는 작업을 완료하는데 필요한 다른 모든 관련 리소스에 대한 정보를 수신하기 위해
        서버는 클라이언트가 더 많은 리소스를 동적으로 검색할 수 있도록 표현에 하이퍼링크를 넣어 전송한다.
  • 무상태 (Stateless)
    • 서버가 이전의 모든 요청과 독립적으로 모든 클라이언트 요청을 완료하는 통신 방법
    • 클라이언트는 임의의 순서로 리소스를 요청할 수 있으며,
      모든 요청은 무상태이거나 타 요청과 분리된다.
    • 서버는 매 클라이언트 요청을 완전히 이해할 수 있다는 것을 의미
  • 계층화 시스템
    • 클라이언트는 클라이언트-서버 간 다른 승인된 중개자에게 연결할 수 있으며 여전히 서버로부터 응답을 받는다.
    • 서버는 요청을 타 서버로 전달할 수 있다.
    • 클라이언트 요청을 이행하기 위해 함께 작동하는 보안, 애플리케이션 및 비즈니스 로직과 같은 여러 계층으로 여러 서버에서 실행되도록 설계할 수 있다.
    • 계층은 클라이언트에게 보이지 않는 상태로 유지된다.
  • 캐시 가능성
    • 서버의 응답 시간을 개선하기 위해 클라이언트 또는 중개자에 일부 응답을 저장하는 프로세스인 캐싱을 지원한다.
    • 자주 방문하는 페이지는 방문할 때마다 동일한 리소스를 서버로 요청하고 응답받아야 하지만, 첫 응답 이후 정적 리소스를 저장한다면 자주 있는 요청을 아낄 수 있다.
  • 온디맨드 코드
    • 서버는 SW 프로그래밍 코드를 클라이언트에 전송해 클라이언트 기능을 일시적으로 확장하거나 사용자 지정할 수 있다.

RESTful API 장점

확장성

  • REST가 클라이언트-서버 간 상호 작용을 최적화하기 때문에 효율적으로 크기를 조정할 수 있다.
  • 무상태는 클라이언트의 과거 요청 정보를 유지할 필요가 없기에 서버 로드를 제거한다.
  • 잘 관리된 캐싱은 일부 클라이언트-서버 상호 작용을 부분적 또는 완전히 제거한다.

이를 통해 통신 병목 현상을 방지하며 확장성을 지원한다.

유연성

  • 완전한 클라이언트, 서버 분리를 지원하여 각 부분이 독립적으로 발전할 수 있도록 함.
    • 다양한 서버 구성 요소를 단순화 및 분리
  • 서버 애플리케이션 플랫폼 또는 기술 변경은 클라이언트에게 영향을 주지 않는다.
  • 애플리케이션 함수를 계층화하는 기능은 유연성을 더욱 향상 시킨다.
    • 개발자는 애플리케이션 로직을 재작성하지 않고도 DB 계층을 변경할 수 있다.

독립성

  • API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 작성할 수 있다.
  • 클라이언트, 서버 양쪽에 영향을 주지 않고 기본 기술 변경에 용이

출처)

 

RESTful API란 무엇인가요? - RESTful API 설명 - AWS

Amazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다. API Gateway를 사용하면 실시간 양방향 통신 애

aws.amazon.com

 

반응형

'WEB' 카테고리의 다른 글

[WEB] Servlet  (1) 2024.11.12

+ Recent posts