본문 바로가기
Progamming/BoostCourse

WAS

by 동그란 혜주 2019. 1. 15.
  • 들어가기 전에

WAS는 무엇이고, 왜 필요한지, 그리고 어떤 종류의 WAS가 있는지 알아보자. 또한, 웹 서버와의 차이점은 무엇인지 알아보자.




  • 학습 목표

1. WAS가 무엇인지 알아보자.

2. WAS의 종류를 알아보자.

3. 웹 서버와 WAS의 차이점을 설명해보자.




  • 핵심 개념

- WAS(Web Application Server)

- Apache Tomcat




  • 클라이언트/서버 구조

- 클라이언트(Client)는 서비스(Service)를 제공하는 서버(Server)에게 정보를 요청하여 응답 받은 결과를 사용한다.

· 웹 서버와 웹 클라이언트가 대표적인 서버와 클라이언트의 관계




  • DBMS(Database Management System)

- 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어

· DBMS : 데이터베이스를 관리하는 시스템

· DBMS가 등장하기 이전에는 개발자들이 파일의 데이터를 저장하고 읽어들이는 등의 기능을 모두 구현해야만 됐음. 이러한 불편함을 해결하기 위한 여러 노력의 결과로 DBMS라는 소프트웨어가 등장하게 된다. Oracle에서 최초로 구현하였다.

· DBMS가 등장하면서 개발자들은 상대적으로 데이터를 굉장히 쉽게 관리할 수 있게 되었다.

· DBMS는 보통 서버 형태로 서비스를 제공하기 때문에, 이러한 DBMS에 접속해서 동작하는 클라이언트 프로그램이 한 때 많이 만들어졌으나, 클라이언트의 로직이 많아지고, 클라이언트의 프로그램의 크기가 커진다는 문제가 발생했다. 프로그램 로직이 변경되면, 클라이언트가 매번 배포되어야 한다는 문제가 있었고, 대부분의 로직이 클라이언트에 포함되어 배포되기 때문에 보안성이 저하된다는 문제들을 가지고 있었다.

· ex) MySQL, MariaDB, Oracle, PostgeSQL 등





  • 미들웨어(MiddleWare)

- 클라이언트 쪽에 비즈니스 로직이 많을 경우, 클라이언트 관리(배포 등)로 인해 비용이 많이 발생하는 등 DBMS를 직접 클라이언트에 연결되어 등장하는 방식이 여러가지 단점이 있음을 알게되어 이러한 문제점을 보안하기 위해 등장

- 클라이언트와 DBMS 사이에 또 다른 서버를 두는 방식으로 비즈니스 로직을 클라이언트와 DBMS 사이의 미들웨어 서버에서 동작하도록 함으로써 클라이언트는 입력과 출력만 담당하도록 함

· 클라이언트는 단순히 요청만 중앙에 있는 서버(미들웨어)에게 보내고, 미들웨어에서는 대부분의 로직을 수행한다. 이때, 데이터를 조작할 일이 있을 경우에 DBMS에게 부탁한다. 그리고 그 결과를 클라이언트에게 전송하면 클라이언트는 그 결과를 화면에 보여주게 된다. 따라서 프로그램의 크기가 매우 작아진다.

· 프로그램의 로직이 변경된다 하더라도 모든 클라이언트를 다시 배포할 필요없이 중앙의 미들웨어만 변경하면 된다.




  • WAS(Web Application Server)

- 최초의 웹이 등장했을 때는 웹 브라우저는 정적인 데이터만 보여주었지만, 웹이 널리 사용되면서 사용자들의 요구 사항은 점점 커지게 됐고 웹에서 데이터를 입력하고 조회하는 등의 동적인 기능을 요구하게 되었다. 동적인 기능은 프로그래밍을 통해서 가능했고, 웹 서버에서 프로그래밍 기능이 들어가는 방식을 CGI라고 불렀다. 하지만 점점 복잡한 프로그래밍적인 기능을 요구하게 되었고, 보통 이러한 기능들은 DBMS와 연관된 경우가 굉장히 많았다.

- WAS는 일종의 미들웨어로 웹 클라이언트(보통 웹 브라우저)의 요청 중 보통 웹 어플리케이션이 등장하도록 지원하는 목적을 가진다.

- 중요한 세 가지 기본 기능

· 프로그램 실행 환경과 데이터베이스 접속 기능을 제공

· 여러 개의 트랜잭션을 관리 : 트랜잭션이란 논리적인 작업 단위

· 업무를 처리하는 비즈니스 로직을 수행

- 이 외의 기본적으로 제공하는 다양한 기능

· 웹 서버의 기능 : 프로젝트를 진행할 때, 웹 서버 따로 WAS 따로 이렇게 설치하지 않고 톰캣이라는 WAS만 하나 설치하고 이용이 가능한 이유는 WAS, 톰캣이 가지고 있는 웹 서버가 충분한 기능을 하고 있기 때문에 굳이 Apache 같은 웹 서버를 같이 설치하지 않고 톰캣만 설치해서 사용





  • 웹 서버 vs WAS

- 웹 서버는 보통 정적인 컨텐츠를 웹 브라우저에게 전송하는 역할, WAS는 프로그램의 동적인 결과를 웹 브라우저에게 전송하는 역할

- WAS도 보통 자체적으로 웹 서버 기능을 내장하고 있다.

- 현재는 WAS가 가지고 있는 웹 서버도 정적인 컨텐츠를 처리하는데 있어서 성능상 큰 차이가 없다.

- 규모가 커질수록 웹 서버가 WAS 앞단에서 동작하도록 분리한다. 그 목적은 장애 극복 기능(failover)인 경우가 많다.

· 장애 극복 기능 : 웹 서버는 상대적으로 WAS보다 간단한 구조로 만들어져있다. 사람들이 많이 접속하는 대용량 웹 어플리케이션 같은 경우에는 서버의 수가 여러 대일 수 있는데, 개발자가 WAS에서 동작하도록 만든 프로그램에 오작동이 발생해서 WAS 자체에 문제가 발생하는 경우에는 WAS를 재시작 해야된다. 이 때, 문제가 있는 WAS를 재시작하며 앞단의 웹 서버에서 먼저 해당 WAS를 이용하지 못하도록 하고, WAS를 재시작한다면 해당 웹 어플리케이션을 사용하는 사람은 WAS의 문제가 발생하였는지를 모르고 이용할 수 있다. 대용량 웹 어플리케이션에는 무중단으로 운영하기 위해서 상당히 중요한 기능이다.





  • 생각해보기

Q1. 톰캣 버전별 차이에 대해서 알아보자.

A1. 네..? → 버전별로 서블릿 및 JSP 사양, 요구되는 Java 버전이 다르다.

'Progamming > BoostCourse' 카테고리의 다른 글

HTML Layout 태그  (0) 2019.01.16
HTML Tags  (0) 2019.01.16
웹 서버  (0) 2019.01.15
browser에서의 웹 개발  (0) 2019.01.15
browser의 동작  (0) 2019.01.15

댓글