일반적으로 웹 애플리케이션의 아키텍처는 3 계층으로 구성됩니다
1. 프레젠테이션 계층은 웹브라우저를 통해 화면을 보여주는 부분(View)입니다.
2. 비즈니스 계층은 실제 로직이 담기는 부분(Model)입니다.
3. 데이터베이스 계층은 데이터를 저장하는 부분(Contoller)입니다.
4. 애플리케이션을 개발하는 과정에서 비즈니스 로직과 데이터 로직은 서버에 업데이트합니다.
5. 프레젠테이션은 클라이언트에서 관리합니다.
즉 일반적으로 서버는 비즈니스 로직과 데이터 로직을 담고 있으며, 클라이언트는 사용자에게 표현되는 화면을 의미합니다.
웹 애플리케이션의 사용자는 아래와 같은 동작을 통해 행동합니다.
1. 사용자가 클라이언트를 통해 입력 등의 명령을 하고 이를 서버에 '작업 요청'합니다.
2. 서버는 이에 '응답'하여 다시 클라이언트에게 전송합니다.
클라이언트와 서버를 분할 관리하면 다양한 이점이 있습니다
먼저 비즈니스로직과 데이터로직의 변경이 용이하며 이 과정에서 클라이언트는 업데이트를 위하여 굳이 재설치하지 않아도 됩니다.
클라이언트는 사용자의 요청( 버튼의 클릭 등 )을 서버에 보내주는 역할만 수행하고 실제 실행은 서버에서 진행하기 때문입니다.
즉 서버로 전달된 계산 등의 요청을 서버가 처리하여 다시 클라이언트로 전송하고 클라이언트는 그 결과를 화면에 보여주기만 합니다.
하여 DBMS서버 또한 클라이언트가 아닌 서버단에서 접속하여 관리하기에 외부 노출이 차단되어 보안이 강화됩니다.
다중 클라이언트 접속방법
서버 쪽에서 스레드를 사용하지 않으면 서버는 하나의 클라이언트만 접속할 수 있습니다.
그러나 스레드를 사용하면 다중 클라이언트 접속이 가능합니다.
즉 클라이언트가 서버에 요청을 하는 순간 생성한 스레드가 계속해서 생성되며 이를 통해
사용자가 요청한 작업이 동시에 진행하는 것처럼 보이게 됩니다. ( 클라이언트 -> 스레드 -> 서버 )
아키텍처의 변화
클라이언트 ( 프레젠테이션 ) - 서버 ( 비즈니스 로직, 데이터로직 ) 형태에서
클라이언트 ( 프레젠테이션 ) - 애플리케이션서버 - 서버 ( 비즈니스 로직, 데이터로직 )으로 발전했습니다.
아파치, 톰캣등과 같은 웹서버는 사용자의 요청을 받아 컨테이너로 전송하며 이 컨테이너가 흔히 말하는 서블릿입니다.
HTTP 프로토콜과 같은 웹 표준 기술을 활용하여 클라이언트와 서버간의 통신이 진행되어 멀티 스레드를 생성하지 않아도(웹서버에서 담당)되며 클라이언트 애플리케이션을 배포하지 않아도 됩니다. 서버쪽에서 UI가 생성되어 씬 클라이언트 구축이 용이합니다.
&
-
웹 애플리케이션 (Web Application) : 인터넷을 통해 웹 브라우저에서 이용할 수 있는 응용 소프트웨어를 의미
-
웹 애플리케이션 서버 (Web Application Serve) : 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크
-
프레임워크 (Framework) : 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것
-
아키텍처 (Archiecture) : 시스템의 구조, 행위, 뷰 등을 정의하는 개념적 모형을 의미
-
MVC패턴 (Model-View-Controller) : 전통적인 GUI 기반의 애플리케이션을 구현하기 위한 디자인 패턴
-
GUI (Graphical User Interface) : 그래픽 사용자 인터페이스
-
Server : 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템
-
Client : 컴퓨터 네트워크에서 클라이언트는 네트워크를 통하여 서버라는 다른 컴퓨터 시스템 상의 원격 서비스에 접속할 수 있는 응용프로그램 혹은 서비스
-
스레드 (Thread) : 프로세스 내에서 실행되는 흐름의 단위
- HTTP프로토콜 (Hypertext Transfer Protocol) : 인터넷상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜
다중 클라이언트 : https://www.youtube.com/embed/_8D8SStwByw
웹 어플리케이션 : https://www.boannews.com/media/view.asp?idx=53413
웹 어플리케이션 : https://ko.wikipedia.org/wiki/%EC%9B%B9_%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98
웹서버와 WAS의 차이 : https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
시스템 계층구조 아키텍처 : https://m.blog.naver.com/PostView.nhn?blogId=limoremo&logNo=220073573980&proxyReferer=https%3A%2F%2Fwww.google.com%2F
MVC 패턴 : https://m.blog.naver.com/jhc9639/220967034588
멀티 스레드 : https://ko.wikipedia.org/wiki/%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9
서블릿 : https://dhan-description.tistory.com/64?category=893770
'IT > IT' 카테고리의 다른 글
MVC패턴의 이해 (Model-View-Controller) (0) | 2019.12.26 |
---|---|
웹 개발자 로드맵 (0) | 2019.12.26 |
OData( Open Data Protocol ) - 수정중 (0) | 2019.11.19 |
전사적자원관리(ERP) (0) | 2019.11.06 |
빅데이터(BigData) 이해하기 3 (0) | 2019.11.06 |
댓글