분류 전체보기 56

[Web] HTTP 메서드 (1) GET / POST 방식 + 멱등성, HTTP 요청바디

보통 자원을 조회하거나 검색할 때는 GET 방식을, 자원을 생성(등록)하는 경우 POST 방식을 사용한다. 하지만 언제나 그런 것은 아니다. 그렇기 때문에 상황과 기능에 맞는 메서드를 지정하기 위해서 이번에는 GET과 POST 메서드의 상세한 특징에 대해 주요 키워드와 함께 살펴보고자 한다. '안전한' 메서드와 '멱등성' GET 메서드를 사용할 경우에는 해당 요청이 '안전한 요청'이어야 한다. 여기서 '안전하다'는 의미는 해당 요청이 서버의 자원 상태를 변경하지 않는 것을 말한다. * HTTP/1.1 명세 문서를 참고하면, GET, HEAD, OPTIONS가 각각 안전한 메서드라고 나와 있다. GET 메서드 API를 '안전한 메서드'로 만드는 것도 매우 중요하다. 왜냐하면 GET 메서드는 특히 웹 브라우..

Web/Basic 2024.02.27

[Web] 웹 브라우저와 서버의 상호작용 방법

웹 브라우저가 서버와 상호작용하는 방법에는 크게 네 가지가 있다. 1. URL을 통한 접속 2. 태그를 사용하여 form 제출 3. XHR을 사용한 AJAX 요청 4. 웹 소켓을 통한 연결 URL을 통한 접속 - GET 사용자는 주로 웹 브라우저에서 직접 URL을 입력하여 웹 페이지를 방문하거나 태그가 걸려 있는 링크를 통해 접근한다. 예) 이 URL을 통한 접속에는 중요한 특징이 있는데, 바로 GET 메서드를 사용한다는 점이다. 웹에서 사용하는 프로토콜인 HTTP는 요청의 종류를 '메서드(Method)로 구분한다. URL을 통한 접속 요청의 경우 항상 그 메서드가 'GET'에 해당한다. 태그를 사용하여 form제출 이 방법은 웹사이트를 이용 시 로그인 창이나 게시글 작성 화면에서 보게 되는 입..

Web/Basic 2024.02.27

[Spring boot] 컨트롤러와 정적 리소스

2024.02.25 - [Framework/Spring, Spring Boot] - [Spring] MVC 아키텍처 [Spring] MVC 아키텍처 MVC 패턴 정리 (Model 2 방식) 웹 애플리케이션을 작성하기 위해서는 아래 두 가지 로직을 구현해야 한다. - 비즈니스 로직 : 실제 업무를 처리하는 부분, 데이터베이스와 연동하여 데이터를 얻어오 bio-logisch.tistory.com 앞서 다룬대로, 클라이언트의 HTTP 요청을 처리하는 곳이 컨트롤러이다. 그렇다면, 정적 리소스는 무엇일까? 정적 리소스를 설명하기 위해 클라이언트가 HTML 문서를 요청하는 경우를 살펴보고자 한다. 클라이언트가 웹 서비스를 이용하려면 직접 눈으로 볼 수 있는 웹 페이지가 필요하다. 이 웹 페이지는 하나의 HTML ..

서블릿(Servlet)과 JSP의 차이 + JVM, JDK, JRE

최근 몇 년 동안 마이크로서비스 아키텍처와 클라우드 네이티브 기술의 발전으로 인해 Servlet을 대체할 수 있는 다양한 대안이 등장했다. 예를 들어, Spring Boot와 같은 경량화된 웹 프레임워크, 웹 서비스로의 전환과 함께 스프링 프레임워크의 RESTful API 지원 등이 있다. 그럼에도 Servlet은 여전히 많은 웹 애플리케이션에서 사용되고 있으며, 특히 Java 기반의 웹 애플리케이션에서는 여전히 중요한 역할을 하고 있다. Servlet은 동적인 웹 컨텐츠를 생성하고 관리하는 데 사용되고 Java 웹 프레임워크인 Spring에서도 활용되고 있다. 오늘은 서블릿과 JSP에 대해 자세히 살펴보고 둘의 차이점에 대해 집중해서 다뤄보고자 한다. 서블릿(Servlet) Servlet은 Server..

[Spring] MVC 아키텍처

MVC 패턴 정리 (Model 2 방식) 웹 애플리케이션을 작성하기 위해서는 아래 두 가지 로직을 구현해야 한다. - 비즈니스 로직 : 실제 업무를 처리하는 부분, 데이터베이스와 연동하여 데이터를 얻어오는 작업 - 프리젠테이션 로직 : 화면을 처리하기 위한 부분, 비즈니스 로직의 결과를 HTML 형태로 클라이언트에게 보여줌 MVC 기반으로 쉽게 웹 애플리케이션을 개발할 수 있도록 해주는 프레임워크로는 스트럿츠와 스프링이 있다. MVC 패턴은 각 컴포넌트의 재사용성과 코드의 가독성을 높이려는 기법이다. 클라이언트의 요청 처리와 응답 처리, 비즈니스 로직을 처리하는 부분을 모듈화시킨 구조로서 처리 작업의 분리로 인해 유지보수와 확장이 용이하고 개발자와 디자이너의 역할과 책임 구분이 명확해진다. 하지만 MVC..

