- 들어가기 -
웹 어플리케이션을 만들다 보니, 이것이 어떻게 통신하고 동작이 이루어지는지 서비스 과정이 궁금해졌다.
물론 깊게 들어가면 끝도없기 때문에 필요에 따라 하나씩 알아가기로 하고, 우선은 큰 그림만 이해하기로 한다.
목차
- 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 프로토콜을 통해 필요한 정보를 주고 받을 것이다.
이것을 모르는 사람은 거의 없을 것이다. Server는 어떤 개념인가?
그리고 Client가 서버에 요청을 하면 Server에서는 무엇을 할까?
서버는 단순하게 그냥 컴퓨터다. 솔직히 이걸 잘 몰랐다.(?) TV에서 가끔 보는 서버실 처럼 생긴게 서버인줄 알았다.
내가 지금 사용하는 컴퓨터도 서버 컴퓨터가 될 수도 있다는 말인데, 컴퓨터에 관심없는 사람이었을땐 이 개념을 잘 몰랐다.
평소에는 나 혼자 내 컴퓨터를 쓰기때문에 많은 메모리가 필요하지 않다. 하지만 서비스를 하게되면 엄청나게 많은 사람들이 내 컴퓨터로 접속하게 될 것이고, 이 많은 요청을 처리하려면 성능 좋은 CPU와 메모리가 필요하게 될 것이다. 그래서 서비스 맞춤형의 고사양의 CPU와 메모리를 탑재한 서버용 컴퓨터를 만들게 된 것이고, 서버는 컴퓨터가 꺼져서 사용자들이 접속 못하면 큰일나기(?) 때문에 특별관리를 할 수 있도록 서버실에 컴퓨터를 몰아놓고 관리하는 것이다.
2. Server에서 하는 일
서버를 구축하려면 물리적으로 어떤 사양으로 컴퓨터를 만들지 정하고, OS는 무엇으로 설치 할 것인지 정하고, 어떤 설치 파일이 필요하고 등등 할것이 정말 많지만, 웹/앱 초보 개발자가 손댈 부분은 아니기때문에 일단 패스
그래서 최대한 단순하게 정리한다.
프로토콜에는 여러가지가 있고, 서버 내에서 웹 부분 요청(http)을 처리하는 웹서버를 설치하면 웹 서비스가 가능해진다.
웹서버의 종류에는 apache Tomcat, IIS , node js 등이 있으며 필요에 따라 선택하면 된다.
Client는 "http://www.xxxx.com"과 같이 http 규격에 맞게 요청을 하면 서버는 이 요청에 맞게 웹서버로 요청을 보낸다. 그리고 필요한 정보를 찾아서 다시 클라이언트에게 보여준다.
여기서 궁금했던점이 있는데, 서버가 있는데 왜 또 웹서버를 설치해야 하는가? 에 관한 물음
http프로토콜 통신을 서버에서 직접적으로 관리할 수는 있으나 웹서버를 설치하고 실행해두면 서버는 http요청이 들어오면 웹서버로 던져주어 웹서버관련해서는 신경 안써도 되는것이다. 그러면 서버 메모리 사용에 있어서 훨씬 효율적으로 사용할 수 있기 때문에 웹서버를 설치하고 사용하는 것이다.
/* 포트는 서버에 접속할 때 서비스를 구분하려고 만든 번호 - 통신 영역 개념이기때문에 넘어감 */
그러면 Tomcat 폴더는 어떤 구조로 되어있으며 또 어떻게 동작을 할까?
3. Tomcat 구조
톰캣의 시작/종료/포트설정/연동 등등 설정을 담당하는 설정 폴더와 서비스 폴더 이렇게 두가지로 나누어지고 실제 서비스 되는 프로젝트 파일들은 webapps 내의 ROOT 폴더 밑에 놓인다.
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 |