개발/DevOps 16

대용량 테이블을 위한 DB 파티셔닝

들어가기 앞서회사 내 DB 중에는 매월 약 40만 건 정도의 데이터가 누적되는 테이블이 존재한다. 게다가 10년동안 쌓여서 현재 약 4천만 건 정도 된다. 테라 단위의 빅데이터를 다루는 회사에 비할 바는 아니지만 테이블 하나에 조금 많은 양의 데이터를 저장하고 있는 것은 맞다. 가만히 놔두면 테이블이 점점 비대해져 아무 생각없이 쿼리를 날렸다가는 이도저도 못 하는 난처한 상황을 맞닥뜨리게 될 것이다.매월 약 40만건씩 늘어나는 테이블을 어떻게 관리하고 있을까?그렇다면 우리의 DB는 어떻게 되어 있을까?호기심은 여기서부터 시작했다.해당 테이블 DDL을 잠깐 보겠다.(실제와 다른 예시이다.)DDL (Data Definition Language) 데이터 정의어 데이터베이스를 정의하는 언어를 말하며 데이터를 생..

개발/DevOps 2024.12.08

트랜잭션과 격리 수준(Isolation Level)

1. 트랜잭션(transaction)이란?trans와 action이 합쳐진 단어로, trans는 변화나 이전을 의미하고, action은 행동이나 조치를 통해 뭔가 진행이 되는 걸 의미한다.데이터베이스에서 트랜잭션이란, 하나의 논리적 작업 단위를 구성하는 일련의 연산들의 집합을 트랜잭션이라고 한다. 주로 다양한 데이터 항목들을 엑세스하고 갱신하는 프로그램 수행 단위를 의미한다. 트랜잭션이 성공하면 전체 작업이 정상적으로 완료되어야 하고, 실패하면 아무 것도 실행되지 않고 처음 상태로 돌아가야 하는 등 흔히 ACID 라고 일컫는 특징이 있다.ACID란?ACID(원자성, 일관성, 독립성, 지속성)는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다. 즉 데이터베이스의 동시..

개발/DevOps 2024.12.08

Docker 빌드에서 운영까지 (using docker compose)

[목차] 1. 도커컴포즈란? 2. 도커컴포즈로 컨테이너 실행 2-1. 도커 컴포즈로 동작시키는 웹서버 예시 2-2. 도커 컴포즈 명령어 3. 빌드에서 운영까지 1. 도커컴포즈란? 여러 컨테이너를 일괄적으로 정의하고 실행할 수 있는 툴 - yaml 파일로 실행 요청 - 하나의 서비스를 운영하기 위해서는 여러 개의 애플리케이션이 동작해야 함 - 컨테이너화 된 애플리케이션들을 통합 관리할 수 있음 - 도커 컴포즈 설치 문서(Install the Compose standalone) : https://docs.docker.com/compose/install/other/ curl -SL https://github.com/docker/compose/releases/download/v2.14.2/docker-compo..

개발/DevOps 2022.12.30

Docker 컨테이너간 통신

[목차] 1. Container Network Model 2. port-forwarding 3. 컨테이너 네트워크 추가하기(고정 ip 사용하기) 4. 컨테이너끼리 통신하기 1. Container Network Model docker0 - virtual ethernet bridge: 172.17.0.0/16 - L2 통신기반 - container 생성 시 veth 인터페이스 생성 (sandbox) - 모든 컨테이너는 외부 통신을 docker0 통해 진행 - container running 시 172.17.X.Y 로 IP 주소할당 - 시스템에서 docker0 확인 ip addr brctl로 브릿지 확인 # 설치가 필요할 수 있음. apt install -y bridge-utils brctl show dock..

개발/DevOps 2022.12.29

Docker Container Storage

[목차] 1. 데이터 보존 방법 2. 컨테이너끼리 데이터 공유하기 3. 컨테이너 데이터 보존 테스트 4. volume 조회 및 삭제 5. 컨테이너끼리 데이터 공유하기 테스트 - 컨테이너 이미지는 readonly(ro), run으로 동작중일 때 readwrite(rw) 가능 - 컨테이너에 추가되는 데이터들은 별도의 RW 레이어에 저장 - Union File System(또는 Overlay): ro레이어와 rw레이어의 변경사항이 마치 하나인 것처럼 만들어서 보여주는 기술 - docker rm 명령어로 컨테이너를 삭제할 경우 rw 데이터도 삭제됨 1. 데이터 보존 방법 컨테이너가 만들어주는 데이터를 영구적을 보존하려면, docker host에다가 특정 저장소를 만들어 저장한다. - volume 옵션 사용 -v..

