분류 전체보기(329)
-
Docker compose 파일 작성 with PostgreSQL
설치 도커 설치는 아래 링크에서 진행할 수 있다. https://www.docker.com/products/docker-desktop/ Docker Desktop: The #1 Containerization Tool for Developers | Docker Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux. www.docker.com 설치 확인 docker --version 구글에 docker hub 검색 https://hub.docker.com/ Docker Hub Container Image..
2023.12.14 -
Docker Compose 란?
docker-compose는 docker를 설치하면 같이 기본으로 딸려오는 기능이다. 조금은 다른점이 있는데 예를 들어서 컨테이너로 nestjs 프로그램을 랩핑하면 이 하나의 컨테이너를 도커에다 실행했을때 nestjs 프로그램을 설계한 대로 실행되도록 할 수 있다. 그런데 컨테이너를 엄청 많이 만들기 시작한다면? nestjs 만들고, postgreSQL도 만들고, MongoDB도 만들고 Nginx 도 만들고 Redis 도 만들고 계속 만든다면? 1개나 2개일때는 도커로 쓸만했는데 컨테이너 개수가 많아지니까 관리하기가 너무 어려워진다. 이 컨테이너들을 관리하기 위해서 나온게 kubernetes, Docker compose, Docker swarm 같은 기술이다. 이중에서 현대의 가장 중요한 기술 중 하나..
2023.12.14 -
어떤 문제를 해결하기 위해 Docker 가 등장했을까
실무에 투입되거나 취업을 하거나 하면 혼자 코딩하지 않는다. 혼자 코딩을 하더라도 이 소스 코드를 결국 클라우드 같은데다 올린다. 어딘가 서버에 올려서 다시 배포를 해야한다. 프로그램을 만들게 되면 여러 개의 컴퓨터에서 사용해야하는 상황이 온다. 여러 개의 컴퓨터에서 우리가 구동할 수 있어야 한다. 내 컴퓨터에서는 잘 되는데 작업물을 누군가에게 보내면 그 사람의 컴퓨터에서는 실행이 안되는 경우들이 있다. 환경이 다름에서 오는 같은 프로젝트가 잘 안되서 실행조차 못하거나 오랜 시간이 걸리는 상황이 많이 발생을 해서 굉장히 많은 솔루션들이 등장했다. 현대 세상에는 멀티 플랫폼이라는 문제가 있다. ex) 맥, 윈도우, 리눅스 전부다 환경이 다르다. 그렇기 때문에 각각의 플랫폼별로 무언가 설치를 하거나 환경을 ..
2023.12.14 -
SQL 기본
데이터는 왜 초기화 되는가? 코드를 저장하면 코드는 컴퓨터를 아무리 껏다가 켜도 그대로 남아있다. 이것이 SSD 의 역할 SSD 같은 경우는 우리가 데이터를 저장하게 되면 그 데이터가 고장나지 않는 이상 영구적으로 저장된다. 만약 코드를 실행하게 되면 SSD 에 저장되어 있던 코드가 램으로 올라가게 된다. SSD에 있던 코드가 그대로 램에 올라오는 것 즉 실행되고 있는 것만 램에 올라온다. 그래서 램에 위치해 있는 이 데이터가 실행이 되어서 서버를 실행하게 된다. 그런데 램에 올라간 데이터는 프로그램이 재시작되면 리셋된다. 이는 하드웨어적인 문제이다. 램은 데이터를 영구적으로 들고 있지 못한다. 그렇기 때문에 실행 도중에 생성된 변수들이나 변경된 값들은 유지될 수가 없다. 왜 램을 사용할까? 램이 속도가..
2023.12.13 -
Dependency Injection / Inversion of Control [의존성 주입 / 제어의 역전] [NestJS]
인스턴스를 생성하지 않았는데 컨트롤러에서 어떻게 주입을 받고 어떻게 서비스에 대한 권한과 접근이 가능할까? 이는 NestJS의 가장 핵심이 되는 요소중 하나이다. 일반 인스턴스화 클래스 B 를 클래스 A에 사용해야 한다면? class A { const b = B(); } class B { } A라는 클래스를 인스턴스로 만들때마다 A 안에 클래스 B의 인스턴스를 매번 새로 생성하게 된다. DI (Dependency Injection) class A { constructor(instance: B) } class B { } B라는 클래스를 생성을 해서 constructor에 입력해준다. 이를 주입이라고 한다. 외부에서 클래스 A가 생성될 때 무조건 클래스 B에 해당되는 인스턴스를 넣어주도록 정의를 하는 것이다..
2023.12.13 -
Redis 트랜잭션 Isolation & Lock
트랜잭션이란? 트랜잭션으로 묶게 되면 트랜잭션 내부에서 하나의 로직이 실패하여 오류가 나게되면 모두 취소시키며 그렇지 않으면 모두 성공시키는 것입니다. Redis 에서 트랜잭션이라니 조금 어색하다고 생각 할 수 있다. 하지만 여러 자료구조를 사용할 수 있는 Redis 의 특성상 트랜잭션을 잘 이용한다면 더 유용하게 다양한 상황에서 Redis를 사용할 수 있다. 읽기 일관성과 데이터 공유를 위해 Data Sets(Key/Value) Lock 을 제공한다. 또한 트랜잭션 제어를 위해 Read Uncommitted와 Read committed 타입 2가지 유형을 제공한다. 빅데이터 처리를 위한 플랫폼에는 Hadoop 과 같은 파일 시스템 기반도 있지만 가장 기본적인 단위의 트랜잭션을 제어할 수 없기 때문에 데..
2023.12.12