- 들어가기 -

웹 어플리케이션을 만들다 보니, 이것이 어떻게 통신하고 동작이 이루어지는지 서비스 과정이 궁금해졌다.

물론 깊게 들어가면 끝도없기 때문에 필요에 따라 하나씩 알아가기로 하고, 우선은 큰 그림만 이해하기로 한다.

 

목차

  • Client - Server 구조
  • Server에서 하는 일
  • Tomcat 구조

 

통신은 OSI 7 Layer 과정을 거쳐 통신을 한다. 각 계층의 통신에는 종류에 맞는 스펙이 존재한다. 그 중 웹 어플리케이션을 개발할때 필요한 개념을 정리할거니까 7 layer에서 7층에 있는 Application 계층(응용계층) 부분을 정리한다.

응용계층의 프로토콜에는 FTP, SSH , HTTP, SMTP ... 등이 있으며 목적에 따라 필요한 프로토콜을 사용한다.
나는 웹 어플리케이션 통신방식을 공부할거니까 저것 중 http 통신 방식을 사용하게 될 것이다.

(응용계층 프로토콜 정리 위키백과  - https://ko.wikipedia.org/wiki/%EC%9D%91%EC%9A%A9_%EA%B3%84%EC%B8%B5)

 

1. Client - Server 구조

Client가 Server에 요청을하면  Server는 요청 결과물을 Client에 응답.

(웹의 경우 클라이언트는 internet explorer, Chrome 등..)

웹 어플리케이션을 개발하게 되면 클라이언트는 http 프로토콜을 통해 필요한 정보를 주고 받을 것이다.

사진 1 Client - Server (CS) 구조

 

이것을 모르는 사람은 거의 없을 것이다.  Server는 어떤 개념인가?
그리고 Client가 서버에 요청을 하면 Server에서는 무엇을 할까?


서버는 단순하게 그냥 컴퓨터다. 솔직히 이걸 잘 몰랐다.(?) TV에서 가끔 보는 서버실 처럼 생긴게 서버인줄 알았다. 
내가 지금 사용하는 컴퓨터도 서버 컴퓨터가 될 수도 있다는 말인데, 컴퓨터에 관심없는 사람이었을땐 이 개념을 잘 몰랐다.


평소에는 나 혼자 내 컴퓨터를 쓰기때문에 많은 메모리가 필요하지 않다. 하지만 서비스를 하게되면 엄청나게 많은 사람들이 내 컴퓨터로 접속하게 될 것이고, 이 많은 요청을 처리하려면 성능 좋은 CPU와 메모리가 필요하게 될  것이다. 그래서 서비스 맞춤형의 고사양의 CPU와 메모리를 탑재한 서버용 컴퓨터를 만들게 된 것이고, 서버는 컴퓨터가 꺼져서 사용자들이 접속 못하면 큰일나기(?) 때문에 특별관리를 할 수 있도록 서버실에 컴퓨터를 몰아놓고 관리하는 것이다.

2.  Server에서 하는 일

서버를 구축하려면 물리적으로 어떤 사양으로 컴퓨터를 만들지 정하고, OS는 무엇으로 설치 할 것인지 정하고, 어떤 설치 파일이 필요하고 등등 할것이 정말 많지만, 웹/앱 초보 개발자가 손댈 부분은 아니기때문에 일단 패스

그래서 최대한 단순하게 정리한다.

사진 2. Server - tomcat 매핑

 

프로토콜에는 여러가지가 있고, 서버 내에서 웹 부분 요청(http)을 처리하는 웹서버를 설치하면 웹 서비스가 가능해진다.
웹서버의 종류에는 apache Tomcat, IIS , node js 등이 있으며 필요에 따라 선택하면 된다. 

Client는 "http://www.xxxx.com"과 같이 http 규격에 맞게 요청을 하면 서버는 이 요청에 맞게 웹서버로 요청을 보낸다. 그리고 필요한 정보를 찾아서 다시 클라이언트에게 보여준다.

더보기

여기서 궁금했던점이 있는데, 서버가 있는데 왜 또 웹서버를 설치해야 하는가? 에 관한 물음
http프로토콜 통신을 서버에서 직접적으로 관리할 수는 있으나 웹서버를 설치하고 실행해두면 서버는 http요청이 들어오면 웹서버로 던져주어 웹서버관련해서는 신경 안써도 되는것이다. 그러면 서버 메모리 사용에 있어서 훨씬 효율적으로 사용할 수 있기 때문에 웹서버를 설치하고 사용하는 것이다.

/* 포트는 서버에 접속할 때 서비스를 구분하려고 만든 번호 - 통신 영역 개념이기때문에 넘어감 */

 

그러면 Tomcat 폴더는 어떤 구조로 되어있으며 또 어떻게 동작을 할까?

3. Tomcat 구조

사진 3. 톰캣 폴더 구조

톰캣의 시작/종료/포트설정/연동 등등 설정을 담당하는 설정 폴더와 서비스 폴더 이렇게 두가지로 나누어지고 실제 서비스 되는 프로젝트 파일들은 webapps 내의 ROOT 폴더 밑에 놓인다.

사진 4. webapps 폴더 구조

webapps의 ROOT 폴더 아래에 STS / Eclipse 등으로 개발된 소스를 위치시키면 내가 개발한 어플이 서비스가 가능해지는 것이다. 클라이언트는 서버와 http로 통신하고, 클라이언트가 보게 되는 것은 ROOT폴더 내의 html/jsp파일인 것이다.

이렇게 서버 관리자들은 서버에 접속하는 Client의 요청들을 부하가 걸리지 않게 트래픽을 관리하고, 서비스가 원활하게 제공될 수 있는 환경을 연구하고 인프라를 구축 적용, 관리하는 역할을 하게 된다.

개발자들은 보통 ROOT 폴더 내에서 동작하는 어플리케이션을 개발하게 된다.

 

'WEB 개발 > Spring 개념' 카테고리의 다른 글

Spring - DB 연동방법  (0) 2019.04.24
Servlet / Container란?  (0) 2019.03.31
MVC 패턴  (0) 2019.03.28

+ Recent posts