[Network] 쿠키(cookie)와 세션(session)

쿠키와 세션 쿠키(Cookie) 세션(Session) 개념 HTTP의 일종으로 사용자가 어떤 웹 사이트를 방문할 경우, 그 사이트가 사용하는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일. 이름-값 쌍으로 이루어져 있다. HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요시 정보를 참조하거나 재사용할 수 있다. 세션은 일정 기간 동안 같은 사용자(클라이언트)로 부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술이다. 세션은 쿠키를 기반으로 하지만 쿠키와 다르게 서버 측에서 저장하고 관리한다. 특징 - 세션이라는 공간에 클라이언트 정보를 쿠키값으로 저장해두면 로그인을 추가로 해서 DB에 다녀올 필요없이 해당 아이디로 접속가능하다. 클라이언트..

Web/Network 2024.02.25

[JavaScript] var, let, const 비교

var, let, const 비교 var let const Scope Function level Block level 재선언 가능여부 O X 재할당 가능여부 O X var는 function level scope를 가지고 있어 함수 내에서 선언 시 해당 함수 내에서만 유효하다. 또한 함수 내에서는 블록 내외부에 관계없이 유효하다. 하지만 함수 외부에서는 참조가 불가능하다. 만약 var가 함수가 아닌 if문, for문, try/catch문에서 선언될 경우 해당 블록 밖에서도 인식된다. 이와 달리 let과 const는 block level scope를 가지며, 모든 코드블록 내에서 선언될 경우 해당 변수는 블록 내부에서만 유효하다. (블록 외부에서는 참조가 불가능하다.) var는 유일하게 재선언이 가능하며, ..

[Web] 블로킹(blocking)과 논블로킹(non-blocking) + 콜백(callback) 함수

2024.02.23 - [Web/Basic] - [Web] 동기방식과 비동기방식 [Web] 동기방식과 비동기방식 효율적인 데이터 처리와 통신은 웹 개발에서 매우 중요하다. 이번에는 웹 통신 방식에서 중요한 두 개념인 동기 방식과 비동기 방식의 차이를 설명하고, 웹 애플리케이션 개발에서 두 방식의 장 bio-logisch.tistory.com 앞서 다룬 동기/비동기 방식과 관련하여 꼭 알아둬야 하는 개념이 있는데, 바로 블로킹(Blocking)과 논블로킹(Non-blocking)이다. 동기와 비동기가 작업을 요청하는 쪽과 작업을 처리하는 쪽, 두 주체 간의 관계를 이야기하는 용어라면 블로킹과 논블로킹은 작업을 요청하는 쪽에서 통신 시 어떻게 동작하는지를 표현하는 용어라 할 수 있다. 동기 방식으로 통신할 ..

Web/Basic 2024.02.23

[Web] 동기 방식(Synchronous)과 비동기 방식 (Asynchronous)

효율적인 데이터 처리와 통신은 웹 개발에서 매우 중요하다. 이번에는 웹 통신 방식에서 중요한 두 개념인 동기 방식과 비동기 방식의 차이를 설명하고, 웹 애플리케이션 개발에서 두 방식의 장단점에 대해 다뤄보고자 한다. 동기방식 웹의 HTTP 프로토콜 통신방식 중에서 동기(Synchronous)방식이란 작업을 요청하는 쪽과 처리하는 쪽이 서로를 인식하고 상태를 동기화하는 것을 말한다. 클라이언트가 작업을 요청하면 작업을 처리하는 쪽인 서버에서 작업이 완료되어 응답할 때까지 클라이언트는 (다음 요청을 하지 않고) 먼저 보내둔 요청에 대한 응답을 기다린다. 클라이언트는 서버로부터 요청에 대한 응답을 받고 통신이 끊긴 이후 다시 새로운 요청을 하며 통신이 연결되는 흐름으로 작업이 진행된다. 예를 들어, 사용자가 ..

Web/Basic 2024.02.23

[Network] 로드 밸런싱(Load Balancing), 스케일 아웃(Scale out), 스케일 업(Scale up)

이용자가 확장되고 사업의 규모 역시 확장되면서 점차 많은 트래픽을 받는 인프라를 구성하는 방법을 고민해 보았다면, 아래 3가지 개념을 숙지하고 있는 것이 좋다. 먼저, 로드 밸런싱(Load Balancing)은 네트워크나 애플리케이션 서버 등에서 발생하는 트래픽을 여러 대의 서버나 네트워크 장치로 분산시켜서 부하를 균형있게 분산시키는 기술이다. 이를 통해 단일 서버에 가해지는 부하를 분산시켜 서버의 가용성과 성능을 향상시킬 수 있다. 부하 분산을 위해서는 L4, L7 스위치와 같은 네트워크 장비나 엔진엑스(Nginx) 같은 소프트웨어를 사용하여 서버를 구성한다. 이렇게 하면 부하가 분산되는 효과 외에도 스케일 아웃*하기 좋은 환경이 되기 때문이다. 또한 수평적으로 확장할 수 있어 들어오는 트래픽이 늘어나..

Web/Network 2024.02.22