Home Inception ② 배경 지식 : 기타
Post
Cancel

Inception ② 배경 지식 : 기타

3계층 구조(3-tier architecture)

Untitled

  • 개념
    • 소프트웨어 개발에서 규모있고 유지보수 가능한 애플리케이션을 만들 때 흔히 사용하는 디자인 패턴
    • 하나의 애플리케이션을 세 개의 구분되는 티어로 나눈다.
  • 구성
    • 프레젠테이션 계층 (또는 사용자 인터페이스(UI))
      • 사용자 인터페이스를 담당. 애플리케이션과의 상호작용을 담당
      • 주로 웹 서버, 웹 페이지 또는 모바일 앱으로 구성됨.
    • 애플리케이션 계층 (또는 비즈니스 로직)
      • 애플리케이션의 비즈니스 로직을 담고있다.
        • 비즈니스 로직 : 특정 비즈니스 목표를 달성하기 위해 데이터를 처리하고 조작하는 방법을 결정하는 규칙 및 프로세스를 일컫는 말.
      • 데이터를 가공하고 조작하는 일, 비즈니스 규칙을 만드는 일, 프레젠테이션 계층과 데이터 계층 간의 소통을 돕는 일을 당담
    • 데이터 계층 (또는 저장소)
      • 앱의 데이터를 관리하는 일을 담당.
      • 데이터 베이스 서버 또는 기타 데이터 저장 시스템으로 구성됨.

SSL (Secure Socket Layer)

  • 개념
    • 웹사이트와 브라우저 사이(또는 두 서버 사이)에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술
  • 특징
    • 기본적으로 공개 키대칭 키 암호화를 통해 클라이언트와 서버 간에 전송되는 데이터를 암호화한다.
    • 발급받은 인증서는 보통 공개 키 파일과 CA의 디지털 서명이 포함하고 있다.
    • HTTPS에 사용되며 암호화를 통해 기존 HTTP 프로토콜보다 한층 강화된 보안을 제공한다.
    • 이후에 SSL에서 버전업 된 TLS (Transport Layer Security)가 발표되었다.
    • 일반적으로 Certificate Authority (CA)에서 인증서를 발급받지만 OpenSSl을 통해 self-signed 인증서를 발급받을 수 있다.

OpenSSL

openssl-logo

  • 개념
    • 네트워크를 통한 데이터 통신에 쓰이는 프로토콜인 TLS와 SSL의 오픈 소스 구현판
  • .crt 확장자의 공개 키 파일과 .key 확장자의 개인 키 파일이 생성된다.
  • 인증서 속성
    • CN: CommonName
    • OU: OrganizationalUnit
    • O: Organization
    • L: Locality
    • S: StateOrProvinceName
    • C: CountryName

HTTPS (Hypertext Transfer Protocol Secure)

  • 개념
    • 인터넷을 통한 보안 통신에 사용되는 프로토콜
    • HTTP 프로토콜에 SSL/TLS 암호화 프로토콜이 결합된 방식
    • 서버와 클라이언트 간에 전송되는 데이터가 암호화되어 도청 및 변조로부터 더 안전하게 보호됨
  • 동작 과정 Untitled
    1. 서버는 암호화에 사용되는 공개 키를 포함하는 SSL/TLS 인증서를 클라이언트에게 보낸다.
    2. 클라이언트는 CA(인증 기관)의 서명을 확인하고 인증서가 취소되지 않았는지를 확인하여 인증서의 신뢰성을 확인한다.
    3. 클라이언트는 대칭 암호화 키를 생성하고 서버의 공개 키를 사용하여 암호화한다.
    4. 암호화된 대칭 키는 서버로 다시 전송되며, 서버는 개인 키를 사용하여 복호화한다.
    5. 이제 클라이언트와 서버는 동일한 대칭 키를 공유하고 데이터를 암호화하고 복호화하는 데 사용할 수 있다.

