[CS] 아파치, 톰캣이란?

이유은·2023년 12월 7일

[CS]

목록 보기
5/11
post-thumbnail

apache

Apache란 아파치 소프트웨어 재단에서 관리하는 HTTP 웹 서버입니다. Apache는 오픈 소스이기 때문에 누구든지 수정, 재배포가 가능합니다. 게다가 Apache는 다양한 기능을 제공하고 다른 웹 서버들에 구축이 쉽다는 이유로 많이 사용되고 있습니다.

웹서버란?
클라이언트가 GET, POST 등의 메소드를 이용해 전송한 요청을 받아 HTML이나 오브젝트를 HTTP 프로토콜을 이용해 전송하는 프로그램입니다. 웹 서버는 웹 페이지, 이미지 등의 정적인 컨텐츠만 제공할 수 있습니다.

서버 = 컴퓨터, 하드웨어 물리적 개념 / 역할
웹서버는 뭐냐? 서버 다른 의미로도 사용되는데, 어떤 컴퓨터로 하여금 서버 역할을 하도록 해주는 소프트웨어를 무슨무슨 서버라고 부르기도 함!
백엔드 개발자가 서버를 개발한다고 하잖아? 이 웹서버도 소프트웨어의 개념이다.

아파치, 엔진x 대표

웹서버니까 이 컴퓨트를 서버들 중에서도 웹사이트를 제공하는 서버로 만들어주는 뭐 그런 서비스

웹사이트가 서비스 될 때 필요한 것들이 뭐가 있지?
브라우저, 크롬사파리등 - 브라우저가 읽을 수 있는 파일들
html, css, 자바스크립트 파일들, 각종 이미지 등등 서버- 사용자 컴퓨터로 보낼 수 있어야 함

파일들은 서버 컴퓨터에 저장되어 있음
서버의 특정 폴더, 디렉토리에 이것들을 넣어두면 이폴더를 외부에서 접근가능하도록 개방해서 서버에 지정된 웹사이트로 들어가면 이것들을 받아갈 수 있도록 하는 것이 웹서버의 기본적 역할 중 하나

아파치, nginX, iis가 대표적 웹 서버

윈도우로 서버를 돌리는 게 아닌 이상은 아파치나 엔진엑스 둘 중 하나를 접하게 됨

정적웹 - 블로그페이지나 회사소개 페이지처럼 그 안의 내용들이 바뀔 일이 없는 페이지 고정된 html css javascript로 제공하는 , 말하자면 완제품을 갖다놓은 것

동적웹 - 게시판 페이지처럼 항상 같은 내용이 뜨는게 아닌 새로 업뎃되고 바뀌는 페이지! 변수들에 따라서 그때 그때 달라짐 / 식당 같은 느낌


TOMCAT

톰캣이란 ?
Tomcat이란 아파치 재단에서 만든 오픈 소스 WAS(Web Application Server)입니다. Tomcat은 Java Servlet과 JSP가 실행할 수 있는 환경을 제공하여 동적인 페이지를 생성합니다. 그리고 DB 연결 및 데이터 조작, 다른 응용프로그램들과 상호 작용이 가능합니다

스프링부트에 내장되기 때문에 직접은 많이 안접하지만 자바랑 jsp로 만든 웹 또는 api 어플리케이션을 실행할 때 이 톰캣 같은 web application server가 사용됨

줄여서 was라고 하기도 함! 와스

'웹'과 '서버' 사이에 '어플리케이션'이란 말이 들어가서 w a s 가 됨
단순히 뭘 갖다주는 게 아니라 뭔가 프로그래밍 된 걸 더 한다는 것!
동적사이트를 전문적으로 처리해줌 -

아파치나 엔진엑스 같은 웹서버도 php같은 분식 종류는 요리할 수 있지만, 스프링같은 고급 한정식은 톰캣같은 전문요리사 was의 손을 빌려야함 !!

사용법 - 스프링으로 코딩한 웹앱을 war 파일로 필드하면 그 안에 .class 파일들, jsp, 이미지 등등이 압축되어 있음
톰캣을 다운받아보면 여러폴더들과 파일들이 들어있는 하나의 폴더로 돼있는데,
그 중 특정 폴더에 방금 말한 war 파일을 넣고 명령어를 실행하면 스프링 서비스가 톰캣을 사용해서 돌게 됨!

요즘은 반대로 스프링을 톰캣이 들어있는 jar파일로 빌드해서 배포하곤 함.

여튼 아파치와 엔진엑스가 웹서버, 톰캣은 was다 기억하시면 됨!!

톰캣 - 고급 요리 해주고
아파치 - 그 요리를 손님들에게 서빙 하는 그런 그림

톰캣 - 정적요소들 넘겨주는 편돌이 일은 좀 느림
아파치가 대신해줌
예전엔 그랬음
근데 이젠 톰캣도 정적 어쩌구 빨라짐 !!!

웹서버가 기본적으로 하는일 - 정적 또는 가벼운 동적 리소스 제공 역할
그것 말고도 다양한 기능들을 제공함


proxy 외 여러 것들..

그중에 먼저
reverse 프록시 - 대충 뭐 대신한다는 뜻

포워드 프록시 - 사용자들이 사이트나 어디 접속할 때, 자기 아이피 주소 숨기려고 중간에 프록시 둬서 그걸 통해서 데이터 주고받는거

리버스는 프록시 - 손님들에게서 서버의 정보를 감추는 것
보안상 내부 구조 감출필요가 있음.

인스턴스 - 프로그램이 돌아가고 있는 상태 / 하나의 프로세스

캐싱 - 한번 꺼내온 것들을 다시 안꺼내와도 되게끔 가까운데 모아두는 것
여기서 말하는 캐싱은 reverse proxy의 캐시

정리!

웹서버와 was가 겹치는 부분도 있지만 각자가 특화된 부분을 활용해서 보안+응용 더 잘하는 웹서버가 응접실에서 손님을 직접 상대하고 was나 다른건 뒤에서 동적 요소들을 만들어내는데 집중함

profile
우당탕코딩

0개의 댓글