Linux 에서 Web Server 와 Web Application 구축하기

개요

좋은 사업 아이템을 실행하기 위해 엄청나게 노력해서 새로운 서비스를 만들었고 이를 컨퍼런스나 행사장에서 소개하는 기회를 잡았고 자신있게 아래와 같이 웹 서비스를 시연했다고 생각해 봅시다.

저같이 까칠한 사람은 개발사가 웹에 대한 기본 지식이 있는지 빠르게 판단하기 위해 웹 서비스 URL 항목을 먼저 보고 다음과 같은 형식으로 되어 있으면 Web 에 대한 경험이 부족하다고 판단하는 편입니다.


문제점

위 사례는 크게 4가지 문제가 있습니다.

  1. 서비스에 domain 이 할당되어 있지 않고 IP 로 서비스함
  2. 웹 서비스 포트가 well know port인 80, 443 이 아니고 임의의 포트임
  3. HTTPS 가 적용되어 있지 않음
  4. 또는 HTTPS 가 적용되어 있지만 HTTP 로 연결할 경우 HTTPS 강제 전환하지 않음


보통 1번 항목인 Domain 이 없고 IP 로 서비스하는 경우 자동으로 2, 3, 4 문제점도 해당되는 경우가 많았고 저는 이런 경우 웹 서비스와 마케팅 경험이 부족하다고 생각합니다.

웹 서비스를 외부에 소개하고 싶다면 IP 가 아닌 Domain 을 사용하는 게 기본인 이유는 외우기가 힘든 IP 로 서비스를 하지는 않을 것이기 때문입니다.

마치 새로 음식점을 냈는데 찾아 오라고 하면서 위도와 경도를 알려준다면 아무도 가지 않을 것입니다.


2번 항목이 문제인 이유는 사람들은 일반적으로 웹 서비스에 접속할 때 port 번호를 넣지 않기 때문입니다.

별도 포트를 사용한다는 것은 마찬가지로 사용자에게 웹 서비스를 소개할 의지가 부족하거나 Well known Port, Virtual Host, Reverse Proxy 등 웹 인프라에 대한 기본 지식이 부족하다고 판단해서입니다.


이제는 일반 웹 서비스도 HTTPS 로 정보를 보호하는게 대세이고 심지어 구글은 HTTPS 인 사이트에 가중치를 주고 검색 결과에 노출하기 때문에 3번과 4번도 제대로 된 웹 서비스를 제공하기 위해서는 기본적으로 제공해야 합니다.

그러면 어떻게 해야 하나?

웹 서비스를 제공하는 회사의 입장에서 위와 같은 실수를 많이 하는 이유는 사내에 Network 나 인프라, 웹 서버와 WAS 에 대한 전문가가 없을 경우(대부분이겠죠) 구글링을 해가며 구성하는 경우가 많습니다.

인터넷은 정보의 보고이지만 필요한 정보는 단편적이거나 파편화되어 있는 경우가 많고 how to 는 알려주지만 why 를 알려주지 않는 경우 많습니다.

그래서 검색해서 나온 블로그에 흩어져 있는 단편적인 정보들을 기워서 한땀 한땀 웹 서비스 인프라를 구성하기 때문입니다.


이 과정에서 발생하는 여러 문제들은 기반 지식을 모른다면 해결하기 어렵고 시연 일정등에 쫒쳐서 IP:PORT 서비스하는 경우가 생깁니다.


이런 문제를 해결하고자 이번 강의에서는 Linux 에서 제대로 Web Server 와 WAS(Web Application Server) 를 구축하기 위한 다음과 같은 기반 지식을 배웁니다.

  • Web Server/WAS 정의
  • 기본적인 Network 지식과 HTTP 정보
  • Virtual host 와 Reverse Proxy
  • CDN, Cache Server, L4 란
  • Load Balancing 정의 및 알고리즘

이런 기본적인 지식을 익히고 이를 기반으로 nginx 를 설치하고 다양한 Web Application 과 연동해서 제대로 된 웹 서비스를 제공하는 방법에 대해서 학습합니다.