네트워크

WAS와 Restful API 그리고 JVM

개발정리 2024. 11. 11. 09:44

 

웹 서버, WAS, DB를 각각 하나의 Tier로 볼 수 있다. 그러면 총 3-Tier가 된다.

 

웹 서비스 시스템이 얼마나 잘 작동하고 있는가를 항상 모니터링 한다. 여기서 응답시간은 서비스의 품질을 확인하는데 매우 중요한 역할을 하게된다. db 응답시간, WAS 상태에 대해 집중적으로 모니터링 하는 시스템을 APM(Application Performance Management) 시스템이라 한다. (ex. 스카우터)

 

 

(참고) APM은 JVM을 모니터링한다.

 

 

...

 

 

 

WAS를 생각해보기 전에 컴퓨터를 H/W, Kernel mode, User mode로 구분해볼 수 있다.

 

1) CPU는 하드웨어에 속한 장치이며, Machine이라고도 한다.

2) 하드웨어를 넘어가면 모두 S/W이며, Logical 혹은 Vitual 이라고도 한다.

3) Java 웹 개발 시, User mode에 CPU를 소프트웨어 형태로 구현하는데 Java 기반의 CPU 이기 때문에 JavaVirtualMachine 이라 부른다. 즉, JVM은 Java를 위해 소프트웨어로 구현된 CPU인 것이다. 

4) CPU가 인식할 수 있는 명령 체계가 Java byte code 이다.  

5) Java byte code를 기반으로 어플리케이션을 작동시켜주는 것을 미들웨어라 한다.

6) 미들웨어는 또 다른 소프트웨어가 잘 작동할 수 있도록 도와주는 소프트웨어이다.

7) 소프트웨어 들이 잘 작동하는데 필요로 하는 몇 가지 것들이 것들이 있다. (tcp/ip 통신, db입출력, file 입출력)

8) 이런 기본 기능은 어떤 프로그램이라도 다 필요하기 때문에 미리 다 만들어서 가지고 있는 것이다.

9) 예를들어 JSP로 무엇을 만들면 서블릿 형태로 미들웨어에 들어간다. 

10) 서블릿 형태를 컨테이너, 미들웨어는 WAS (ex. tomcat)라고 한다.

 

 

...

 

 

사용자의 Request에 따라서 코드뭉치가 실행될 것이다. 이는 마치 함수같은데 함수가 실행되는 트리거는 사용자의 Request에 의해서 실행이 된다. 

 

 

이전에는 서버에서 UI와 Data를 만들어 한번에 응답했지만, 다양한 기기와 기기별 모델들이 너무나 다양해져서 UI와 Data의 분리가 일어났다. 현재는 서버에서 XML, Json 형식의 파일로 Data만 내려온다. (즉, 웹의 페러다임이 바뀐 것이다.)

 

그러면 클라이언트 단 javascript 기반의 소프트웨어(React.js, vue.js) 가 실행이 되고, Data를 가지고 HTML를 생성한다. 그리고 디바이스가 무엇인지에 따라 생성되는 HTML은 달라진다. 

 

 

...

 

 

백앤드 개발하면 보안도 신경써야 한다.

 

 

순서를 나열하자면, IPS(침입 방지 시스템), SSL 처리 담당 (가속기 역할), 웹 서버를 보호하는 WAF 가 있을 수 있다. 보통 IPS는 1차 방어 체계, WAF는 2차 방어 체계로 구분한다.  이 때 2차 방어체계인 WAF는 웹 서버 앞단이 아닌 웹 서버와 WAS 사이에 구성될 때도 있다. 

 

 

SSL 처리 담당은 앞단은 HTTPS로 통신하고 이 후엔 평문으로 바뀌어 HTTP로 변경된다.

 

 

 

기본적으로 클라이언트로 부터 요청이 오면 서버는 원격지 사용자 입력을 신뢰하지 않아야 한다. 이를 위한 과정 중 하나로 사용자 입력 속에 SQL 문이 있는지 (SQL 인젝션), 요청 값에 대한 Validataion 체크 등을 한다.

 

 

최종적으로 웹 서비스의 전체적인 구조는 아래와 같다.

 

'네트워크' 카테고리의 다른 글

Inline 구조  (0) 2024.11.19
세 가지 네트워크 장치 구조 (Inline, Out of Path, Proxy)  (0) 2024.11.15
인증서 체인이란  (0) 2024.11.08
웹 서비스 구조 이론  (1) 2024.11.07
HTTP 간단 설명  (0) 2024.11.05