웹 애플리케이션의 이해

jihan kong·2022년 6월 29일
0

Spring MVC

목록 보기
1/12
post-thumbnail

본 시리즈는 인프런 학습 사이트의 김영한 강사님의 java spring mvc - 백엔드 웹 개발 핵심 기술 편을 학습한 내용을 바탕으로 정리하였습니다.


서두

spring의 핵심원리를 학습하고 spring framework를 통해 web을 개발하고 싶다는 생각을 하게 되었다.

그러나 모든 학습이 마찬가지겠지만 개념을 배웠다고 해서 그것을 바로 써먹을 수 있기란 머리가 비상한 사람이 아닌 이상 하기 어려운 것이 사실...

개념을 학습했으니 실생활에 적용하기 위한 응용(심화)을 학습해보자.

spring 웹 개발에 있어서 가장 중요한 것은 뭘까? 여러가지가 있겠지만 무엇보다 mvc 패턴을 알고 있어야 한다.

그러나 웹 애플리케이션이 어떻게 동작하고 어떤 생태계로 이루어져 있는지를 아는 것이 먼저 선행되어야 할 것이다.


웹 애플리케이션의 이해


HTTP 시대

현대의 Web 통신에서는 이른 바 HTTP 시대라고 해도 과언이 아니다. HTTP 메세지에 모든 것을 담아 전송할 수 있기 때문이다.HTML과 텍스트 같은 정적 메시지는 물론이고 이미지, 음성 파일, 영상 파일, JSON, XML 등. 거의 모든 형태의 데이터를 전송하는 것이 가능해졌다.

따라서 이러한 HTTP 기반에서 서버를 구동시키는 것이 일반화되었고, 서버는 용도에 따라 다음의 2가지로 나뉘게 되었다.


웹 서버 (Web Server)

  • HTTP 기반으로 동작
  • 정적 리소스를 제공
  • 정적 HTML, CSS, JS
  • ex. NGINX, APACHE

웹 애플리케이션 서버 (WAS - Web Application Server)

  • HTTP 기반으로 동작
  • 웹 서버 기능 포함 + (정적 리소스 제공 가능)
  • 프로그램 코드를 실행해서 애플리케이션 로직 수행
  • 동적 HTML, HTTP API(JSON)
  • 서블릿, JSP, 스프링 MVC
  • ex. 톰캣(Tomcat) Jetty, Undertow

이처럼 HTTP 기반의 서버는 단순히 정적 리소스만을 제공하는 웹 서버와 정적과 동적 기능을 모두 제공하는 웹 애플리케이션 서버가 있다는 것을 학습했다. 그런데 둘의 관계가 모호한 것 같다. 정확한 차이가 무엇일까?

웹 서버는 정적 리소스(파일) , WAS는 애플리케이션 로직 으로 구성 되어 있다는 것이 가장 큰 차이이다. 사실 웹 서버도 프로그램을 실행하는 기능을 가지고 있고, 웹 애플리케이션도 웹 서버의 기능을 제공한다. 그러나 웹 애플리케이션 서버(WAS)가 좀 더 애플리케이션 코드를 실행하는데 더 특화 되어 있다.


웹 시스템 구성 - WAS, DB

WAS는 정적 리소스와 애플리케이션 로직의 기능을 모두 서비스 할 수 있다. 이 점을 이용해서 WAS와 DB만으로도 웹을 구성할 수 있다.

그런데, 이게 맞나...?

이렇게 구성하게 된다면 WAS가 너무 많은 역할을 담당하게 된다. 즉, 서버 과부하가 걸리는 것이다. 또한, 애플리케이션 로직을 메인으로 처리해야할 WAS가 수 많은 정적 리소스 때문에 이를 수행하기가 어려워진다. 그 뿐만이 아니라 WAS가 장애를 발생시켰을 때, 오류 화면을 출력하는것도 불가능하다.

그렇다면 웹을 어떻게 구성해야할까?


웹 시스템 구성 - WEB, WAS, DB

정답은 WEB server와 WAS를 함께 두는 것이다.

이렇게 웹을 구성하게 되면 정적 리소스는 웹 서버가 처리하고 웹 서버에서 애플리케이션 로직과 같은 동적 처리가 필요하다면 WAS가 요청을 처리하도록 위임한다. 이로 인해 Web Server는 정적 처리, WAS는 중요한 애플리케이션 로직을 각각 효율적으로 전담할 수 있게 되었다.


효율적인 리소스 관리

Web, WAS, DB의 웹 구성으로 효율적인 자원 관리가 가능해졌다. 정적 리소스가 많이 사용된다고 한다면 Web 서버를 증설시키고, 애플리케이션 리소스가 많이 사용된다면 WAS를 증설시키는 방식으로 말이다.


오류화면 처리

정적 리소스만 처리하는 웹 서버와 달리, 실제 애플리케이션 로직이 동작하는 WAS 서버는 쉽게 장애가 발생한다. 이렇게 WAS와 DB에서 오류가 발생하면 Web서버가 오류에 관한 내용을 화면상에 띄울 수 있게 되었다.

profile
학습하며 도전하는 것을 즐기는 개발자

0개의 댓글