From e4f902f8b2382a419f04a7992b361c99bfd13086 Mon Sep 17 00:00:00 2001 From: ChaerinYu Date: Sun, 23 Jan 2022 18:28:30 +0900 Subject: [PATCH 1/3] =?UTF-8?q?create:=20[Network]=20Web=20Server=EC=99=80?= =?UTF-8?q?=20WAS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Network/webserver_vs_was.md | 64 +++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Network/webserver_vs_was.md diff --git a/Network/webserver_vs_was.md b/Network/webserver_vs_was.md new file mode 100644 index 0000000..2a677a9 --- /dev/null +++ b/Network/webserver_vs_was.md @@ -0,0 +1,64 @@ + +# Web Server +* **웹 브라우저 (클라이언트)** 로 부터 **http 요청** 을 받아 **html 문서**와 같은 ~~정적 컨텐츠~~ 를 제공하는 프로그램 + ex) IIS, Apache Server, Nginx + * **정적 컨텐츠?** 어느 사용자 요청이든 항상 동일한 컨텐츠를 제공 (html, css, image 등) +* 사실 **웹서버는 컨텐츠가 정적인지 동적인지는 전혀 상관없다.** +* 그저 요청이 오면 **html 코드로 응답해주는 역할** 을 할 뿐이다. + * 정적파일이라면 파일내용 그대로 전달해주고 동적파일이라면 인터프리터가 html 코드로 해석된 결과를 전달해준다. + +* **정리** +> * 웹 브라우저(클라이언트)로부터 `http 요청`을 받을 수 있다. +> * 정적 컨텐츠 요청 시, 정적컨텐츠를 제공할 수 있다. +> * 동적 컨텐츠 요청 시 +> * WAS로 전달하여 WAS가 처리한 결과를 클라이언트에게 전달하여 제공한다. +> * `IIS + ASP` 또는 `Apache + PHP` 조합으로도 WAS없이 동적페이지 구성 가능하다. + (하지만 보안이나 트래픽 문제로 사장된 구조) + +# WAS - Web Application Server +* DB 조회나 다양한 로직 처리를 요구하는 동적 컨텐츠 제공하는 프로그램 (정적 컨텐츠도 당연 가능) + ex) Tomcat, JBoss, Jeus + * **동적 컨텐츠?** 요청 인자에 따라 바뀔 수 있는 컨텐츠 +* application + * 빌드나 컴파일된 파일(바이트코드나 기계어로 미리 생성되어 있는 상태 - ex) `.class`나 `.exe`) + 👉 따라서 서버사이드 스크립트 언어(ASP 나 PHP)를 구동하는건 WAS가 아니라 WebServer다. + +* **정리** +> * 웹 브라우저(클라이언트)로부터 `http 요청`을 받을 수 있다. (대부분의 WAS는 Web Server를 내장하고 있다.) +> * 정적 컨텐츠 요청 시, 정적컨텐츠를 제공할 수 있다. +> * 동적 컨텐츠 요청 시, 다양한 로직처리를 통해 동적컨텐츠를 제공할 수 있다. + + +

+ +보통 실무에서는 보안/트래픽 문제로 Web Server - WAS - DB, 3 Tier 구조로 서버를 구성하고 있다. +(PHP의 경우, Apache/Nginx - PHP-FPM - DB, 3 Tier 구조로 구성이 된다고 한다.) + + +## 왜 굳이 Web Server와 같이 사용할까? 🤔 +1. 책임 분할을 통한 서버 부하 방지 가능 + * 역할 분배 가능 - 정적 컨텐츠는 Web Server가 동적 컨텐츠는 WAS가 담당한다. +2. 여러 WAS Load Balancing + * WAS가 처리해야 하는 요청을 여러 WAS가 나누어서 처리할 수 있도록 한다. + * Health Check 기능 + * 로드밸런싱할 때 WAS들이 제대로 동작이 되는지 확인해준다. + * 서버에 주기적으로 http 요청을 보내 서버 상태를 확인한다. + * 특정 URL 요청에 200 응답 오는지 확인하여 그렇지 않은 경우 해당 서버로 요청을 보내지 않도록 설정이 가능하다. + * `interval` (서버 확인 요청 보내는 주기 - default: 5 sec) + * `fails` (n번 연속 실패시 비정상으로 인지하여 자동으로 차단 - default: 1) + * `passes` (서버 다시 복구된 후 요청이 n번 연속 성공시 정상으로 인지 - default: 1) +3. 보안 + * 리버스 프록시를 통해 실제 서버를 외부에 노출하지 않을 수 있다. + * **리버스 프록시?** 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램 + * WAS같은 경우 DB 접근 권한을 갖고 있을 수 있어서 위험할 수 있는데 리버스 프록시를 통해 방지할 수 있다. + + +
+ +### ✔ 결론 +> WAS만으로도 서비스는 가능하지만 **서비스 확장성과 안정성**을 고려한다면 Web Server와 함께 사용하는 게 좋아 보인다. + +


