반응형
목차
Web Application
1. Thread
- 애플리케이션 코드를 하나하나 순차적으로 실행하는 것.
- Java에서 main method를 실행하면 main 이라는 이름을 가진 Thread가 실행됨.
- 하나의 Thread는 한 번에 하나의 코드 라인만 수행함.
- 동시 처리가 필요하다면 Thread를 추가적으로 생성해야함.
- Servlet 객체의 호출
- 클라이언트에서 Request가 전달되면 Thread가 Servlet 객체를 호출.
- 단일 요청 - Single Thread
- 클라이언트 요청 및 TCP/ IP 연결
- Thread 할당 후 Servlet 호출.
- 응답 후 Thread 반환.
- 동시 요청 - Single Thread
- 첫번째 요청의 작업을 Single Thread가 수행중.
- 두번째, 세번째 요청이 들어오고 연결을 완료함.
- Thread를 사용하기 위해 작업이 끝날 때까지 대기함.
- 요청이 모두 사라질 때까지(대기 → 작업 수행 → 스레드 반환) 작업을 반복.
- 만약, 첫번째 요청의 작업이 지연되거나 Error가 발생한다면?
- 모든 요청이 Time Out 오류가 발생.
2. Multi Thread
- 하나의 프로세스 안에 여러 개의 스레드가 있는 것.
- 하나의 프로그램에서 두 가지 이상의 동작을 동시에 처리할 수 있음.
- Multi Thread로 동시 요청에 대한 처리를 하는 방법
- 요청마다 새로운 Thread 생성.
- 요청이 들어올 때마다 Thread 생성.
- 요청 처리가 완료되면 Thread 종료.
- 장점
- 동시 요청을 처리할 수 있음.
- 하나의 Thread에 지연 등의 문제가 발생하여도 나머지 Thread는 정상적으로 동작.
- 단점
- Thread 생성에 제한이 없고 생성 비용이 높음.
- 수많은 동시 요청이 발생하면 리소스(Memory, CPU 등) 부족으로 서버가 다운됨.
- Thread를 사용하면 Context Switching 비용 발생.
- Context Switching
- CPU/ 코어에서 실행 중이던 프로세스/ 스레드가 다른 프로세스/ 스레드로 교체되는 것.
- Thread 생성에 제한이 없고 생성 비용이 높음.
- Thread Pool
- 이미 생성된 여러 개의 Thread가 수영을 하며 쉬고 있는 수영장과 같음.
- 요청이 들어오면 Thread Pool에서 Thread를 받아 사용.
- 사용 완료된 Thread는 Thread Pool에 반납.
- 요청마다 새로운 Thread 생성.
[정리]
더보기
- WAS는 Multi Thread를 지원.
- 개발자가 Multi Thread 관련 코드는 고려하지 않아도 된다.
- Multi Thread 환경이므로 싱글톤 객체(Servlet, Spring Bean)는 주의해서 사용해야함.
- Thread Pool
- Thread는 Thread Pool에 보관 및 관리.
- Thread Pool에 생성 가능한 Thread 최대치를 관리.
- Tomcat은 최대 200개 기본 설정.(변경 가능)
- 성능테스트를 통해 적정 Thread 수를 찾으면 됨.
- 장점
- 요청 마다 Thread를 생성하는 단점을 보완.
- Thread가 미리 생성되어 있어서 Thread를 생성, 종료하는 비용이 절약. → 응답이 빠름
- 생성 가능한 Thread 최대치가 제한되어 있어 많은 요청이 들어와도 안전하게 처리가능.
- 단점
- Thread Pool의 최대 Thread 수를 낮게 설정한다면 응답이 지연됨.
- 최대 Thread 수가 너무 높으면 즉, 요청이 많아지면 리소스 부족으로 서버가 다운됨.
3. SSR(Server Side Rendering)
- 서버에서 동적으로 HTML을 만들어 클라이언트에게 제공하는 기술.
- 백엔드 개발자 영역에 속하며 Java에서는 JSP, Thymeleaf가 대표적으로 사용됨.
- SSR 동작 흐름
- 서버(WAS)에 HTML을 요청.
- 서버(WAS)에서 로직을 거친 후 DB를 조회.
- 조회 결과를 기반으로 HTML을 동적으로 생성.
- 생성된 HTML을 응답
- SSR의 장단점
- 장점
- 초기 페이지 로드 시 서버에서 완전히 렌더링된 HTML을 반환하여 첫 페이지 로딩이 빠름.
- 검색 엔진 크롤러가 완전한 HTML을 즉시 수집할 수 있어 SEO에 유리함.
- 단점
- 모든 요청에 대해 서버가 페이지를 렌더링해야 하므로, 높은 트래픽 상황에서 서버의 부하가 크게 증가할 수 있음.
- 초기 페이지 이외의 페이지들도 렌더링 후 반환되기 때문에 속도가 느림.
- SEO(Search Engine Optimization)
- 검색 엔진에서 상위에 노출될 수 있도록 최적화하는 과정.
- 장점
4. CSR(Client Side Rendering)
- 웹 브라우저에서 자바스크립트를 사용해 동적으로 HTML을 생성해서 적용하는 기술.
- 웹을 모바일 앱 처럼 부분 부분 변경할 수 있게 해줌.
- 프론트엔드 개발자 영역에 속하는 React, Vue가 대표적으로 사용됨.
- CSR 동작 흐름
- HTML을 요청한다. 비어있는 HTML을 응답받는다. JS가 존재하는 주소 링크를 응답함.
- 자바스크립트(클라이언트 로직, 렌더링 포함)를 요청함.
- HTTP API 요청을 하고 화면에 필요한 데이터를 JSON 형태(JSON이 아니어도됨)로 응답받음.
- 응답받은 JSON 데이터로 HTML을 동적으로 그림.
- CSR의 장단점
- 장점
- 클라이언트 측에서 렌더링하므로 사용자 인터랙션(상호작용)에 빠르게 반응 가능.
- 초기 로딩 후에는 서버와의 통신 없이 빠르게 페이지 간 전환 가능.
- 단점
- 초기 로딩 시 필요한 모든 자바스크립트 파일을 다운로드하고 실행해야 하므로, 초기 로딩 시간이 긺.
- 검색 엔진 크롤러가 자바스크립트를 제대로 실행하지 못하면 SEO에 불리할 수 있음.
- 장점
반응형
'스파르타 내일배움캠프 > TIL(Today I learned)' 카테고리의 다른 글
25.04.02 TIL - Spring Framework, Spring Boot, Gradle (2) | 2025.04.02 |
---|---|
25.04.01 TIL - 프레임워크, 라이브러리, Annotation, Lombok (2) | 2025.04.01 |
25.03.28 TIL - Web Application(1) (3) | 2025.03.28 |
25.03.27 TIL - HTTP(3) (2) | 2025.03.27 |
일정 관리 앱 프로젝트 회고 (2) | 2025.03.26 |