Web

    요청 데이터 전송 방법

    데이터 전송 방식 쿼리 파라미터를 통한 데이터 전송 - GET 메시지 바디를 통한 데이터 전송 - POST, PUT, PATCH 정적 데이터 조회 이미지, 정적 텍스트 문서같은 정적 데이터를 요청하는 경우 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회하기 때문에 GET 사용 동적 데이터 조회 주로 조회 조건을 줄여주는 검색 필터, 조회 결과를 정렬하는 정렬 조건이 있는 경우 GET 방식으로 쿼리 파라미터를 이용해 데이터를 전달한다. 서버는 쿼리 파라미터를 기반으로 정렬 또는 필터링해서 결과를 동적으로 생성한다. HTML Form을 통한 데이터 전송 화원가입, 상품 주문, 데이터 변경 등의 경우 주로 POST 방식을 이용하며, 웹 브라우저가 자동으로 HTTP 요청 메시지를 만들어서 서버에 전송..

    HTTP 기초

    HTTP HTTP는 WWW 상에서 정보를 주고받을 수 있는 프로토콜로 HTML, TEXT, 이미지, 음성, 영상, 파일, JSON, XML 등 거의 모든 형태의 데이터를 담아서 전송할 수 있다. 또한 HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜로, 클라이언트인 웹 브라우저가 HTTP를 통해 서버로부터 웹페이지를 요청하면, 서버는 요청에 응답하여 필요한 정보를 해당 사용자에게 전달한다. 역사 HTTP/0.9 GET 메서드만 지원, HTTP 헤더 X HTTP/1.0 메서드, 헤더 추가 HTTP/1.1 가장 많이 사용, 가장 중요한 버전 HTTP/2 성능 개선 HTTP/3 TCP 대신에 UDP 사용, 성능 개선 특징 1. 클라이언트-서버 구조 요청/응답 구조 클라이언트는 서버에 요청을 보..

    동시 요청과 멀티 쓰레드

    쓰레드 애플리케이션 코드를 하나하나 순차적으로 실행하는 것을 쓰레드라고 하며, 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행된다. 쓰레드는 한 번에 하나의 코드 라인만 수행하기 때문에, 동시 처리가 필요하면 쓰레드를 추가로 생성해야 한다. 요청마다 쓰레드 생성 리소스(CPU, 메로리)가 허용할 때까지 동시 요청을 처리할 수 있고, 하나의 쓰레드가 지연되어도 나머지 쓰레드는 정상 동작한다. 하지만 쓰레드 생성 비용은 매우 비싸기 때문에, 고객의 요청이 올때마다 쓰레드를 생성하면 응답 속도가 늦어지고 문맥교환 비용이 발생한다. 또한 고객 요청이 너무 많이 오면 CPU, 메모리 임계점을 넘어 서버가 죽을수도 있다. 쓰레드 풀 요청마다 쓰레드 생성의 단점을 보완한 방법으로, 쓰레드 풀에 ..

    웹 서버와 WAS

    웹 서버와 WAS 웹 서버 HTTP 기반으로 동작하며, 정적 HTML, CSS, JS, 이미지, 영상같은 정적 리소스를 제공한다. 예) NGINX, APACHE WAS 웹 애플리케이션 서버의 약자로, 프로그램 코드를 실행해서 애플리케이션 로직을 수행한다. 서블릿, JSP, 스프링MVC 등의 기술을 통해 동적 HTML, HTTP API(JSON) 등을 제공한다. 기본적으로 웹 서버의 기능도 제공하지만, WAS는 애플리케이션 코드를 실행하는데 더 특화되어 있다. 예) Tomcat 웹 시스템 구성 정적 리소스는 웹 서버가 처리하고 WAS는 애플리케이션 로직 처리를 전담하는 구조로, 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청한다. 정적 리소스가 많이 사용되면 웹 서버를 증석하고, 애플..

    캐시와 조건부 요청

    캐시 캐시가 없으면 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야하기 때문에 브라우저 로딩 속도가 느려진다. 캐시를 적용하면 캐시 유효 시간동안 네트워크를 사용하지 않아도 되므로, 비싼 네트워크 사용량을 줄일 수 있고 브라우저 로딩 속도도 빨라진다. 캐시 유효 시간이 초과되면 서버를 통해 데이터를 다시 조회하고 캐시를 갱신하는데, 이때 다시 네트워크를 통한 다운로드가 발생한다. 검증 헤더와 조건부 요청 캐시 만료 후에도 서버에서 데이터를 변경하지 않으면 데이터를 전송하는 대신에 저장해두었던 캐시를 재사용한다. 이러한 경우 클라이언트와 서버의 데이터가 같다는 사실을 확인할 수 있는 방법이 필요한데, 이때 사용되는 것이 검즘 헤더와 조건부 요청이다. 검증 헤더: 데이터의 최종 수정..

    HTTP 헤더 정보

    HTTP 헤더 HTTP 전송에 필요한 모든 부가정보를 포함하며, 필요시 임의의 헤더를 추가할 수 있다. 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등을 포함한다. 표현 (요청, 응답) 표현은 요청이나 응답에서 전달할 실제 데이터를 말하며, HTTP 헤더를 통해 표현 메타데이터를 전달한다. 표현 헤더는 데이터 유형, 길이, 압출 정보 등 표현 데이터를 해석할 수 있는 정보를 제공한다. Content-Type 표현 데이터의 형식 (미디어 타입, 문자 인코딩) Content-Encoding 표현 데이터의 압축 방식 Content-Language 표현 데이터의 자연 언어 (ko, en, en-US 등) Content-Length 표현 데이터의 길이 (..

    HTTP 상태 코드

    HTTP 상태 코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx (Informational) 요청이 수신되어 처리중 2xx (Successful) 요청 정상 처리 3xx (Redirction) 요청을 완료하려면 추가 행동 필요 4xx (Client Error) 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx (Server Error) 서버 오류, 서버가 정상 요청을 처리하지 못함 2xx - 성공 클라이언트의 요청을 성공적으로 처리 200 OK - 요청 처리 성공 201 Created - 요청이 성공해서 새로운 리소스가 생성됨 - 생성된 리소스는 응답의 Location 헤더 필드로 식별할 수 있다. 202 Accepted - 요청이 접수되었으나 처리가 완료..