Redis 등장 배경 서버 프로그램이 데이터를 영구적으로 저장하기 위해서 데이터베이스를 사용한다. 데이터베이스는 주로 데이터 간의 관계를 정의한 RDBMS(Relational DataBase Management System)를 사용한다. RDBMS는 데이터 간의 복잡한 관계를 보여줄 때 매우 효과적이다. 하지만 하드 디스크에 데이터를 저장하고 읽...
next.js 빌드 시 환경 변수가 undefined 인 문제 해결 (feat. docker-compose)
문제 상황 Next.js 로 작성한 프론트엔드 프로젝트를 docker 와 docker-compose 를 이용해서 컨테이너로 올리고 싶었다. 개발할 때는 .env 파일을 docker-compose 를 통해서 넣어줬고, 환경 변수를 잘 인식했다. 하지만 배포를 위해 npm run build 명령어로 빌드하고 npm run start 로 실행해보니 환...
[회고] 42서울 C++ 기반 nginx 샘플링 프로젝트 회고
들어가며 Nginx처럼 작동하는 웹 서버를 만드는 webserv 과제를 드디어 마쳤다. 약 두 달간 팀원들과 치열하게 머리를 맞대며 고민하고, 오류를 잡기 위해 늦은 시간까지 모니터 앞에서 보낸 시간들이 아득하게 떠오른다. 이전에 진행했던 Inception 과제에서는 Nginx를 사용했지만, 정작 Nginx가 어떻게 작동하는지, 설정 파일을 어떻게...
PID 1 과 dumb-init (feat. PID 0)
PID 1 리눅스의 시그널은 Docker 컨테이너 내부의 프로세스 생명 주기를 제어하는 방법이다. 그래서 Docker 와 kubernetes(이하 k8s) 는 시그널을 사용해서 컨테이너 내부의 프로세스와 통신하고, 컨테이너를 종료하기 위해 사용한다. Docker 와 k8s 는 컨테이너 내부에 PID 1 이 있는 프로세스에만 신호를 보낼 수 있다....
DNS 작동 방식
DNS란? 우리는 구글에 접속하기 위해 웹 브라우저 주소창에 www.google.com 라는 문자열을 입력한다. 어떤 사이트에 접속한다는 것은 IP 주소를 기반으로 클라이언트와 서버가 통신하는 것이다. 그래서 클라이언트는 사이트가 운영하는 서버의 IP 주소를 알아야 원하는 페이지를 볼 수 있는 것이다. 하지만 사람이 숫자로 된 IP 주소를 입력해...
프로그래머스 Level 1 - 기사단원의 무기 (JavaScript)
프로그래머스 - Level1 기사단원의 무기 문제 설명 숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다. 각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제...
nginx란 무엇인가
Nginx Nginx 는 웹 사이트의 서버(WAS)를 도와주는 비동기 이벤트 기반 구조의 경량화 웹 서버 프로그램이다. 클라이언트가 요청한 정적 파일을 응답하는 HTTP Web Server 로 활용하기도 하며, Reverse Proxy Server 로 활용하여 WAS 의 부하를 줄이는 로드 밸런서 역할을 하기도 한다. (참고: Forward Pro...
Forward Proxy와 Reverse Proxy
프록시(Proxy)란? 프록시는 사전적인 의미로 ‘대리인’, ‘중개자’ 라는 의미를 가지고 있다. 컴퓨터 공학에서 프록시는 보안상의 문제로 직접 통신을 주고 받을 수 없는 두 PC 사이에서 통신을 중계하는 것을 의미한다. 이처럼 중계 기능을 수행하는 서버를 ‘프록시 서버’라고 한다. 출처: What is a Proxy Server? How ...
HTTP와 HTTPS, 그리고 SSL/TLS
HTTP 와 HTTPS HTTP HTTP 는 HyperText Transfer Protocol 의 약자로, 하이퍼텍스트를 전송하기 위해 사용되는 통신 규약(Protocol)이다. 즉, 인터넷에서 HTML 과 같은 문서를 클라이언트(사용자)의 웹 브라우저가 웹 서버(서비스 제공자)에 요청하거나 웹 서버가 클라이언트에서 응답을 보낼 때 지켜야 하는 ...
Docker network 개념 정리
Docker network 개념 도커 컨테이너는 격리된 환경에서 실행되기 때문에 기본적으로 다른 컨테이너와 통신을 할 수 없다. 그래서 여러 컨테이너끼리 통신을 하기 위해서는 같은 도커 네트워크에 연결해야 한다. 도커 네트워크는 기본적으로 가상 네트워크 인터페이스를 생성한다. Linux bridge 도커는 linux bridge 를 이용해서 ...