웹 서비스 구성해보기

이선재·2022년 12월 17일
1

알아야할 것

  1. 데몬
    Linux에서는 모든 프로세스를 데몬이라고 말한다. 데몬(Daemon)은 악마, 정령의 뜻을 가지는데 정령처럼 보이지 않으며 옆에서 도와준다는 뜻으로 시작되었다고 한다.

    데몬이란 사용자가 직접 제어하지 않고 백그라운드에서 실행되는 프로세스라고 볼 수 있다. 데몬 프록세스는 PPID를 1로 가지며, 해당 PPID의 PID를 가지고 있는 프로세스 또한 데몬 프로세스로 분류된다.

    PPID가 1이 된다는 것은 프로세스가 고아프로세스가 되었을 때 부모 프로세스를 Init process로 지정하게 될때를 말하는데, 이때 백그라운드에서 실행되며 시스템 종료 전까지 종료되지 않는 데몬 프로세스가 되는 것이다.

  2. 포트와 소켓
    포트란 데이터를 주고받는 프로세스 레벨에서 프로세스를 식별하기 위해 프로세스가 받게되는 고유값이다.

    소켓이란 네트워크 세부 지식(응용 계층 하위단계)이 없더라도 손쉽게 네트워크 프로그램을 작성할 수 있게 도와주는 프로그래밍 방법으로 Socket을 사용하여 통신 프로토콜(TCP, UDP)을 이용하는 것이다.

  3. 프록시(리버스 프록시, 포워드 프록시)
    프록시란 클라이언트와 서버 사이에 있는 대리 서버이다. 클라이언트에서 요청이 들어오면 요청을 가로채 자신이 서버와 통신하고 응답에 대한 값을 클라이언트에게 전송해준다. 프록시 서버를 사용한다면 캐시를 사용한 전송속도 향상 및 외부와 서버가 직접 통신하지 않기 때문에 보안성도 올라가게 된다. 프록시 종류는 대표적으로 리버스, 포워드 프록시가 있다.

    그렇다면 포워드 프록시란? 우리가 대게 아는 프록시 서버를 칭하며 클라이언트 앞에 위치한다. 포워드 프록시란 내부망에 포함되어 사내 이용자의 제한적인 인터넷을 사용을 위해 사용된다. 또한 이러한 특징 때문에 IP역 추적을 하더라도 사용자를 알 수 없다.

    그렇다면 리버스 프록시란? 다음과 같이 서버 앞에 프록시가 놓이는 경우에 리버스 프록시라고 한다.

    A. 로드벨런싱에 사용되는데 특정 부하들이 서버에 무리를 주지않게 하기 위해 사용된다.

    B. 또한 서버의 IP를 알 수 없기 때문에 이는 DDoS 공격 방어에 탁월하다. 하지만, CDN과 같은 역할을 하는 캐시 데이터를 가지고 있는 리버스 프록시 서버가 공격에 대상이 될 수 있긴하다.

    C. CDN과 같이 캐시 데이터를 가지고 있을 수 있어 빠른 응답이 가능하다.

    D. SSL 과 같은 요청과 응답에 대하여 암호화 복호화를 진행해주기 때문에 암,복호화에 비용이 들지 않는다.

Checklist

  1. 서버 환경에서 데몬이란? node.js 서버를 데몬으로 만들려면 어떻게 해야 할까요?
    서버란 클라이언트의 요청에 지속적인 응답이 가능해야하며 사용자와 대화가 필요없기 때문에 백그라운드 프로세스로
  2. nginx와 같은 리버스 프록시 서버를 사용하는 이유는 무엇일까요?

Quest

  1. vi를 이용하여, node.js의 3000번 포트로 기본적인 웹서버를 만든 후 띄워 보세요.
  1. 로컬 머신을 통해 띄운 웹서버의 3000번 포트에 접속해 보세요. AWS 콘솔에서 보안 그룹을 조정하려면 어떻게 해야 할까요?

    인스턴스에 nginx를 구동시키고 보안그룹을 설정해준다. 보안그룹을 통해 ssh 등
    접속을 설정한다. 인스턴스 앞에는 항시 보안그룹이 포함되어있다.

생성 시에도 보안 그룹을 설정해줄 수 있지만, 그렇지 않더라도 생성 후에도 조정해줄 수 있다.

3. 서버의 앞쪽에 nginx를 설치하여 80포트를 통해 외부로 서비스 해 보세요.

nginx.conf 열기
Server 의 listen 80으로 변경해주기
proxt_pass 127.0.0.1:3000 으로 포워딩 해주기
location에 proxy_pass http://127.0.0.1:3000/; 설정해 포워딩 진행하기

  1. 서버에 터미널 접속을 종료해도 서버가 뜰 수 있게 해 보세요.
nohup node app.js &

Advanced

  1. 리눅스 시스템의 PID 1번 프로세스는 무엇일까요? systemd와 init.d는 어떤 시스템이고 어떤 차이가 있을까요?
    부트 로더가 커널을 시작하고 커널이 init 프로세스를 작동시킨다. 후 init 프로세스가 다른 프로세스를 실행시키는 식으로 작동한다.
    이러한 init의 병목현상 때문에 만들어진 것이 systemd이다. 불필요한 데몬(초기화 데몬)들의 지연을 없애준다.

  2. AWS의 보안 그룹 시스템은 어떻게 구성되어 있을까요? 일반적인 방화벽 시스템은 어떤 설정들이 가능할까요?

    접근통제, 사용자 인증, 감사 및 로그, 프라이버시 보호, 서비스 통제, 데이터 암호화

참고 - https://losskatsu.github.io/it-infra/reverse-proxy/#1-%ED%94%84%EB%A1%9D%EC%8B%9Cproxy-%EC%84%9C%EB%B2%84%EB%9E%80

profile
지적을 환영하는 인프라 냠냠을 시도하는 취준생

0개의 댓글