컴퓨터 과학 기초발행일 2022. 12. 11.원본 https://blog.naver.com/jword_/222952456938 ↗

[AI스쿨] 아파치란, Nginx란

[AI스쿨] 아파치란, Nginx란 — #AI스쿨 #아파치란 #Nginx란 AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다 학...

#Basic keyword#Naver Blog

#AI스쿨 #아파치란 #Nginx란

​

AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다

학습법 이론

학습을 하기 이전, 명심해야할 학습법이 있다.

​

1.이해가지 않는다고 뒤돌아가 다시 보지 말 것

2.외우지 말라

=> 자주 봐서 외워짐을 당하라

=> 크롬을 통해 copy and paste하라

  1. 이해하는게 중요하다

=> 왜 생겨났는지?

=> 왜 사용하는지?

===> 응용이 가능해진다.

4.새로운 지식을 넣을땐 뇌를 비우자

서버와 클라이언트

이미지

서버와 클라이언트

이제 아파치와 Nginx에 대해 공부할시간이 왔습니다. 본격적인 공부에 앞서호이스팅에 대한 개념을 짚고오시면 좋을 것 같습니다. 여기서 서버를 간략하게 정리해보자면 서버는 하나의 컴퓨터입니다. 넓은 의미에서는 소프트웨어 자체가 서버가 될수도 있습니다.

​

마찬가지로 클라이언트 역시 컴퓨터입니다. 더 세밀하게 보자면 서버의 데이터를 읽어주는 브라우저가 되겠습니다. 크롬과 사파리 엣지와 같은 우리가 늘 쓰는 프로그램들 말입니다.

#

웹사이트에 접속하면 브라우저는 서버에서 파일(html,img,font ...)을 받아와 해석후 사용자에게 내보입니다. 이때 데이터는 서버의 한 디렉토리에 저장하여 특정 주소로 접속하면 파일들을 받아갈 수 있게 설정해두었습니다.

​

아파치나 Nginx역시 서버입니다. 컴퓨터는 아니고 서버의 역할을하는 소프트웨어입니다.

정적웹과 동적웹

이미지

정적웹과 동적웹

서버도 역할에 따라 정적웹과 동적웹으로 분류될 수 있습니다. 간단히 설명하자면 정적인 서비스를 제공하면 정적웹, 동적인 서비스를 제공하면 동적웹으로 보시면됩니다.

​

정적웹에는 회사소개페이지와 같이 고정된 파일로 완제품을 제공하는 웹페이지가가 있습니다. 실생활에 예를들자면 마트의 상품진열대에 놓인 인형들과 같은것이죠.

​

동적웹에는 게시판과 같이 사용자의 반응에 따라 서버의 데이터가 변경되며 결국 페이지에 변화를 주는 웹페이지가 있습니다. 실생활의 예를 들자면 레스토랑에서 고객의 주문에 따라 달리 요리를 만드는 것입니다.

​

Apache & Nginx

#

WAS란?

이제 WAS가 무엇인지 알아봅시다. WAS = Web Aplication Server의 약어입니다. WAS는 서버의 동적인 요소를 전문적으로 처리해주는 서버입니다. 식당의 예를들면 전문요리사가 되겠군요. (톰캣, Node js 등)

​

Apache & Nginx란?

드디어 이 글의 주제인 아파치와 Nginx가 무엇인지 공부하겠습니다. 정확하게 이해하기 위해서는 앞의 내용을 이해하고 넘어가야 확실히 더 와닿을 수 있습니다. Apache와 Nginx는 클라이언트와 WAS사이에서 서빙 및 매니징을 담당하는 역할을 수행합니다.동적인 요소를 처리한 정적인 요소를 사용자에게 가져다주는것이죠.

​

사실 Apache와 Nginx는 서빙역할만 하는게 아닙니다. 많은 모듈들을 지원하기 때문에 필요하다면 동적인 요소를 처리하는 요리사의 역할을 자처하기도 합니다. 그런데 왜 서빙을 전문적으로 담당하게 되는것일까요?

​

서버의 동적요소는 매우다양합니다. 동적요소가 간단하게 처리되면 좋겠지만 클라이언트는 훨씬 복잡하고 정교한 동적요소를 처리하길 원해할 겁니다. 우리가 일반적인 음식점을 가다가 고급 레스토랑을 가는것처럼 말이죠. 고급 레스토랑 요리사가 서빙까지 담당하면 어떻게 될까요? 요리하기도 바쁜데 서빙까지 하려니 집중도가 분산되고 비효율적입니다. 그래서 웨이터를 둬서 서빙 및 매장 매니징을 담당하는 것이죠.

​

이처럼 서버는 Apach & Nginx를 서빙 및 매니징 전문으로 놔두고 WAS를 전문요리사로 나눠 각자의 영역에 최선을 다하도록 일을 분산시켜두었습니다. 각자가 더 잘할 수 있는 부분을 말이죠!

​

기능

서빙기능말고도 Apache와 Nginx는 웹에서 중요한 기능을 담당합니다.

​

  1. REVERSE proxy : 사용자들에게서 서버의 정보를 감춥니다. 서버 내부 구조를 감춰 리소스가 어디에 위치해 있는지 포트는 몇번을 사용하는지 등을 감춥니다.
  2. LoadBalancing: 하나의 웹페이지가 처리해야할 기능을 여러서버로 나눠서 관리합니다. 레스토랑으로 비유하자면 여러명의 요리사가 존재하는 것과 같습니다. 서버를 나눠서 관리하면 업데이트 유지 보수측면에서 장점을 갖습니다.
  3. Caching : 서버로 찾아오는 클라이언트가 반복적으로 찾을만한 리소스를 미리 저장해둡니다. 저장해둔 리소스들은 클라이언트가 요청시에 바로 바로 꺼내 제공할 수 있습니다.