본문 바로가기

반응형

분류 전체보기

(226)
[Linux] 디스크 마운트 (fdisk, mkfs, mount, df) 서버의 디스크 용량을 확인하고 추가 디스크를 마운트 작업을 정리한다. 1. 디스크 상태 확인 서버의 현재 디스크 정보를 fdisk 명령어를 사용하여 확인한다. fdisk 명령어는 서버의 디스크 파티션 정보를 출력하거나 디스크 파티션을 조작하는데 사용하는 명령어이다. 아래와 같이 fdisk 의 l 옵션을 사용하여 디스크 파티션 목록을 확인할 수 있다. 디스크 파티션 조회 결과로 /dev/xvda 에 연결되어 있는 디스크와 /dev/xvdb 에 연결되어 있는 디스크 두가지를 확인할 수 있다. 이중에서 /dev/xvda 디스크는 /dev/xvda1 으로 파티션이 나누어 있지만 /dev/xvdb 디스크는 파티션이 설정되어 있지 않은 것을 확인할 수 있다. df 명령어로 디스크의 용량을 확인하면, 위의 이미지에서..
[Linux] 사용자 권한 (sudo, sudoers, chmod, chown) linux 서버를 사용하기 위해서 사용자 계정을 만들어서 사용하다보면 권한 문제에 부딪히게 된다. 서로 다른 사용자가 만든 파일에 접근하거나 시스템 설정 등을 위해서 root 권한이 필요하곤 하다. 이와 관련해서 sudo 권한과 파일의 권한을 조작하는 chmod, chown 등을 정리해본다. 1. sudo sudo 는 Super User DO 의 줄임말로 명령어의 앞에 붙여서 사용하는 명령어이다. 일반적으로 root 권한이 없는 사용자가 sudo 를 사용하여 superuser, root 권한으로 명령어를 실행할 수 있도록 해준다. 이를 통해서 시스템의 관리자 권한을 root 계정뿐만 아니라 여러명이 사용할 수 있도록 한다. - sudoers sudo 명령어가 어떤 명령을 실행할 수 있는지는 /etc/su..
[Linux] 사용자 계정 생성 (adduser, useradd) 서버를 운영하면서 root 계정이 아닌 각각의 사용자별로 계정을 생성해야했다. 이에 더해서 때로는 특정 계정이 sudo 를 사용할 수 있도록 sudo 권한을 부여해야 하는 경우도 발생하였다. 이와 관련해서 ubuntu 에서 계정을 생성하는 방법과 권한 부여와 관련된 내용을 정리하려고 한다. 이 글은 Ubuntu 20.04.3 LTS 버전을 기반으로 작성하였다. 1. ubuntu 계정 생성 ubuntu 에서 계정을 생성하는 명령어는 두가지가 존재한다. adduser 와 useradd 이다. 두 명령어는 모두 사용자 계정을 생성하는 명령어지만 계정 생성시에 계정 정보 입력, 홈 디렉토리 생성, 쉘 설정 등을 함께할 것인지, 계정만 생성할 것인지에 차이가 있다. adduser 의 경우에는 계정 생성시에 계정 ..
[SQLAlchemy] imperative mapping SQLAlchemy 의 ORM 기능을 사용하기 위해서는 DB 의 테이블과 애플리케이션의 클래스를 매핑해야 한다. SQLAlchemy 에서는 테이블과 클래스를 매핑하는 방법으로 두가지 방법을 제공해준다. 하나는 Declarative Mapping, 다른 하나는 Imperative Mapping 이다. Declarative Mapping 은 클래스를 구현할 때 SQLAlchemy 의 DeclarativeBase 를 상속받음으로 명시적으로 ORM 에 의해 매핑될 클래스로 선언하는 방법이다. 반면에 Imperative Mapping 은 일반 클래스를 SQLAlchemy 의 Table 객체를 registry 에 매핑하여 등록함으로써 해당 클래스와 테이블을 매핑시켜주는 방식이다. 프로그램을 구현하면서 파이썬 클래스..
[SQLAlchemy] Relationship - CASCADE SQLAlchemy 를 사용하면 여러 테이블간의 relationship 을 생성하여 운영할 수 있다. 테이블들의 relationship 다루어 운영을 하다보면 하나의 테이블에 대한 동작이 다른 테이블에 영향을 주는 경우가 발생한다. 이러한 경우 DB 를 다루기 위해 복잡하고 반복적인 작업이 필요할 수 있다. SQLAlchemy 에서는 관계가 맺어진 객체들간의 작업을 간편하고 자동화하기 위한 "relationship cascade" 라는 기능을 제공한다. 이 기능을 사용하면 relationship 을 가진 테이블간에 어떻게 동작할 것인지, 어떻게 영향을 끼칠 것인지를 정의할 수 있다. 1. Cascade 란? Cascade 는 SQLAlchemy ORM 기능으로 객체들간의 관계를 정의할 때 사용할 수 있는..
[SQLite] SQLite 설명 및 예제 프로젝트를 진행하면서 DB 를 사용해야 하는 상황이 발생했다. 프로젝트의 프로토타이핑 과정이었기 때문에 다양한 기능과 성능보다는 간단한 설정과 빠르게 적용할 수 있는 DB 가 필요했고 SQLite 를 사용하기로 했다. SQLite 는 File DB 로 가볍고 따로 DB 서버를 설정할 필요가 없고 간편하게 사용할 수 있다. 이 글에서는 SQLite 에 대한 소개와 간단한 사용 방법을 정리하려고 한다. 1. SQLite 란? SQLite 는 가볍고, 빠르며, 독립적인 SQL Database 엔진을 구현하는 C 언어 라이브러리이다. SQLite 는 내장형 SQL DB 엔진으로 MySQL 이나 PostgreSQL 과 같은 기존의 RDBMS 와 달리 서버리스이며 실행을 위해 별도의 설치나 설정이 필요하지 않다. ..
[Celery] Celery 란? FastAPI 에서 백그라운드 작업을 실행하는 방법을 찾으면서 FastAPI BackgroundTasks 와 Celery 를 비교하는 글을 본 적이 있다. 수행에 오랜 시간과 메모리가 필요한 작업을 따로 실행하고 그러한 작업들의 스케줄링을 하기 위해서 Celery 에 대해서 알아본다. 1. Celery 란? Celery 는 python application 에서 많은 양의 작업들을 나눠서 처리할 수 있도록 해주는 분산 시스템이다. Python application 에서 생서된 작업들의 실시간 처리와 작업 스케줄링 등을 제공하는 task queue 이다. - Task Queue 란? Task queue 는 멀티 쓰레드, 또는 멀티 디바이스를 통한 분산 처리에서 사용되는 개념이다. Task queue 에는 ..
[FastAPI] BackgroundTasks 서버에서 요청을 처리할 때, 작업이 오래 걸리는 요청에 대해서는 응답을 먼저 보내주고 백그라운드에서 나머지 작업을 수행하도록 한다. 이러한 구조를 위해서 보통은 worker thread 를 돌리거나 worker queue 등을 사용하여 다른 쓰레드 또는 프로세스를 통해 백그라운드에서 작업을 수행하도록 합니다. FastAPI 에서는 starlette 의 BackgroundTasks 를 사용하여 요청에 대한 백그라운드 작업을 실행하는 기능을 제공한다. BackgroundTasks 에 추가된 task 들은 FastAPI 에서 asynchronous 하게 실행한다. 이를 통해서 오래 걸리는 작업은 Background Task 로 등록한 후 response 를 먼저 반환하도록 할 수 있다. 1. Backgroun..

반응형