+ + +[참고](https://www.youtube.com/watch?v=mcnJcjbfjrs) From 19ef63292a2dd49712b6777fe6d1951d952d1c79 Mon Sep 17 00:00:00 2001 From: ChaerinYu Date: Sat, 29 Jan 2022 21:41:31 +0900 Subject: [PATCH 2/3] =?UTF-8?q?update:=20[Network]=20Web=20Server=EC=99=80?= =?UTF-8?q?=20WAS=20(#44)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Network/webserver_vs_was.md | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/Network/webserver_vs_was.md b/Network/webserver_vs_was.md index 2a677a9..e86585b 100644 --- a/Network/webserver_vs_was.md +++ b/Network/webserver_vs_was.md @@ -16,9 +16,15 @@ (하지만 보안이나 트래픽 문제로 사장된 구조) # WAS - Web Application Server -* DB 조회나 다양한 로직 처리를 요구하는 동적 컨텐츠 제공하는 프로그램 (정적 컨텐츠도 당연 가능) +* DB 조회나 다양한 로직 처리를 요구하는 동적 컨텐츠 제공하는 프로그램 (정적 컨텐츠도 당연 가능) ex) Tomcat, JBoss, Jeus - * **동적 컨텐츠?** 요청 인자에 따라 바뀔 수 있는 컨텐츠 + * **동적 컨텐츠?** 요청 인자에 따라 바뀔 수 있는 컨텐츠 +* Web Server + Web Container + * Web Server: 정적 컨텐츠 + * 요청을 받아 Container로 전송 + * 결과값을 받아 클라이언트에게 전송 + * Web Container: 비즈니스 로직이나 DB 조회같은 동적인 컨텐츠 제공 + * JSP, Servlet 구동 환경 제공 * application * 빌드나 컴파일된 파일(바이트코드나 기계어로 미리 생성되어 있는 상태 - ex) `.class`나 `.exe`) 👉 따라서 서버사이드 스크립트 언어(ASP 나 PHP)를 구동하는건 WAS가 아니라 WebServer다. @@ -29,10 +35,13 @@ > * 동적 컨텐츠 요청 시, 다양한 로직처리를 통해 동적컨텐츠를 제공할 수 있다. -

+
보통 실무에서는 보안/트래픽 문제로 Web Server - WAS - DB, 3 Tier 구조로 서버를 구성하고 있다. -(PHP의 경우, Apache/Nginx - PHP-FPM - DB, 3 Tier 구조로 구성이 된다고 한다.) +(PHP의 경우, Apache/Nginx - PHP-FPM - DB, 3 Tier 구조로 구성이 된다고 한다.) + +### Web Service Architecture +![WebServiceArchitecture](https://github.com/ChaerinYu/Today-I-Learned/blob/main/Network/images/web_service.png?raw=true) ## 왜 굳이 Web Server와 같이 사용할까? 🤔 @@ -47,7 +56,7 @@ * `interval` (서버 확인 요청 보내는 주기 - default: 5 sec) * `fails` (n번 연속 실패시 비정상으로 인지하여 자동으로 차단 - default: 1) * `passes` (서버 다시 복구된 후 요청이 n번 연속 성공시 정상으로 인지 - default: 1) -3. 보안 +3. 보안 강화 * 리버스 프록시를 통해 실제 서버를 외부에 노출하지 않을 수 있다. * **리버스 프록시?** 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램 * WAS같은 경우 DB 접근 권한을 갖고 있을 수 있어서 위험할 수 있는데 리버스 프록시를 통해 방지할 수 있다. From 6a0b08dafc89f69aab0d566400700f00006f1b35 Mon Sep 17 00:00:00 2001 From: ChaerinYu Date: Sat, 29 Jan 2022 23:28:08 +0900 Subject: [PATCH 3/3] =?UTF-8?q?update:=20[Network]=20Web=20Server=EC=99=80?= =?UTF-8?q?=20WAS=20(#44)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Network/webserver_vs_was.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Network/webserver_vs_was.md b/Network/webserver_vs_was.md index e86585b..641f0c2 100644 --- a/Network/webserver_vs_was.md +++ b/Network/webserver_vs_was.md @@ -55,10 +55,15 @@ * 특정 URL 요청에 200 응답 오는지 확인하여 그렇지 않은 경우 해당 서버로 요청을 보내지 않도록 설정이 가능하다. * `interval` (서버 확인 요청 보내는 주기 - default: 5 sec) * `fails` (n번 연속 실패시 비정상으로 인지하여 자동으로 차단 - default: 1) - * `passes` (서버 다시 복구된 후 요청이 n번 연속 성공시 정상으로 인지 - default: 1) + * `passes` (서버 다시 복구된 후 요청이 n번 연속 성공시 정상으로 인지 - default: 1) 3. 보안 강화 - * 리버스 프록시를 통해 실제 서버를 외부에 노출하지 않을 수 있다. - * **리버스 프록시?** 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램 + * 리버스 프록시를 통해 실제 서버를 외부에 노출하지 않을 수 있다. + * **프록시?** 클라이언트와 서버 간의 중계 서버로 통신을 대리 수행하는 서버 + * 보통 '프록시'라고 하면 `forward proxy`를 의미한다. + * `forward proxy?` 클라이언트와 인터넷 사이에 위치한 proxy로 클라이언트가 요청한 내용을 **캐싱**하는 특징과 + 클라이언트가 보낸 요청을 감추는 **익명성** 특징이 있다. + * `reverse proxy?` 인터넷과 서버 사이에 위치한 proxy로 **캐싱**, **보안**(서버 정보를 클라이언트로부터 숨김), + **load balancing** (부하 분산) 특징이 있다. * WAS같은 경우 DB 접근 권한을 갖고 있을 수 있어서 위험할 수 있는데 리버스 프록시를 통해 방지할 수 있다.