[Spring]웹 애플리케이션 HTTP 응답 상태코드 웹 개발 트렌드 백엔드 프론트엔드


응답 상태 코드

 

1. 엔터프라이즈 애플리케이션(Enterprise Application) 개발의 복잡성

 

1) 비즈니스 로직의 복잡함

2) 수많은 사용자와 데이터를 대응하기 위한 기술적인 제약 조건과 요구사항

3) 복잡함을 다루기 위한

– 프레임워크 => 스프링 프레임워크
– 객체지향 설계
– DI, AOP

2. 웹 애플리케이션 (Web Application)

 

1) 인터넷을 통해 웹 브라우저에서 이용할 수 있는 응용 소프트웨어이다.

2) SNS, 웹 메일, 전자상거래, 인터넷 게시판, 블로그 등 다양한 기능을 제공한다.

3. 웹 애플리케이션의 동작

 

1) 웹 브라우저는 URL을 기반으로 보고 싶은 콘텐츠를 HTTP 요청을 한다.

 

– HTTP 메소드 (GET, POST 등)와 콘텐츠 주소(URL)

– 요청 헤더

– 요청 본문 (쿼리 스트링, 폼 데이터 등)

 

2) 웹 애플리케이션 서버는 요청 처리 후 컨텐츠를 HTTP 응답한다. 여기서 HTTP 응답에 들어있는 콘텐츠는 HTML로 작성한 웹 문서 또는 이미지, 비디오 등이다.

3) 웹 브라우저는 돌려받은 HTTP 응답을 화면에 출력하는 기능을 제공한다.


4. HTTP (Hyper Text Transfer Protocol)

 

1) 웹 브라우저와 웹 애플리케이션 서버가 통신 시 사용하는 프로토콜이다. 이것을 통신 프로토콜, 통신 규약이라고 말하며, 원거리 통신 장비 사이에서 메시지를 주고받는 양식과 규칙의 체계를 말한다.

2) 클라이언트가 요청을 보내면, 서버가 응답하는 단순한 구조로 만들어졌다.

3) 각각의 요청과 응답은 모두 독립적인 요청과 응답이다.

5. HTTP 요청

 

* HTTP 메서드

– 서버에 요청을 보내는 방법으로 총 9가지 명령으로 이루어져있다.

– 클라이언트는 요청 시 메서드를 통해 주어진 자원에 수행하길 원하는 행동을 나타낸다.

– 웹 브라우저는 GET과 POST, 두 가지 메서드를 지원한다.

– GET : 요청 URL에 해당하는 콘텐트(자원)을 가져온다.
– POST : 요청 URL의 콘텐트(자원)의 새로운 데이터를 보낸다.
– PUT : 요청 URL에 변경할 데이터를 보낸다.
– DELETE : 요청 URL의 콘텐트를 삭제한다.
– HEAD : 헤더(메타 데이터)만 가져온다.
– TRACE : 보낸 메시지를 다시 돌려보낸다. (loop-back)
– CONNECT : Proxy에 사용하기 위해 예약된 메서드이다.
– PATCH : 요청 URL에 해당하는 콘텐트 중 일부를 변경한다.
– OPTIONS : 요청 URL에 사용할 수 있는 메서드를 확인한다.




6. HTTP 응답 상태 코드

 

1) 요청에 대한 응답 상태, 웹 브라우저는 상태 코드에 따라 동작 방식을 결정한다.

2) 5가지 유형(1xx, 2xx, 3xx, 4xx, 5xx)의 총 60여 개의 표준 상태 코드가 정의되어 있다.

유형 예시 : 의미
1xx / 조건부 응답 100(계속) : 요청자는 요청을 계속 해야한다.
101(프로토콜 전환)
2xx / 성공 200(성공) : 서버가 요청을 제대로 처리했다.
201(작성됨) : 성공적으로 요청되었으며 서버가 새 리소스를 작성했다.
3xx / 리다이렉션 완료 301(영구 이동
302(임시 이동)
4xx / 클라이언트 오류 400(잘못된 요청) : 서버가 요청의 구문을 인식하지 못했다.
404(찾을 수 없음) : 서버가 요청한 페이지를 찾을 수가 없다. 서버에 존재하지 않는 페이지에 대한 요청이 있을 경우 서버가 이 코드를 제공한다.
5xx / 서버 오류 500(내부 서버 오류) : 서버에 오류가 발생하여 요청을 수행할 수가 없다.
503(서비스를 사용할 수 없음) : 현재 서버를 사용할 수 없다. 대개는 일시적인 상태이다.

7. 웹 프로그래밍

 

1) FrontEnd : 클라이언트 중심의 프로그래밍(HTML/CSS/JS) 영역

