Java Spring (1)

taehoyoon·2023년 8월 1일
0

Java Spring 공부

목록 보기
1/4
post-thumbnail

일반적인 웹 서비스의 배포 구조 (Java)

1. 사용자 브라우저

사용자의 웹 서비스 접근점, 요청을 전송하고 결과를 표시

웹 서비스의 가장 앞단에 위치하는 사용자 인터페이스(UI)이다. 사용자의 요청을 받아 웹 서버로 전달하고, 웹 서버로부터 받은 응답을 사용자에게 보여준다.


2. 물리적 컴퓨터

웹 서버와 웹 애플리케이션 서버를 호스팅하는 물리적 또는 가상의 컴퓨팅 플랫폼

웹 서버와 웹 애플리케이션 서버가 실행되는 물리적 또는 가상의 컴퓨터이다. 이 컴퓨터는 인터넷에 연결되어 있어야 하며, 높은 트래픽을 처리할 수 있는 충분한 리소스를 갖추고 있어야 한다.

  • 회사 내부에 서버를 두고 관리하는 온프레미스(On-premise) 방식이거나
  • AWS, Google Cloud Platform, Azure 등의 클라우스 서비스가 될 수 있다.

3. Web Server

클라이언트의 HTTP 요청을 처리하고, 필요시 웹 애플리케이션 서버로 요청을 전달

웹 서버는 사용자로부터의 HTTP 요청을 받아 정적인 컨텐츠(HTML, CSS, JavaScript, 이미지 파일 등)를 반환한다. 동적인 컨텐츠가 요구되는 경우, 웹 서버는 해당 요청을 웹 애플리케이션 서버로 전달한다.

Apache

가장 널리 사용되는 웹 서버 중 하나, 다양한 모듈을 통해 기능 확장 가능

Apache HTTP Server는 가장 널리 사용되는 웹 서버 중 하나로, 여러 가지 모듈을 통해 기능을 확장할 수 있다.

NginX

동시 요청 처리에 탁월한 웹 서버, 로드 밸런서나 리버스 프록시 역할도 수행

NginX는 동시 연결을 높은 성능으로 처리할 수 있는 웹 서버로서, 로드 밸런서나 리버스 프록시 서버로도 널리 사용된다.


4-1. 파일 시스템

웹 서비스에서 필요한 정적 파일들을 저장하고 관리하는 공간

HTML, CSS, JavaScript 파일뿐만 아니라 이미지, 비디오 등의 미디어 파일도 저장할 수 있다. 경우에 따라 Web Application Server에 속해 있을 수 있다.

4-2. Web Application Server

동적 컨텐츠를 처리하고, 데이터베이스와의 연동 등 백엔드 로직을 담당

Web Application Server(WAS)는 동적인 웹 컨텐츠를 처리한다. 사용자의 요청에 따라 데이터베이스에 접근하거나, 비즈니스 로직을 처리하거나, 결과를 동적으로 생성해서 웹 서버로 반환한다.

Tomcat

Java 웹 애플리케이션을 실행하기 위한 웹 애플리케이션 서버, 서블릿 컨테이너 역할

Tomcat은 Java Servlet과 JSP(Java Server Pages)를 실행하는데 사용되는 웹 애플리케이션 서버이다. WAS의 역할을 하며, Java 웹 애플리케이션(WAR 파일)을 배포하는데 주로 사용된다. Tomcat은 간단한 웹 애플리케이션부터 복잡한 웹 서비스에 이르기까지 다양한 환경에서 사용할 수 있다. 또한 Spring Boot 애플리케이션에서는 내장 서버로서 Tomcat을 주로 사용한다.

❗️ Spring Boot를 사용하는 경우, Web Application Server(Tomcat)이 Spring Boot 안에 포함되어 있다고 한다


5-1. Java Web Application (WAR 파일)

Java를 이용해 개발된 웹 애플리케이션, 보통 WAR 파일 형태로 배포

Java 웹 애플리케이션은 WAR(Web Application Archive) 파일 형태로 배포된다. WAR 파일은 웹 애플리케이션에 필요한 JSP, Servlet, Java 클래스, XML, 라이브러리 등을 포함하고 있다.

5-2. Spring Boot (JAR 파일)

Spring 프레임워크를 기반으로한 웹 애플리케이션, 실행 가능한 JAR 파일로 패키징되어 배포

Spring Boot는 Java의 프레임워크 중 하나로, 웹 애플리케이션 개발을 간소화하고 빠르게 할 수 있게 돕는다. Spring Boot 애플리케이션은 일반적으로 내장 Tomcat을 포함하는 실행 가능한 JAR 파일로 패키징되어 배포된다.


Java 웹 애플리케이션과 Spring Boot 구조

JAR (Java ARchive)

Java 코드를 빌드한 결과물로서, 압축된 파일 형태를 가진다.

이 JAR 파일 하나가 하나의 실행 가능한 애플리케이션을 의미할 수 있다.


일반적인 웹 애플리케이션의 구조

웹 애플리케이션은 일반적으로 세 가지 주요 계층으로 구성된다.

1. Presentation Layer

  • 사용자와 직접적으로 맞닿는 부분으로, 웹 페이지를 통해 사용자의 입력을 받고 사용자에게 결과를 보여준다.

2. Logic Layer

  • 요청을 처리하고 결정을 내리는 부분으로, 비즈니스 로직을 처리하고 데이터 레이어와의 연동을 관리한다.

3. Data Layer

  • 데이터를 저장하고 불러오는 부분으로, 일반적으로 데이터베이스와 소통하는 역할을 한다.

Spring Boot의 구조

Spring Boot는 위의 계층 구조를 MVC(Model-View-Controller) 패턴으로 구현하는데, 이때 아래와 같은 컴포넌트들을 사용한다.

Dispatcher Servlet

  • Spring MVC 프레임워크의 핵심 요소로, HTTP 요청을 받아서 적절한 컨트롤러에게 요청을 전달하고, 컨트롤러가 반환한 결과를 HTTP 응답으로 변환해 클라이언트에게 전송하는 역할을 한다.

Controller

  • 사용자의 HTTP 요청을 실제로 처리하는 컴포넌트로, 요청에 대한 로직을 실행하고 결과를 반환한다. 각 컨트롤러는 특정 URL 경로를 처리하는 하나 이상의 메소드를 가진다.

Service

  • 비즈니스 로직을 포함하는 계층으로, 데이터의 가공 및 처리 등의 역할을 담당한다. 컨트롤러는 이 서비스 계층을 통해 비즈니스 로직을 처리하고 데이터를 저장하거나 조회한다.

Repository

  • Data Layer의 역할을 하며, 데이터베이스와 소통한다. CRUD(Create, Read, Update, Delete) 연산을 수행하는 메소드들을 주로 정의한다.

Spring IoC

IoC (Inversion of Control)

제어 역전,프로그램의 제어 흐름 구조가 뒤바뀌는 것

일반적인 프로그래밍에서 흐름은 개발자가 작성한 코드에 의해 제어된다. 하지만 IoC를 사용하면 프레임워크나 컨테이너 등이 코드의 흐름을 제어하게 된다.

profile
어흥🦁

1개의 댓글

comment-user-thumbnail
2023년 8월 1일

잘 봤습니다. 좋은 글 감사합니다.

답글 달기