hosts

  • 개념
    • Linux 기반 OS에서 호스트명과 IP 주소를 매핑해주는 파일
    • /etc/hosts에 위치 Untitled
  • 특징
    • 브라우저에서 호스트명으로 입력을 하면 시스템이 해당 파일에서 일치하는 IP 주소가 있는지 찾고 해당 IP를 이용해 서버에 연결한다.
    • 로컬 머신에서 웹사이트를 테스트하거나 특정 웹사이트를 다른 IP 주소로 리다이렉트해서 블로킹하는데 유용하다.

PID1

  • 개념
    • UNIX 계열 운영체제에서 첫 번째로 시작된 프로세스를 일컫는 말.
    • 시스템 내의 다른 모든 프로세스들의 부모 프로세스가 되며, 특별한 역할을 지닌다.
  • 도커에서
    • 컨테이너가 시작될 때 가장 먼저 시작되는 프로세스
    • 컨테이너 내에서 동작하는 모든 프로세스를 관리할 책임이 있다.
    • 주로 Dockerfile에 정의된 entrypoint 명령에 해당한다.

Dumb-init

  • 개념
    • 단순한 프로세스 관리/init 시스템
    • 컨테이너 내에서 PID1 처럼 동작하도록 디자인되었다.
  • 목적
    • 프로세스 수거 문제를 해결하기 위해 사용된다.
      • 프로세스 수거 문제(process reaping problem)
        • PID1 또는 메인 프로세스가 시그널을 제대로 처리하도록 디자인되지 않은 경우 자식 프로세스를 수거하지 못할 수 있다. 이로 인해 좀비 프로세스가 생겨난다.
    • 컨테이너로 전달되는 시그널(SIGTERM, SIGINT 등)을 컨테이너의 메인 프로세스에게로 포워딩해주는 역할.
    • 컨테이너가 중지될 때, 컨테이너가 제대로 꺼지고 자원이 회수되는 것을 보장한다.
    • 그밖에도 좀비 프로세스를 수거하거나(reaping) 메인 프로세스가 시작되기 전에 환경 변수를 설정하는 등의 역할을 한다.

su 명령어

개념

  • substitute user
  • 한 유저에서 다른 유저로 변경하는 명령어

사용법

  • 방법 1
    1
    
      su [username]
    

    su

    • 현재 경로와 환경에서 새로운 셸을 로그인한다.
  • 방법 2
    1
    
      su - [username]
    

    su

    • 대상 유저의 설정으로 완전히 변경한다.
    • 경로 또한 해당 유저의 홈 디렉토리로 변경된다.

sudo와 su의 차이

  • 두 명령어 모두 현재 유저의 권한을 높여주는 명령어이다.
  • su는 대상 계정의 암호를 필요로 한다.
  • sudo는 현재 유저의 암호를 필요로 한다.

sudo -i vs su -

  • sudo -i
    • 명령어나 셸을 루트 권한으로 실행하는 명령어
  • su -
    • 사용자에게 전체 로그인 환경을 제공한다.
    • 시스템 관리 작업을 위한 환경을 설정하는데 유용하다.

CGI

Untitled

  • Common Gateway Interface
  • 웹서버와 외부 프로그램을 연결해주는 표준화 된 프로토콜
  • 각 요청이 들어올 때마다 새로운 프로세스를 생성한다.
    • 서버에 부하가 발생할 수 있다.

FastCGI

Untitled

  • Fast Common Gateway Interface
  • 웹 애플리케이션의 성능과 확장성을 향상시키기 위해 CGI에서 확장됨.
  • 한 개의 프로세스만 만들어서 요청을 전달한다.
    • 프로세스를 생성하는 데 따른 오버헤드를 크게 줄일 수 있으므로 응답 시간이 빨라지고 서버 확장성이 향상됨.

PHP-fpm (FastCGI Process Manager)

  • 요청받은 PHP 파일을 가져오는 역할
  • 동작 방식
    1. 클라이언트(브라우저)가 PHP 파일을 요청한다.
    2. 서버는 요청을 받고 이를 FPM에 전달한다.
    3. FPM은 PHP 스크립트를 실행하고 결과를 서버에 돌려준다.
    4. 서버는 받은 결과를 클라이언트에게 준다.

Ref.

This post is licensed under CC BY 4.0 by the author.

Inception ① 배경 지식 : Docker

Inception ③ 구현 과정