결론 : 네트워크 상에서 서로 다른 종류의 컴퓨터들 간에 상호작용하기 위한 SW 시스템
이것들을 정의하기 위해 XML이나 JSON을 사용한다.
웹 브라우저, 웹 메일등 HTTP를 사용하는 어플리케이션
REQUEST 요청하면 HTML > CSS > 이미지/리소스 > JS 순으로 응답 온다.
파서를 이용해서 HTML을 파싱하고 DOM 트리 구성.
HTML, CSS, 이미지/리소스를 이용하여 렌더링을 한다.
JS는 브라우저에서 실행된다.
쿠키를 사용하여 상태 저장하며 쿠키는 key/value 형태이다.
네트워크에 데이터를 송수신 한다. 예전에는 웹 서버에서 직접 비즈니스 로직을 처리하였지만 요새는 WAS에서 처리하고 웹 서버는 데이터 송수신만 담당하는 역할로 축소되었다.
웹 클라이언트에서 온 요청을 받아서 그대로 WAS에 전달한다. WAS에서 비즈니스 로직 처리.
웹 서버에서 왜 비즈니스 로직을 처리하지 않을까 ?? 내생각에는 ...
웹 서버에서 비즈니스 로직을 처리하지 않으니 문제가 발생할 가능성이 매우 적음.
WAS에서 문제가 발생하더라도 웹 서버가 클라이언트에게 최소한의 응답을 할 수 있다.
웹 어플리케이션과 서버 환경을 만들어 동작시키는 SW.
Appache Tomcat, JBoss, Jetty, Netty 등이 있다.
비즈니스 로직을 처리한다. 비즈니스 로직을 처리한 결과를 DB에 기록한다.
요청에 대한 응답을 하기 위해 DB에서 데이터를 조회한다.
클라이언트 요청에 대한 응답을 처리하기 위해 동적으로 생성한 문서(동적 문서, Template)를 웹 서버에 전달한다.
MVC(Model, Viewer, Controller) 구조를 이룬다.
상태를 기록
MySQL, 오라클, MS-SQL, MongoDB...
WAS, Framework
Spring boot, JSP, PHP, ASP
DB, WAS 성능 모니터링 툴
Scouter APM, Jeniper
예전에는 클라이언트에서 요청이 오면 HTML을 응답하였지만 요새는 그렇게 처리하지 않는다. 클라이언트(iOS, Android, Web Browser)가 다양해졌기에 HTML 만으로는 응답이 충분하지 않다.
요새는 요청이 오면 데이터(JSON)만 응답한다.
데이터를 받은 클라이언트는 자신에게 맞는 HTML을 생성하는데 이떄 JavaScript를 사용하여 생성한다.
HTML 생성을 도와주는 프레임워크 -> React, Vue, Angular
웹 시스템에서 제공하는 기능 C(생성), R(읽기), U(덮어쓰기, 수정), D(삭제).
주로 RESTful API 형태로 기능을 제공한다.
사용자 요청하여 Web Server, WAS, DB까지 거쳐서 응답오는 속도
사용자가 직접 마주하는 계층
사용자 인터페이스 지원. GUI 또는 프론트 엔드라도고 부른다.
사용자 인터페이스와 관계 없는 데이터를 처리하는 로직 등은 포함하지 않는다.
HTML, JS, CSS, 이미지등이 이 계층에서 사용하는 구성 요소이다
요청되는 정보를 어떠한 규칙을 바탕으로 처리, 가공
비즈니스 로직 계층 또는 트랜잭션 계층이라고도 한다.
클라이언트 계층에서 이 계층을 바라 보기에는 서버처럼 동작
데이터 계층에서 이 계층을 바라보기에는 클라이언트처럼 행동
그래서 미들웨어 또는 백엔드라고도 불린다.
사용자 인터페이스와 관계된 로직은 처리하지 않는다.
PHP, Java 등이 이 계층에서 사용하는 언어이다.
데이터베이스와 데이터베이스에 접근하여 데이터를 읽거나 쓰는 것을 관리하는 것을 포함
DBMS가 여기에 해당한다.
데이터 계층 또는 백엔드라고도 부른다.
MySQL, 오라클등이 이 계층에서 사용하는 SW이다.