2) BackEnd : 서버를 구성하며 서비스를 제공하기 위한 서버 프로그래밍 영역

8. 백엔드 중심 개발

 

1) 전통적인 웹 개발 모델

2) 서버에서 모든 것을 담당하는 방식이다. 특히 자바 서블릿/JSP가 가장 인기 있는 백엔드 개발 기술이다.

 

3) 장점

– 서비스 연동에 필요한 다양한 서버 환경에 대응할 수 있다.
– 기술이 안정적이고 검증되었다.
– 기존에 개발된 시스템이 많고 레거시 시스템은 오래동안 유지되어있다.

 

4) 단점

– 서버에 화면 갱신의 과도한 요청이 발생 시 문제가 될 수 있다.
– 기존의 대규모 구축된 모노리틱 아키텍쳐 방식으로 서버가 적용이 된다.
=> MSA (Micro Service Archithecture) 방식이 확산되고 있다.




9. 프런트엔드 중심 개발

 

1) 클라이언트에서 HTML을 가지고 있거나, 서버로부터 화면 구성에 필요한 데이터만 자바스크립트(NodeJS)로 받아와서 화면을 조합해 보여준다. CSR (Client Side Rendering)이라고 한다.

 

2) 장점

– 필요한 부분의 데이터만 갱신이 가능하기 떄문에 서버로부터 매번 갱신된 전체 화면을 받아올 필요가 없다.
– 실시간 데이터 갱신이 자유롭다.
– SPA (Single Page Application), PWA (Progressive Web Application)등의 구현에 적용할 수 있다.
– React, Vue, Angular 등 다양한 프레임워크를 사용할 수 있다.

 

2) 단점

– 프론트엔드 중심 개발이라 하더라도 데이터 제공을 위한 서버는 필요하다.
– 백엔드 작업은 당연히 존재한다.
– SSR (Server Side Rendering)을 접목해야 한다.


10. 웹 개발 트렌드

 

1) 스프링 프레임워크가 대세

 

– 국내에서는 자바 기반 대표적인 백엔드 개발 방식이 자리를 잡았다.

– 전자정부 프레임워크 역시 스프링 기반이다.

 

2) 전통적인 모노리틱 아키텍처 중심 서버 운영 -> 소규모 분산 운영 방식인 MSA로 전환되기 시작했다.

3) NodeJS, 파이썬을 이용한 서버 프로그램 개발이 늘어나고 있다.

4) on-Premise : 서버를 직접 운영하는 방식 -> Serverless : 서버 작업을 서버 내부가 아닌 클라우드 서비스로 처리

[Spring] 관점 지향 프로그래밍 핵심기능과 부가기능 개요 weaving Aspect 등 관련 용어

 

[Spring] 관점 지향 프로그래밍 핵심기능과 부가기능 개요 weaving Aspect 등 관련 용어

프로그램 다운로드 없이 컴퓨터 자동 종료 및 예약 종료 간단하게 하기 1. 관점 지향 프로그래밍 (AOP : Aspect Oriented Programming) 1) 특정한 함수(핵심기능) 호출 전이나 후에 뭔가 공통적인 처리가 필

ozizo.tistory.com

[Spring]스프링 프레임워크 핵심기술 및 횡단 관심사

 

[Spring]스프링 프레임워크 핵심기술 및 횡단 관심사

1. 스프링 프레임워크 핵심기술 1) Core (DI, IoC) – 스프링의 근간 – 내가 만든 클래스를 스프링이 직접 관리하여 애플리케이션을 동작하게 한다. 2) AOP (Aspect Oriented Programming) – 공통적인 코드를 프레

ozizo.tistory.com

[Spring] 표현식, 표현언어, 영역, Scope, 내장객체

 

[Spring] 표현식, 표현언어, 영역, Scope, 내장객체

1. 소개 1) 표현 언어 (Expression Language) – 변수의 값을 표현식보다 편하게 출력할 수 있게 해 준다. – 표현식 – 스크립트 언어 – JSP의 기본 문법 보완하는 역할을 한다. – 4가지 영역(Scope) 2) EL 기본 사

ozizo.tistory.com