개발/DevOps 2022.12.29

Docker 컨테이너 리소스 관리

[목차] 1. Memory 리소스 제한 2. CPU 리소스 제한 3. Block I/O 제한 4. 리소스 모니터링 5. stress container 생성 6. cAdvisor 실행 1. Memory 리소스 제한 - 제한 단위는 b, k, m, g로 할당 옵션 의미 --memory, -m 컨테이너가 사용할 최대 메모리 양을 지정 --memory-swap 컨테이너가 사용할 스왑 메모리 영역에 대한 설정 메모리+스왑. 생략 시 메모리의 2배가 설정됨 --memory-reservation --memory 값보다 적은 값으로 구성하는 소프트 제한 값 설정 --oom-kill-disable OOM Killer가 프로세스 kill 하지 못하도록 보호 docker run -d -m 512m nginx:1.14 doc..

개발/DevOps 2022.12.29

Docker Registry 컨테이너 보관창고

- Docker Registry는 컨테이너 이미지를 저장하는 저장소를 말한다. - 도커닷컴에서 직접 운영중인 Public 도커 허브(hub.docker.com)가 있고, 사내 컨테이너 저장소인 Private Registry 등 2종류가 있다. - docker hub에 있는 이미지를 웹으로 검색할 수도 있고, cli환경에서 docker search [키워드명] 명령어를 통해서도 검색 가능하다. - 사내에서 private 컨테이너 저장소를 운영할 수 있도록 도와주는 registry 컨테이너 https://hub.docker.com/_/registry registry - Official Image | Docker Hub About Official Images Docker Official Images are a..

개발/DevOps 2022.12.28

Docker 컨테이너 만들기

[목차] 1. Dockerfile이란? 2. 대표 Dockerfile 문법 3. docker image 실행 4. docker hub 로그인 5. 만든 이미지 파일 hub에 푸시 docker 컨테이너는 개발한 애플리케이션(실행파일)과 운영환경이 모두 들어있는 독립된 공간이다. (예: node:12 / 소스코드 / 실행 명령어) MSA(Micro Service Architecture) 환경의 Polyglot 애플리케이션을 운영할 수 있다. (Polyglot Programming: 다양한 언어를 사용하여 프로그래밍 하는 것) 각각의 Application Service에 맞춰 Container를 만들어 낸다. 1. Dockerfile이란? - Container를 만들 수 있도록 조와주는 명령어 집합 - 쉽고,..

개발/DevOps 2022.12.27

Docker 이미지와 컨테이너 관련 명령어

- docker 이미지 검색 docker search [옵션] - docker 이미지 다운로드 docker pull [옵션] 뒤에 태그명 생략하면 latest 버전으로 자동 다운로드됨 - 컨테이너 이미지 레이어가 들어가는 곳 /var/lib/docker/overlay2 - 저장된 이미지 조회 docker images 또는 docker image ls - 다운 받은 이미지 상세보기 docker inspect [옵션] # --format 옵션 예제. 출력값 중에 특정 키의 값만 출력 docker inspect --format '{{.NetworkSettings.IPAddress}}' webserver #172.17.0.2 # alias 사용해 줄여서 사용할 수도 alias cip=docker inspect ..

개발/DevOps 2022.12.27

Docker 엔진 설치

[목차] 1. 리눅스에서 Docker(도커) 엔진 설치 2. 윈도우(window)에서 Docker 설치 3. 설치 확인 및 실행 4. 특정 계정에 Docker 관리자 권한주기 엔진만 설치하고자 하면 아래 주소로 접근할 수 있다. 설치는 아래 도커 설치 페이지에 자세히 적혀 있어서 사실 따로 정리할 게 없다. 1. 리눅스에서 Docker(도커) 엔진 설치 https://docs.docker.com/engine/install Docker Engine installation overview docs.docker.com - 설치에 필요한 명령어만 정리(centos 기준) # Set up the repository sudo yum install -y yum-utils sudo yum-config-manager \..

개발/DevOps 2022.12.27
728x90
반응형