2024/08 58

[Linux] 파일 시스템(/etc/fstab)

/etc/fstab 파일은 리눅스 시스템에서 파일 시스템을 부팅 시 자동으로 마운트 할 수 있도록 설정하는 중요한 구성 파일이다. 이 파일에는 시스템의 각 파일 시스템, 스왑 공간, 네트워크 파일 시스템(NFS) 등을 정의하고, 부팅 시 어떤 위치에 어떻게 마운트 할지를 결정한다.만약 이 파일의 구성이 잘못되어 버린다면 부탕시 파일시스템 마운트 과정에서 부팅이 멈추어 버릴것이다. /etc/fstab 파일의 형식각 라인은 특정 파일 시스템 또는 스왑 공간을 나타내며, 다음과 같은 필드를 포함한다:파일 시스템 (UUID 또는 디바이스 경로):예: UUID=0400035f-3725-4df6-822a-4d41da31ff41파일 시스템의 고유 식별자(UUID) 또는 장치 파일 경로(예: /dev/sda1)를 지정..

CS 2024.08.26

[Linux] 호스트네임 관리와 네트워크 설정

시스템 호스트네임 관리리눅스 시스템에서 호스트네임은 시스템을 네트워크 상에서 식별하는 중요한 요소이다. 호스트네임은 네트워크 통신에서 다른 컴퓨터와의 연결 및 식별에 사용된다. 호스트네임 설정hostnamectl 명령어는 시스템의 호스트네임을 설정하거나 변경하는 데 사용된다. 단순히 시스템의 이름을 설정하는 것 이상으로, 이 명령어는 시스템이 재부팅되더라도 설정된 호스트네임을 유지하게 하며, 네트워크 상에서의 시스템 정체성을 확립한다.새로운 호스트네임을 설정하려면 다음과 같은 명령어를 사용한다.sudo hostnamectl set-hostname new-hostname이 명령어를 실행하면, 시스템의 호스트네임이 new-hostname으로 변경된다. 이 변경 사항은 즉시 적용되며, 시스템의 네트워크 식별자..

CS 2024.08.26

[Linux] 스왑 공간

스왑 공간은 리눅스 시스템에서 물리적 메모리(RAM)가 부족할 때, 디스크의 일부를 임시 메모리로 사용하는 공간이다. 시스템의 RAM이 가득 차면 사용하지 않는 데이터나 프로그램의 일부를 스왑 공간으로 옮겨 RAM을 확보하게 된다. 이 과정을 스왑아웃(swap out)이라고 하며, 스왑 공간에서 다시 RAM으로 데이터를 가져오는 과정은 스왑인(swap in)이라고 한다.스왑은 크게 두 가지 형태로 존재할 수 있다:스왑 파티션: 디스크의 일부를 스왑 전용 파티션으로 할당한 것.스왑 파일: 일반 파일 시스템에서 파일로 존재하는 스왑 공간. 스왑 공간의 역할메모리 부족 시 도움: RAM이 부족해지면 스왑 공간을 활용하여 시스템의 안정성을 유지할 수 있다.대용량 작업 지원: 스왑 공간을 활용하면 대규모 데이터 ..

CS 2024.08.26

[K8s] 설치 시 스왑 비활성화의 필요성

Kubernetes는 컨테이너 관리와 리소스 할당을 엄격하게 제어하는 시스템이다. 스왑이 활성화된 경우, Kubernetes의 메모리 관리 로직이 예상대로 작동하지 않을 수 있으며, 이는 시스템 불안정성으로 이어질 수 있다.스왑 비활성화 이유메모리 관리 일관성: Kubernetes는 노드의 물리적 메모리만을 기준으로 리소스를 할당하며, 스왑 메모리를 포함하지 않는다. 스왑이 활성화된 경우 메모리 부족 상황을 정확히 감지하지 못할 수 있다.안정성: 스왑 사용으로 인해 컨테이너의 메모리 사용량이 증가하면, Kubernetes가 이를 적절히 관리하지 못할 수 있으며, 이는 전체 클러스터의 안정성에 부정적인 영향을 미칠 수 있다.스왑 비활성화 방법Kubernetes 설치 전에 스왑을 비활성화하려면 다음 명령어를..

DevOps/K8S 2024.08.26

[Git] Merge 전략

Git에서 브랜치를 병합할 때 사용할 수 있는 다양한 병합 전략들이 있다. 각 전략은 특정 상황에 맞게 사용되며, 프로젝트의 커밋 히스토리를 관리하는 데 중요한 역할을 한다. Fast-Forward Merge병합할 브랜치가 다른 브랜치에서 파생된 이후 해당 브랜치에 새로운 커밋이 없을 때 사용된다. 이 경우, 병합 브랜치는 대상 브랜치의 최상위 커밋 위에 그대로 이어지게 된다.사용 방법:git merge --ff-only 기본적으로 git merge 로도 Fast-Forward 병합이 수행된다. --ff-only 옵션을 추가하면 Fast-Forward 병합이 불가능한 경우 병합이 거부된다.언제 사용해야 하는가?독립적인 작업이 없을 때: main 브랜치에서 새로운 커밋이 없고, feature 브랜치에서만 ..

