Backend:: MVC 패턴 && WEB, WAS

jahlee·2023년 10월 12일

Backend공부

목록 보기
8/18

MVC 란 ???

MVC 패턴은 Model, View, Controller의 줄임말로써, 사용자와 상호작용하는 S/W를 디자인함에 있어 세가지 요소로 쪼갠 디자인 패턴이다.
디자인 패턴이란 프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것을 정리하여 특정한 "규약"을 통해 쉽게 쓸 수 있는 형태로 만든 것을 말한다.

사용 목적

MVC 패턴의 사용 목적은 서로 분리되어 각자의 역할에 집중할 수 있게끔하여 개발을 하고 그렇게 애플리케이션을 만든다면, 유지보수성, 애플리케이션의 확장성, 그리고 유연성이 증가하고, 중복코딩이라는 문제점 또한 사라지게 되기 때문이다.

  • Model

    애플리케이션의 정보, 데이터의 가공을 책임지며 DB와 상호작용하며 비즈니스 로직을 처리하는 모듈, 컴포넌트를 말한다.
    Model은 사용자가 이용하려는 모든 데이터를 가지고 있어야 하며, View(뷰) 또는 Controller(컨트롤러)에 대해 어떤 정보도 알 수 없어야 한다. 또한 변경이 일어나면 처리 방법을 구현해야 한다.
  • View

    사용자 인터페이스 요소를 뜻하는데, Client에게 보여지는 결과화면을 반환하는 모듈을 말한다.
    Model(모델)이 가지고 있는 데이터를 저장하면 안되고, Model(모델)이나 Controller(컨트롤러)에 대한 정보를 알면 안되며 단순히 표시해주는 역할만 해야 한다. 변경이 일어나면 처리 방법을 구현해야 한다.
  • Controller

    Client 요청이 들어왔을 때 그 입력을 처리하고 어떤 로직을 실행시킬 것인지 Model(모델)과 View(뷰)를 연결해주며 제어하는 모듈을 말한다.
    Model(모델) 또는 View(뷰)에 대한 정보를 알아야 한다. Model(모델) 또는 View(뷰)의 변경을 인지하여 대처를 해야한다.

MVC1

MVC1은 WAS(Web Application Server)에서 모든 파일에 클라이언트가 요청한 로직을 처리하는 경우다.
JSP(Java Server Page)에서 View, Controller의 역할을 담당하며 그 결과를 클라이언트에게 반환한다.
MVC1은 아키텍처가 간단하고 JSP에 거의 모든 로직을 집어넣기 때문에 작은 웹 어플리케이션을 제작할 때는 큰 무리가 없지만 대규모 웹 어플리케이션을 제작하게 될 시 유지보수에 큰 어려움이 따른다.

MVC2

MVC2는 이 MVC1방식을 보완한 아키텍처다.
MVC 패턴에 맞게 Model, Controller, View 부분로 모듈화 됐고 JSP는 로직 처리가 없이 단순히 Client에게 보여지는 뷰만을 담당한다.
이 방식은 각각이 모듈화되어 있어 유지보수가 매우 쉬워지는 큰 장점이 있다.
현재의 웹 어플리케이션은 거의 MVC2방식을 따른다 보면 된다.

Web 서버 란 ??

하드웨어 측면

웹 서버의 소프트웨어와 website의 컴포넌트 파일들을 저장하는 컴퓨터이다. (컴포넌트 파일에는 HTML 문서, images, CSS stylesheets, 그리고 JavaScript files가 있다.) 웹 서버는 인터넷에 연결되어 웹에 연결된 다른 기기들이 웹 서버의 데이터(컴포넌트 파일들)를 주고받을 수 있도록 한다.

소프트웨어 측면

소프트웨어 측면에서, 웹 서버는 기본적으로 웹 사용자가 어떻게 호스트 파일들에 접근하는지를 관리한다. HTTP 서버는 URL(Web addresses)과 HTTP(당신의 브라우저가 웹 페이지를 보여주기 위해 사용하는 프로토콜)의 소프트웨어 일부이다.

Web 서버는 정적인 데이터, 즉 HTML 문서, images, CSS stylesheets, 그리고 JavaScript files과 같은 데이터를 처리할 때 사용한다.

대표적으로 아파치서버가 있다.

WAS(Web Application Server) 란 ???

동적 서버 콘텐츠를 수행하는 것으로 일반적인 웹 서버와 수별이 되며, 주로 데이터 베이스 서버와 같이 수행된다. WAS에서도 정적인 데이터를 처리해 줄 수 있지만, 단순 정적 데이터들만을 처리할 것이면 Web 서버를 사용하는 편이 빠르고 안정적이다. 또한 정적, 동적인 데이터를 동시에 요구하게 된다면 WAS하나로도 처리가 가능하지만 다음과 같은 이유들로 Web 서버와 WAS를 분리하는 것이 좋다.

  • 서버 부하 방지
    WAS와 웹 서버는 분리하여 서버의 부하를 방지해야 한다. WAS는 DB 조회나 다양한 로직을 처리하고, 단순한 정적 컨텐츠는 웹 서버에서 처리해줘야 한다. 만약 정적 컨텐츠까지 WAS가 처리한다면 부하가 커지게 되고, 수행 속도가 느려질 것이다.
  • 보안 강화
    SSL에 대한 암호화, 복호화 처리에 웹 서버를 사용 가능
  • 여러 대의 WAS 연결 가능
    로드 밸런싱을 위해 웹 서버를 사용할 수 있다. 여러 개의 서버를 사용하는 대용량 웹 어플리케이션의 경우 웹 서버와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.
  • 여러 웹 어플리케이션 서비스 가능
    하나의 서버에서 PHP, JAVA 애플리케이션을 함께 사용할 수 있다.

웹 컨테이너

JSP와 Servlet을 실행시킬 수 있는 소프트웨어를 웹 컨테이너 혹은 서블릿 컨테이너라 한다. 웹 서버에서 JSP를 요청하면 톰캣에서 JSP파일을 서블릿 파일로 변환하여 컴파일을 수행하고, 서블릿 수행결과를 웹서버에 전달해 준다.

대표적으로 tomcat이 있다.

JSP 란 ???

JSP 란 JavaServer Pages 의 약자이며 HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다.
JSP 가 실행되면 자바 서블릿(Servlet) 으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고 그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다.

간단하게 html안에 java가 있다는 느낌

Servlet 이란 ??

서블릿이란 웹페이지를 동적으로 생성하기 위해 서버측 프로그램을 말한다.
이는 자바 언어를 기반으로 만들지며 웹 어플리케이션 서버 ( Web Application Sever ) 위에서 컴파일 되고 동작한다.

java안에 html이 있는 느낌

Javabean 이란???

JSP에서 객체를 가져오기 위한 기법으로 데이터 전달 오브젝트 파일 DTO(Data Transfer Object)라고도 한다.
자바로 작성된 컴포넌트들 즉, 클래스(Class)를 일반적으로 말한다.
JSP 프로그래밍에는 DTO(Data Transfer Object)나 DAO(Data Access Object)클래스의 객체를 JSP페이지에서 사용하기 위해 사용한다.

사용 목적

JSP 페이지가 화면 표현 부분과 로직들이 같이 존재하여 복잡한 구성을 가급적 피하고, JSP 페이지의 로직 부분을 분리해서 코드를 재사용함으로써 프로그램의 효율을 높이기 위해서 사용한다.

참조

https://code-lab1.tistory.com/199
https://helloworld-88.tistory.com/71
https://developer.mozilla.org/ko/docs/Learn/Common_questions/Web_mechanics/What_is_a_web_server

0개의 댓글