분류 전체보기
-
동시 요청 - 멀티 쓰레드 (쓰레드 풀)스프링/스프링 MVC 패턴 2023. 2. 7. 16:13
쓰레드 애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드 자바 메인 메서드를 처음 실행하면 main이라는 이름인 쓰레드가 실행 쓰레드가 없다면 자바 애플리케이션 실행 불가능 쓰레드는 한번에 하나의 코드 라인만 수행 동시 처리가 필요하면 쓰레드를 추가로 생성 쓰레드가 하나면 하나의 쓰레로 여러명이 사용을 해야하기 때문에 첫 번째 클라이언트가 쓰레드를 사용하다 오류가 나면 계속해서 밀리게 된다. 해결하는 방안은 요청마다 쓰레드를 생성해주면 된다. 클라이언트의 요청이 있을 때마다 쓰레드를 새로 만들어주면 고유의 쓰레드를 만들고 요청이 끝나면 쓰레드를 없애면 된다. 요청마다 쓰레드 생성의 장단점 장점 동시 요청 처리 가능 리소스가(CPU, 메모리)가 허용될 때까지 처리가능 하나의 쓰레드가 지연 되어도..
-
서블릿스프링/스프링 MVC 패턴 2023. 2. 7. 15:47
서버에서 처리해야 하는 업무는 굉장히 많다. 서버 TCP/IP 대기, 소켓 연결 Content Type 확인 비즈니스 로직 실행 HTTP 응답 메시지 생성 등 여러 업무를 해야한다. 서블릿에서 지원하는 WAS를 사용하면 비즈니스 로직 실행을 제외한 모든 기능들을 지원해준다. @WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) { // 애플리케이션 로직 } } - urlPatterns(/hello)의 URL이..
-
웹 서버와 웹 애플리케이션 서버스프링/스프링 MVC 패턴 2023. 2. 7. 15:17
웹 서버 - HTTP 기반으로 동작 - 정적 리소스 제공, 기타 부가 기능 - 정적 HTML, CSS, JS, 이미지, 영상 - 예) NGINX, APACHE 웹 애플리케이션 서버(WAS - Web Application Server) - HTTP 기반으로 동작 - 웹 서버 기능 포함+ (정적 리소스 제공 가능) - 프로그램 코드를 실행해서 애플리케이션 로직 수행 동적 HTML, HTTP API(JSON) 서블릿, JSP, 스프링 MVC 예) 톰캣(Tomcat) Jetty, Undertow 웹 서버, 웹 애플리케이션 서버(WAS) 차이 - 웹 서버는 리소스(파일), WAS는 애플리케이션 로직 - 하지만 경계가 모호하고 웹 서버도 프로그램 실행하는 기능을 포함하기도 하며 웹 애플리케이션 서버도 웹 서버의 기..
-
HTTP(7) - HTTP 헤더 (캐시 제어 헤더, 프록시 캐시, 캐시 무효화)스프링/HTTP 기본 지식 2023. 2. 7. 14:16
캐시 제어 헤더 1. Cache-Control : 캐시 제어 2. Pragma : 캐시 제어(하위 호환) 3. Expires : 캐시 유효 기간(하위 호환) 1. Cache-Control Cache-Control: max-age - 캐시 유효시간, 초 단위 Cache-Control: no-cache - 데이터는 캐시해도 되지만, 항상 원 서버에 검증하고 사용 (if-none-modified 등을 통해 항상 검증을 먼저 해야함) Cache-Control: no-store - 데이터에 민감함 정보가 있으므로 저장하면 안됨 (메모리에서 사용하고 최대한 빨리 삭제) 2. Pragma Pragma: no-cache처럼 사용하는데 거의 사용하지 않음 3. Expires expires: Mon, 01 Jan 1990..
-
HTTP(7) - HTTP 헤더 (캐시 검증헤더와 조건부 요청)스프링/HTTP 기본 지식 2023. 2. 7. 13:45
캐시 기본 동작 웹 사이트에서 사진을 요청한다고 가정하면 헤더와 바디 부분을 서버가 만들어서 클라이언트에 보내줄 것이다. 캐시가 없을 때 웹 사이트를 들어가면 같은 용량의 사진 파일을 똑같이 보내줘야 한다. 캐시가 없으면 - 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다. - 인터넷 네트워크는 매우 느리고 비싸다. 캐시 적용 첫 번째 요청 HTTP/1.1 200 OK Content-Type: image/jpeg cache-control: max-age=60 // 캐시가 유효한 시간 Content-Length: 34012 60초 동안은 브라우저 캐시에 정보를 저장 두 번째 요청 서버 네트워크를 탈 필요 없이 캐시에 저장되어 있으면 캐시에서 꺼내서 확인하게 됨 세 번째 요청 ..
-
HTTP(6) - HTTP 헤더 (정보 및 쿠키)스프링/HTTP 기본 지식 2023. 2. 7. 13:11
일반 정보 1. From : 유저 에이전트의 이메일 정보 2. Referer : 이전 웹 페이지 주소 3. User-Agent : 유저 에이전트 애플리케이션 정보 4. Server : 요청을 처리하는 origin 서버의 소프트웨어 정보 5. Date : 메시지가 생성된 날짜 1. From - 검색 엔진 같은 곳에서 사용 - 하지만 잘 사용되지 않음 2. Referer - 현재 요청된 페이지 이전 웹 페이지 주소 - 웹 사이트에서 뒤로가기 버튼을 사용할 때 뒤로가지는 그런 기능을 작동함 - A에서 B로 이동하는 경우 B를 요청할 때 Referer : A를 포함해서 요청 - Referer를 사용해서 유입 경로 분석 가능 (데이터 분석할 때 내 웹사이트를 어느 경로로 들어왔지?? 등으로 사용) - 많이 사용됨..
-
HTTP(5) - HTTP 헤더 (표현헤더, 협상, 전송 방식)스프링/HTTP 기본 지식 2023. 2. 7. 12:36
헤더 분류 General 헤더 : 메시지 전체에 적용되는 정보, 예) Connection: close Request 헤더 : 요청 정보, 예) User-Agent: Mozilla/5.0 (Macintosh; ..) Response 헤더 : 응답 정보, 예) Server: aPACHE Entity 헤더 : 엔티티 바디 정보, 예) Content-Type: text/html, Content-Length: 3423 HTTP BODY 메시지 본문은 엔티티 본문을 전달하는데 사용 - 엔티티 본문은 요청이나 응답을 전달할 실제 데이터 표현 헤더 HTTP/1.1 200 OK Content-Type: text/html;charset=UTF-8 Content-Length: 3423 표현 데이터 ... 표현 헤더는 표현 ..
-
HTTP(4) - HTTP 상태코드스프링/HTTP 기본 지식 2023. 2. 6. 21:25
HTTP 상태 코드 1xx : 요청이 수신되어 처리 중 2xx : 요청 정상 처리 3xx : 요청을 완료하려면 추가 행동이 필요 4xx : 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음 (클라이언트 에러) 5xx : 서버 오류, 서버가 정상 요청을 처리하지 못함 (서버 에러) 각각의 특징 1. 1xx : 요청이 수신되어 처리 중 - 거의 사용하지않음 2. 2xx : 클라이언트의 요청을 성공적ㅇ로 처리 200 OK - 요청 성공 201 Created - 요청 성공해서 새로운 리소스가 생성됨 202 Accepted - 요청이 접수되었으나 처리가 완료되지 않았음 204 No Content - 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음 200이랑 201을 ..