Logic in Code,
Freedom in Travel.

인생 뭐 있나 사람 사는거 다 똑같지

전체 글

DevOps/도커 (Docker)

[Docker] - 005. Docker Compose 활용하기

Docker Run 을 사용하여 Container 실행이 가능하다.예를 들어 docker run -it ubuntu bash 을 아래와 같이 docker-compose.yml 으로 작성할 수 있다. version: '3.8'services: ubuntu: image: ubuntu Docker Compose 가 없다면, Make 파일을 사용하여 Docker run CLI 을 코드로 기록할 수 있지만, Docker Compose 을 통해 network, option 등을 쉽게 관리할 수 있다. 그렇다면 Docker Compose 는 무엇인가?도커 컴포즈(Docker Compose) 란? 멀티 컨테이너 도커 애플리케이션을 코드로 정의하고 실행하기 위한 도구이다. 이를 통해 여러 컨테이너를 단..

2024. 5. 4. 00:47
Programming/스프링 부트(Spring Boot)

리액티브 프로그래밍 RxJS Marbles 주요 연산자 자바로 구현하기

RxJS 의 개념 싱글 (Single Item)멀티플 (Multiple Items)PULL (Sync)함수 (Function)이터레이터 (Iterator) - array, symbol, generatorPUSH (Async)프로미스 (Promise) - async & await 옵저버블 (Observable)싱글: 하나의 값이나 이벤트를 다루는 것 멀티플: 여러 개의 값이나 이벤트를 다루는 것 PULL: 데이터를 받을지 결정하는 것 PUSH: 데이터를 보낼지 결정하는 것Reactive Programming명령형 프로그래밍 언어에서 표현식은 순차적으로 실행된다. a = 10;b = 20;c = a + b; // c = 30 a = 40; // c = 30 반응형 프로그래밍 언어에서는 데이터 흐름의 변경..

2024. 5. 2. 22:49
DevOps/도커 (Docker)

[Docker] - 004. Multi Stage Build 와 Base 이미지 만들기

도커 이미지, 도커 컨테이너를 효율적으로 관리하려고 할 때 가 있다.만약 여러 프로젝트에서 공용으로 사용할 Ubnutu 이미지를 만들어 Base 이미지로 활용될 수 있으며, CI/CD 시간을 줄이고자 Multi Stage Build 을 이용할 수 도 있다. 멀티 스테이지 빌드멀티 스테이지 빌드는 하나의 Dockerfile에서 스테이지를 여러 개로 나누어 빌드 프로세스를 만드는 것을 말한다.각 스테이지는 이미지의 일부분을 생성하며, 이전 스테이지에서 생성된 파일을 다음 스테이지로 전달할 수 있다. 이 과정으로 최적화가 가능하다.멀티 스테이지 빌드의 장점이미지 크기 감소빌드 프로세스 간소화의존성 관리 용이성이미지 크기 감소사용 예시CI/CD 과정에서 쓰이며 마지막 스테이지에는 최소한의 파일과 패키지만 존재한..

2024. 4. 19. 01:04
DevOps/도커 (Docker)

[Docker] - 003. DockerFile 캐싱 전략

Dockerfile은 Docker 이미지를 빌드할 때 사용하는 스크립트다.이미지를 빌드할 때 Docker는 Dockerfile 의 각 명령어를 실행하고 그 결과를 이미지 Layer 별로 캐싱한다.이미지 Layer 캐싱을 통해 빌드 시간을 절약할 수 있다. 도커 이미지 의 Layer 을 적절히 나누어 캐싱하기 위해서는 캐싱 가능한 명령어를 최상단에 배치하고, 변경 가능성이 높은 명령어를 뒤로 배치하는 두가지만 지켜도 좋다. 또한 도커 공식 홈페이지에서 안내하는 멀티스테이지 빌드와 이미지 레이어를 적절히 분리하는 과정까지 추가하여 더 좋은 퍼포먼스를 낼 수 있으며 이러한 전략을 통해 이미지 빌드 성능을 높이고 불필요한 시간과 리소스를 절약할 수 있다. Multi-stage buildsLearn about ..

2024. 4. 19. 00:39
Database/RDBMS

클러스터드 인덱스와 비클러스터형 인덱스

인덱스는 테이블이나 뷰에서 행의 검색 속도를 높일 수 있다. 클러스터드 인덱스클러스터형 인덱스는 해당 키 값을 기반으로 테이블이나 뷰의 데이터 로우를 정렬하고 저정한다.이러한 키 값은 인덱스 정의에 포함된 컬럼이다. 데이터 로우 자체는 한 가지 순서로만 저장될 수 있으므로 테이블당 클러스터형 인덱스는 하나만 존재할 수 있다. 때문에 일반적으로는 PK 또는 unique not null 을 사용한다.테이블의 데이터 로우가 정렬된 순서로 저장될 때만 테이블에 클러스터형 인덱스가 포함된다. 테이블에 클러스터형 인덱스가 있는 경우 테이블을 클러스터형 테이블이라고 한다. 테이블에 클러스터형 인덱스가 없는 경우 해당 데이터 로우는 힙이라는 순서가 지정되지 않은 구조에 저장된다.비클러스터형 인덱스비클러스터형 인덱스에는..

2024. 4. 18. 23:34
Database/RDBMS

데이터베이스 인덱스(클러스터드, 세컨더리, 커버링)

도서관에서 책을 찾는 두가지 방법인덱스라는 것을 이해할 때 "인덱스는 책 뒤에 있는 색인 같은 거야"라고 이해를 했다. 하지만 실무에서 대용량 트래픽을 처리하는 환경에서는 인덱스는 색인 그 이상이었다. 데이터베이스에서 데이터를 찾는 방법은 두가지가 있다. Full Table Scan: 책의 처음부터 끝까지 한 페이지씩 다 넘겨보며 찾기.Index Seek: 색인을 통해 몇 페이지에 있는지 확인하고 바로 펼치기.데이터가 수백만 건이라면 1번은 노답이다. 그래서 2번이 핵심 포인트인 클러스터드(Clustered), 세컨더리(Secondary), 그리고 튜닝의 끝판왕인 커버링(Covering) 인덱스에 대해 정리했다. 1. 클러스터드 인덱스 (Clustered Index)"책 그 자체의 정렬 순서"클러스터드 ..

2024. 4. 18. 03:17