제 프로젝트는 사용자가 특정 차트를 고르면, 코스피 코스닥 전 종목의 과거(5년) 차트들을 모두 탐색하여 가장 유사한 차트 10개 정도를 골라 사용자에게 보여주는 것이 목표입니다.
similar chart finder
내 종목의 차트는 상승하는 차트일까요?
3.35.36.208
웹서버 이해하기
두 번째로, 웹서버에 대해 공부해보려고 합니다.
저는 서버라는 것을 작년 여름 스프링 공부를 하며 처음 제데로 공부했습니다. 하지만 당시에는 아키텍처에 대한 이해 없이 무작정 스프링과 스프링부트에 대해서만 공부했던 것 같습니다. 톰캣, 아파치 등의 단어가 종종 나오긴 했지만, 크게 신경 쓰지 않고 넘어갔었습니다.
그리고 3학년 1학기에 '서버프로그래밍'이라는 강의를 수강하였는데, 그때 제가 아는 웹서버가 웹서버가 아니라는 사실에 부끄러웠습니다. 웹서버, 웹 애플리케이션 서버가 같은 것인 줄 알고 있었습니다.
이번에 웹사이트 프로젝트를 진행하며 nginx를 직접 다루어보았는데, 오늘 더 확실히 공부하면서 정리해 보겠습니다.
웹서버의 역사
웹서버의 탄생
웹서버의 역사는 웹의 탄생과 함께 시작됩니다. 1991년, 영국의 컴퓨터 과학자 팀 버너스-리가 월드 와이드 웹(World Wide Web)을 발명하면서 웹서버라는 개념이 처음 등장했습니다. 그는 CERN에서 웹의 기본 프로토콜인 HTTP와 HTML을 개발했는데요, 이를 바탕으로 웹 브라우저와 웹서버가 만들어졌습니다.
초기 웹서버는 단순히 HTML 문서를 저장하고, 클라이언트의 요청에 따라 이를 제공하는 역할을 했습니다. 이런 단순한 구조는 웹의 복잡성을 줄이고, 누구나 쉽게 웹페이지를 만들고 배포할 수 있게 만들었습니다.
웹서버의 발전
웹이 세상을 휩쓸면서, 웹서버도 그에 맞춰 발전해 나갔습니다. 1990년대 중반, 웹페이지는 단순한 텍스트 문서에서 멀티미디어 콘텐츠를 포함한 복잡한 문서로 변화하면서, 웹서버는 이러한 콘텐츠를 효율적으로 제공할 수 있도록 발전했습니다.
이 시기에는 Apache와 Microsoft의 IIS 등 다양한 웹서버 소프트웨어가 등장했습니다. 이들 웹서버는 동적인 웹페이지를 제공하고, 보안 기능을 갖추는 등 웹서버의 역할을 확장시켰습니다.
2000년대에 들어서면서 웹서버는 더욱 고도화되었습니다. 웹 애플리케이션 서버, 리버스 프락시, 캐시 서버 등의 기능을 갖춘 웹서버가 등장하면서, 웹서버는 단순히 웹페이지를 제공하는 것 이상의 역할을 하게 되었습니다.
현재의 웹서버
현재의 웹서버는 다양한 기능을 제공합니다. 웹페이지를 제공하는 것은 물론, 보안, 성능 최적화, 로드 밸런싱 등의 기능을 갖추고 있습니다. 또한, 클라우드 환경에서 동작하는 웹서버, 컨테이너화된 웹서버 등의 기술도 등장하면서, 웹서버는 더욱 발전하고 있습니다.
웹서버의 기능
1. 웹페이지 제공
웹서버의 가장 기본적인 기능은 웹페이지를 제공하는 것입니다. 웹서버는 클라이언트의 요청을 받아, 해당하는 웹페이지를 찾아 클라이언트에게 전송합니다. 이때 웹서버는 HTTP 프로토콜을 사용하여 클라이언트와 통신합니다.
2. 정적 파일과 동적 파일 제공
웹서버는 주로 정적 파일을 제공하는 역할을 합니다. 정적 파일이란 미리 만들어진 파일로, 이미지, CSS, JavaScript 파일과 같은 콘텐츠를 의미합니다. 정적 파일은 서버에서 별도의 처리 없이 그대로 클라이언트에게 전송됩니다.
3. 보안
웹서버는 웹사이트의 보안을 담당하는 중요한 역할을 합니다. 웹서버는 SSL/TLS 프로토콜을 사용하여 클라이언트와의 통신을 암호화할 수 있습니다. 이를 통해 사용자의 정보를 안전하게 보호할 수 있습니다.
또한, 웹서버는 인증과 권한 관리 기능을 통해 특정 웹페이지에 대한 접근을 제한할 수 있습니다. 이를 통해 웹서버는 웹사이트의 중요한 정보를 보호하며, 안전한 웹 서비스를 제공합니다.
실제로 저는 이 기능을 이용하여 ssl 인증서를 발급받아 https를 사용할 수 있게 되었습니다.
4. 로드 밸런싱
웹서버는 로드 밸런싱 기능을 통해 트래픽을 여러 서버로 분산시킬 수 있습니다. 이를 통해 웹서버는 고량의 트래픽을 안정적으로 처리할 수 있습니다. 로드 밸런싱은 웹서버의 성능을 향상하며, 웹 서비스의 가용성을 높입니다.
5. 프락시 서버 기능
웹서버는 프락시 서버로서의 역할도 합니다. 프록시 서버란 클라이언트와 인터넷 사이에 위치하여 클라이언트의 요청을 대신 전달해 주는 서버를 말합니다. 이를 통해 클라이언트의 IP를 숨기거나 캐싱을 통해 빠른 데이터 전송 등의 기능을 수행할 수 있습니다.
6. 캐싱
웹서버는 캐싱 기능을 통해 자주 요청되는 데이터를 빠르게 제공할 수 있습니다. 이는 서버의 부하를 줄이고 응답 시간을 단축시키는 데에 큰 도움이 됩니다.
7. 압축
웹서버는 데이터를 압축하여 전송하는 기능도 제공합니다. 이를 통해 네트워크의 부하를 줄이고 데이터 전송 속도를 향상할 수 있습니다.
8. URL 리디렉션
웹서버는 URL 리디렉션 기능을 통해 특정 URL에 대한 요청을 다른 URL로 리디렉션 할 수 있습니다. 이는 웹사이트의 구조 변경, 페이지 이동 등에 유용하게 사용됩니다.
9. 인증
웹서버는 사용자 인증 기능을 제공하여 특정 페이지나 서비스에 대한 접근을 제한할 수 있습니다. 이는 보안을 강화하는 데에 중요한 역할을 합니다.
10. 로깅
웹서버는 모든 요청과 응답에 대한 로그를 기록합니다. 이 로그를 통해 서버의 문제를 진단하거나 보안 이슈를 파악하는 데에 도움이 됩니다.
11. MIME 타입 설정
웹서버는 MIME 타입 설정을 통해 특정 파일의 타입을 정의할 수 있습니다. 이를 통해 브라우저가 콘텐츠를 어떻게 처리해야 할지를 알 수 있습니다.
웹서버의 종류
웹서버는 여러 종류가 있습니다. 그중 대표적인 것들은 Apache, Nginx, IIS, LiteSpeed 등이 있습니다. 이 중에서 가장 많이 사용하는 Apache와 Nginx에 대해 좀 더 자세하게 알아보겠습니다.
Nginx와 Apache의 차이
Apache와 Nginx는 가장 널리 사용되는 웹서버 중 두 가지입니다. 두 웹서버는 모두 고성능이고 안정적이지만, 몇 가지 차이점이 있습니다.
- 아키텍처: Apache는 프로세스 또는 스레드 기반 아키텍처를 사용합니다. 반면, Nginx는 비동기 이벤트 기반 아키텍처를 사용합니다. 이로 인해 Nginx는 동시 연결에 대해 더 효율적입니다.
- 모듈: Apache는 동적 모듈을 지원하므로, 필요한 기능을 쉽게 추가하거나 제거할 수 있습니다. 반면, Nginx의 모듈은 컴파일 시에 정적으로 포함되므로, 모듈을 추가하거나 제거하려면 Nginx를 재컴파일해야 합니다.
- . htaccess 파일: Apache는. htaccess 파일을 지원하여, 디렉터리별로 설정을 변경할 수 있습니다. 하지만 Nginx는 이를 지원하지 않습니다.
WAS와 차이
웹 애플리케이션 서버(WAS)는 동적 콘텐츠를 제공하기 위해 사용되는 서버입니다. WAS는 웹서버와 데이터베이스 사이에서 동작하며, 클라이언트의 요청에 따라 비즈니스 로직을 수행하고 그 결과를 웹서버를 통해 클라이언트에게 전달합니다. 대표적인 예로는 Tomcat, JBoss, WebLogic 등이 있습니다.
그렇다면 웹서버와 웹 애플리케이션 서버의 주요 차이점은 무엇일까요?
- 정적 콘텐츠 vs 동적 컨텐츠 처리: 웹서버는 주로 정적 콘텐츠를, WAS는 동적 콘텐츠를 처리합니다. 정적 컨텐츠는 서버에 미리 저장된 파일을 그대로 제공하는 반면, 동적 컨텐츠는 사용자의 요청에 따라 실시간으로 생성되는 컨텐츠를 의미합니다.
- 비즈니스 로직 처리: 웹 애플리케이션 서버는 비즈니스 로직을 처리할 수 있는 기능을 갖추고 있습니다. 이는 데이터베이스 연동, 트랜잭션 관리, 보안 등 복잡한 기능을 수행할 수 있게 해 줍니다.
- 성능과 확장성: 일반적으로 웹서버는 웹 애플리케이션 서버보다 더 빠르게 정적 콘텐츠를 처리할 수 있습니다. 반면, 웹 애플리케이션 서버는 동적 컨텐츠를 처리하는 능력이 있어, 웹 애플리케이션의 복잡성이 증가할수록 필요해집니다.
'웹 아키텍쳐' 카테고리의 다른 글
웹 아키텍처5 - 메세징 시스템과 Kafka - 디도스 방지 가능? (0) | 2024.02.17 |
---|---|
웹 아키텍처4 - 캐싱 시스템과 Redis (23.11.9) (0) | 2024.02.17 |
웹 아키텍처3 - 웹 애플리케이션 서버(WAS) - 스프링은 WAS? (0) | 2024.02.17 |
웹 아키텍처1 - DNS (similarchart.com) (23.11.9) (0) | 2024.02.17 |
웹사이트를 만들기 전, 웹 아키텍처부터 알아보자(23.11.9) (0) | 2024.02.17 |