컨테이너 격리 컨테이너는 격리된 상태로 생성됩니다. redis로 예를 들어 보겠습니다. docker를 통해 redis 서버를 실행하고, nodejs를 별도로 실행한다면 redis서버와 node.js에서의 redis client가 연결이 막힌 상태가 됩니다. 이러한 연결을 해결해서 컨테이너끼리 통신할 수 있도록 하는 것이 도커 컴포즈(docker compose)입니다. 컨테이너 의존 docker compose는 여러개의 컨테이너를 하나의 그룹으로 묶어서 함께 실행 및 관리하도록 합니다. 이 컨테이너들은 의존성이 있거나 함께 동작해야 할 경우를 고려하여 사용됩니다. 예를 들어, 웹 서버와 데이터베이스를 함께 사용해야 할 경우 웹 서버와 데이터베이스를 각각 독립적으로 실행하는 대신 docker-compose를..
도커 이미지 docker create Dockerfile 도커 이미지를 만들기 위한 설정 파일. 도커 컨테이너가 어떻게 행동해야 하는지 대한 설정 정의. # 베이스 이미지 명시 FROM baseImage # 추가로 필요한 파일들을 내려받음 RUN command # 컨테이너 시작 시 실행할 명령어를 명시한다. CMD ["executable"] FROM 이미지 생성 시 기반이 되는 이미지 레이어 명시. : 형식으로 작성한다. RUN 도커 이미지가 생성되기 전에 수행할 셸 명령어 CMD 컨테이너가 시작됐을 때 실행할 실행 파일 또는 셸 스크립트. 이 명령어는 도커 파일 내에서 한번만 사용 가능. 이미지 빌드하기 docker build . 해당 디렉토리에 Dockerfile을 찾아 도커 클라이언트에 전달한다. ..
도커란? 어떤 프로그램을 내려받는 과정을 간단하게 만들기 위한 것이다. 프로세스 격리 기술들을 사용해 컨테이너라는 유닛을 기반으로 실행하고 관리하며 환경에 구애받지 않고 애플리케이션을 배포, 확장할 수 있다. 컨테이너란? 도커 컨테이너는 코드와 모든 종속성을 패키지화하여 응용 프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어의 표준 단위다. 이미지란? 도커 이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는 데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 소프트웨어 패키지다. 즉, 도커 이미지가 프로그램을 실행하는 데 필요한 설정이나 종속성을 갖고 있고, 이런 이미지를 이용해 컨테이너를 생성하는 것...
그간 근황 정보처리기사 2회차 시험 + ict인턴십 지원 + 캡스톤 프로젝트의 마무리라는 세 가지 일을 한번에 진행한다고 정신 없었다. 여러가지 일을 처리 하면서 역시 인생은 새옹지마라고 뜻 대로 되는게 하나 없구나 싶었다. 타임라인별로 그 간의 일을 정리해 보고자 한다. 정보처리기사 필기 시험과 ict 인턴십 지원 2023 2회 정보처리기사 시험에 응시하게 되었다. 사실 졸업 요건은 이미 채워서 기사시험에 응시할 필요가 있지는 않았는데.. - 없어서 손해볼 것은 없다. - 어차피 공부해야 할 지식이다. 라는 두 가지 이유로 준비를 시작했다. 1회차를 미리 보고 온 동기들에게 물어보니 학교에서 배웠던 이론들에서 조금만 더 공부하면 된다고 하였으며 실제로 모의 기출 3회만 풀어보고 응시했다. 다행이 필기는..
시작 새로운 프로젝트를 들어가며 AWS에 서비스, 개발 서버를 배포하기위해 aws의 인프라에 대해서 공부하게 되었다. 이에 대해 공유하고자 한다. 본 게시글에서는 어떻게 직접 구현하는지 보다는 여러가지 리소스에 대한 개념적인 내용에 대해서만 정리하도록 한다. VPC (virtual private cloud) VPC에 대해 알기 전 네트워크에 대해 알아야 한다. 네트워크란? 인프라 관리자가 주체가 되어 관리하는 장소이다. 네트워크 내의 기기는 서로 자유롭게 통신이 가능해야 하며 이런 네트워크를 우리는 LAN(local area network)라고 부른다. VPC VPC는 물리적인 기기를 이용하지 않고 가상의 네트워크를 구축하는 것이다. 사용자가 설정한 IP주소 범위 내에서 격리된 네트워크를 생성한다. VP..
집계 프레임워크란? 집계 프레임워크의 설명을 보고 사실 잘 이해가 가지 않았다. 그래서 나는 조금더 쉬운 설명을 위해 bing AI에게 물어보았고, 답을 얻을 수 있었다. 결론적으로 집계 프레임워크는 컬렉션에 있는 여러 도큐먼트의 데이터를 다양한 방식으로 결합해서 새로운 데이터를 만드는 쿼리 언어라고 이해했다. 집계 프레임워크는 파이프라인 개념을 기반으로 한다. 파이프라인이랑 위 사진에도 나와 있듯이 데이터 처리를 여러 단계로 나누어 처리하는 방식이며, 각 단계에서 입력 데이터를 처리하여 출력 데이터를 만들어 다음 단계로 전달한다. 파이프라인에는 대표적으로 일치, 선출, 정렬, 건너뛰기, 제한 단계가 있다. 사용하는 방법 집계 쿼리를 사용하기 위해서는 aggregate라는 메서드를 호출해야 한다. 파이프..
인덱스란? 인덱싱은 책의 목차와 같다. 원하는 데이터를 찾고자 처음부터 끝까지 찾는게 아닌, 목차를 보고 원하는 부분으로 바로 가서 찾는 것으로 이해하면 좋다. 이처럼 자주 조회되는 필드(데이터)에 대해 따로 저장을 진행하여 탐색 속도를 빠르게 한다. 따로 저장을 진행하므로 일정 용량을 차지한다. 언제 사용하는가? 정의만 보면 좋아보이지만, 단점이 명확히 있다. 인덱싱 된 필드에 쓰기(삽입, 갱신, 삭제)작업은 오래 걸린다는 것이다. 쓰기 작업 이후 데이터가 변경될 때 마다 도큐먼트만이 아닌 모든 인덱스를 갱신한다. 적합한 쿼리 구성 인덱스를 진행할 필드의 선정은 자주쓰는 쿼리, 빨리 수행해야 하는 쿼리를 조사해 공통적인 키 셋을 찾아 진행하도록 한다. 독특한 쿼리, 관리자에 의해 실행되는 쿼리 등 소요..
조건 쿼리 $lt, $lte, $gt, $gte 각각 =에 대응한다. // 18세에서 30세 사이의 사용자 model.find({"age" : {"$gte" : 18 "$lte" : 30}}); $ne not equal로 같지 않음을 표현 // john이 아닌 모든 사용자 model.find({"name" : {"$ne" : "john"}}) $in, $or 조건에 일치하는 도큐먼트를 찾는다. $in은 다른 데이터형도 사용 가능하다. 반대로 배열 내 조건과 일치하지 않는 도큐먼트는 $nin // $in // 이름이 smaivnn이거나 potpae인 사용자를 찾는다. model.find({"name" : {"$in" : ["smaivnn", "potpae"]}}) $or은 조건들의 배열을 취한다. 또한 다..
도큐먼트의 특정 부분만 갱신할 때 갱신 연산자를 사용한다. $set 필드 값을 설정한다, 필드가 존재하지 않으면 새 필드를 생성한다. model.updateOne( {}, {"$set" : {"newField" : "thisIsNew" }} // 새로운 필드 생성 ) model.updateOne( {}, {"$set" : {"newField" : "chageField" }} // 필드 내용 변경 ) model.updateOne( {}, {"$set" : {"author.name" : "johnDoe" }} // 내장 도큐먼트 이용시 ) $inc 키의 값을 증가시킨다. 키가 없다면 새 필드 생성 후 해당 값 만큼 0에서 더한다. $set과 비슷하지만 숫자를 증감하기 위해 존재한다. model.updateO..
본 게시글은 직접 공부한 내용을 바탕으로 작성한 글입니다. 만약 틀린 부분이 있다면 댓글을 통해 말해주시면 감사하겠습니다. 웹서버의 역할은 뭘까요? 서버 개발자는 개발을 하며 웹서버, 웹서버 합니다. 그리고 우리는 node.js를 이용하여 처음 개발을 시작하며 node.js를 사용해서 "웹서버를 연다!"라고 배우며 node.js를 배우기 시작하죠, 하지만 우리는 지금 Nginx에 대해 공부하고 있습니다. 그런데 어라? 조금 찾아보니 Nginx도 웹서버라고? 라는 생각이듭니다. 이에 대해 설명해 보겠습니다. 웹서버 서버 개발자가 말하는 웹서버는 일반적으로 아래와 같은 구조의 형태를 말하는 웹 서버입니다. web server → was (web application server) → database 이 일반..