카테고리 없음 2024.08.25

[NuxtJS] nuxt.config.js

ssr (Server-Side Rendering)Nuxt.js 애플리케이션이 페이지를 렌더링 하는 방식을 제어한다. 서버 사이드 렌더링(SSR)과 클라이언트 사이드 렌더링(CSR) 중에서 선택할 수 있다. ssr: true: 서버 사이드 렌더링을 활성화하여 페이지를 서버에서 렌더링 한다. 이 경우, 사용자가 페이지를 요청할 때 서버가 HTML을 생성하여 클라이언트에 전송한다. 이 방식은 초기 로딩 속도가 빠르고 SEO(검색 엔진 최적화)와 페이지 로딩 성능이 향상될 수 있다. Nuxt.js의 기본값이다. ssr: false: 클라이언트 사이드 렌더링만 수행하여 서버에서 렌더링하지 않는다. 이 경우, 페이지는 클라이언트 브라우저에서 JavaScript를 통해 렌더링 된다. 초기 페이지 로딩 시 HTML이 ..

Javascript/NuxtJS 2024.08.25

[NuxtJS] Plugin

플러그인은 Nuxt.js 애플리케이션의 전역적으로 사용할 수 있는 기능을 확장하는 JavaScript 파일이다. 플러그인은 애플리케이션 초기화 시 실행되며, Vue 컴포넌트, Vue 인스턴스, Vuex 스토어 등에서 공통적으로 사용할 수 있는 메서드나 서비스를 정의한다. 플러그인 정의플러그인은 plugins 디렉토리 또는 nuxt.config.js에서 설정된 다른 경로에 저장된다. 플러그인의 정의는 기본적으로 다음과 같은 형식으로 이루어진다:// plugins/my-plugin.jsexport default (context, inject) => { // context는 Nuxt.js의 컨텍스트 객체이다. // inject 함수는 전역으로 사용할 수 있는 메서드를 등록한다. inject('myMeth..

Javascript/NuxtJS 2024.08.25

[NuxtJS] 전역 객체

$nuxtNuxt 애플리케이션의 루트 인스턴스에 대한 참조로, 애플리케이션의 전역 상태나 기능에 접근할 때 사용된다. Vue 컴포넌트 내에서 this.$nuxt를 통해 접근할 수 있다.refresh(): 현재 페이지를 강제로 리프레시하고 데이터를 다시 가져온다.navigateTo(path): 특정 경로로 프로그래밍적으로 이동한다. (Nuxt 3에서 도입된 기능)isOffline: 애플리케이션의 네트워크 연결 여부를 확인할 수 있다. $routerthis.$router는 Vue Router 인스턴스를 나타낸다. Vue 애플리케이션 내에서 라우팅 관련 작업을 관리하는 객체로, 라우트를 변경하거나 라우트 관련 정보를 처리할 때 사용된다. 이 객체를 통해 애플리케이션의 내비게이션을 조작할 수 있다.push(pa..

Javascript/NuxtJS 2024.08.25

DBCP (Database Connection Pooling)

데이터베이스 커넥션은 데이터베이스와의 연결을 효율적으로 관리하기 위해 TCP 연결을 사용한다. 데이터베이스 커넥션은 생성과 종료에 비용이 많이 들기 때문에, 커넥션 풀을 사용하여 이러한 비용을 줄인다. 커넥션 풀을 통해 미리 생성된 커넥션을 재사용함으로써 성능을 향상시키고 자원 소모를 줄인다.  각 커넥션의 설정은 클라이언트와 DB 서버 양쪽에서 모두 잘 이해하고 설정해야 한다. DB 서버 설정1. max_connections클라이언트와 DB 서버 간의 최대 동시 연결 수를 설정한다.max_connections 값이 4로 설정된 경우, 데이터베이스 서버는 동시에 최대 4개의 클라이언트 연결을 허용한다.DBCP의 최대 커넥션 수(maxTotal)가 DB 서버의 max_connections보다 크면, DB ..

Database 2024.08.17

MVCC (Multiversion Concurrency Control)

MVCC의 핵심은 데이터의 여러 버전을 유지하여 트랜잭션이 시작된 시점에 맞춰 데이터를 읽을 수 있도록 하는 것이다. 이를 통해 각 트랜잭션은 자신이 시작된 시점의 데이터 스냅샷을 사용하여 일관성 있는 읽기를 보장받게 되며, 읽기 작업과 쓰기 작업이 서로를 차단하지 않는 환경을 가능하게 한다. 즉, 한 트랜잭션이 데이터를 수정하는 동안 다른 트랜잭션이 그 데이터를 읽더라도 서로 간섭하지 않게 된다.이러한 MVCC의 동작은 데이터베이스 성능을 크게 향상시키는 장점이 있지만, 각 데이터에 대한 추가적인 버전 관리를 필요로 하므로 이를 효율적으로 처리하기 위한 메커니즘이 중요하다. 격리 수준과 MVCC의 적용트랜잭션의 격리 수준(Isolation Level)은 여러 트랜잭션이 동시에 실행될 때 데이터의 일관성..

Database 2024.08.17