작성한 부스트코스 후기입니다.
여러분들의 성원에 더 노력하는 부스트코스가 되겠습니다.
감사합니다.
******************************************
먼저, 클라이언트-서버 구조란?
클라이언트는 웹을 사용하는 사용자라고 이해하면 쉽지만,
웹을 사용하는 사용자가 이용하는 컴퓨터 혹은 랩탑, 스마트폰 이라고 이해하는 게 좀더 정확하다.
클라이언트가 사용자의 요청으로 인해, 서버에게 해당 요청을 하고 그 결과를 보여주는 역할을 한다면,
서버는 해당 서비스를 제공하는 역할을 한다.
이 개념은 웹에서 상당히 중요하고 가장 기본적인 개념이기 때문에 반드시 알아놓아야 한다.
이러한 관계를 서버-클라이언트 관계라고 말한다.
하지만 이러한 서버-클라이언트만의 관계로는
방대한 양의 데이터를 저장하고 읽어들이는 등의 기능을 개발자가 모두 구현해야 했다.
그렇기 때문에 나온것이 "DBMS" 이다.
그렇다면 DBMS란?
DBMS 는 DataBase Management System 라고 하는 소프트웨어인데,
이름에서도 알 수 있다시피 데이터베이스, 즉 방대한 데이터들을 관리하기 위해 나온 소프트웨어이다.
DBMS의 최초의 개념은 IBM의 논문에서 나오게 되었고, 최초의 구현은 Oracle에서 했다.
종류로는 MySQL, MariaDB, Oracle, PostgreSQL 등이 있다.
( 데이터 베이스의 종류 좀더 자세히 알아보기 : https://blog.naver.com/jinn_o/221670771812 )
이러한 소프트웨어의 등장으로 데이터를 더 효율적으로 관리할 수 있게 되었지만,
문제점은 서버 형태로 서비스를 제공하기 때문에, 클라이언트가 DBMS에 접속해서 동작해야 했다.
그렇게 되면 자연스레 클라이언트 프로그램의 크기는 커지게 된다는 것과,
프로그램 로직이 변경되면 클라이언트가 매번 다시 배포되어야 한다는 것과,
이러한 로직이 클라이언트에 포함되어 배포되기 때문에 보안이 나쁘다는 문제점이 생겼다.
그래서 나온 것이 "미들웨어" 이다.
미들웨어는 서버와 클라이언트 중간에서 동작하는 또 하나의 서버이다.
원래라면, 클라이언트가 직접 서버에 접속해서 데이터를 저장하고 가져오는 동작을 해야했지만,
그 역할을 미들웨어에게 맡기면 일 처리는 훨씬 좋아진다.
이 미들웨어에서 대부분의 로직을 수행하고, 데이터를 조작할 일이 있으면 DBMS 에게 요청한다.
그리고 그 결과를 클라이언트에게 전송하면 된다. 분업을 하는 것이다.
이렇게 되면 클라이언트는 복잡하고 방대한 로직을 짤 필요가 없다.
단순히 화면에 결과를 보여주거나, 요청을 하기만 하면 되는 것이기 때문에 상당히 크기가 작아진다.
또한, 프로그램의 로직이 변경된다고 하더라도 미들웨어만 변경하면 되는 장점을 가진다.
그렇다면 마지막으로 WAS (Web Application Server) 란 무엇일까?
웹 데이터에는 정적인 데이터와 동적인 데이터가 있다고 했다.
웹이 점점더 방대해지고 복잡해짐에 따라, 더 복잡한 기능들을 요구하게 되었다.
웹 서버에 프로그래밍이 들어가는 방식을 CGI 라고 하는데,
이 CGI 는 기본적인 프로그래밍의 동작은 문제없이 돌아갔지만..
웹이 복잡해지면서 복잡한 프로그래밍적인 기능을 요구하게 되었다.
쉽게 말하자면, 정적인 기능보다 더 복잡한 동적인 기능들이 웹에서 많아지게 되었다.
보통 이러한 기능들은 DBMS와 관련된 경우가 많았다.
따라서 브라우저와 DBMS 사이에서 동작하는 미들웨어가 필요하게 된 것이다.
이러한 WAS 의 주요한 기능은 세가지가 있다. (이 외에도 많다)
첫 째, 프로그램 실행환경과 데이터베이스 접속 기능을 제공한다.
둘 째, 여러 개의 트랜젝션을 관리한다. (트랜잭션은 논리적인 작업단위, 후에 관련 포스팅 예정)
셋 째, 업무를 처리하는 비즈니스 로직을 수행한다.
상단의 이미지를 보면,
웹 서버와 WAS 가 따로 있는 것을 알 수 있는데,
웹 서버는 주로 정적인 데이터를, WAS 는 더 복잡한 동적인 데이터를 다룬다고 생각하면 쉽다.
그러나 WAS 는 보통 웹 서버가 제공할 수 있는 서비스를 충분히 수행할 수 있는 경우가 많다.
그렇기 때문에 어떻게 보면 웹 서버 없이 WAS 만 있어도 웹은 잘 돌아갈 수 있다.
그렇다면 WAS 가 웹 서버의 기능을 대신할 수 있는데, 왜 여전히 웹 서버를 사용하는 것일까?
그것은 장애 극복 기능 때문이다.
장애 극복 기능이란, 웹 페이지는 가용성을 지녀야 하기 때문에,
(가용성이란? 끊김없이 오류없이 지속적으로 해당 웹 페이지를 사용할 수 있어야 한다.)
만약 WAS 서버에 문제가 생기더라도 웹 페이지는 정상적으로 작동을 해야한다.
그래서 만약 WAS 서버에 문제가 생긴다면 임시적으로 웹 서버를 작동시켜서 마치 사용자의 입장에서는 아무런 오류가 나지 않은 것처럼 대처하는 방식을 말한다.
+ 추가 정보 ) 톰캣의 버전별 차이점은?
톰캣은 널리 쓰이는 WAS 의 한 종류이다.
표를 살펴보면, 지원하는 자바 버전이나 서블릿 스펙 등이 점점 업그레이드 되는 것을 볼 수 있다.
만약 톰캣을 이용하여 개발을 할 때는, 이러한 버전을 잘 살펴보고,
본인의 개발하는 환경에 맞는 버전을 다운받아서 사용해야 할 것이다.
[출처] [부스트코스] WAS(Web Application Server) 란?|작성자 진오