2025/06 19

[Python] SQLAlchemy - 테이블 리플렉션

개요2025.06.20-[Python] SQLAlchemy - SQL 표현 언어와 메타데이터에서 데이터베이스의 테이블을 나타내는 Table 객체를 생성해 보았다. 이번 글에서는 데이터베이스 내의 테이블을 로드하여 자동으로 Table 객체를 생성하는 테이블 리플렉션에 대해서 적어둔다. 테이블 리플렉션테이블 리플렉션이랑 데이터베이스의 현재 상태를 읽어 Table과 관련 객체를 생성하는 프로세스를 의미한다. 테이블 객체를 Python으로 선언했던 방식과는 반대로 데이터베이스에서의 DDL을 사용해 Python 내에 데이터 구조를 생성한다.테이블 리플렉션으로 Table 객체를 생성할 때는 Table 생성자에 autoload_with 매개변수에 create_engine으로 생성한 engine 객체를 전달하면 된..

Python 2025.06.30

[Python] SQLAlchemy - SQL 표현 언어와 메타데이터

개요2025.02.25-[Python] sqlalchemy - Trino 다루기에서 SQLAlchemy를 사용해 SQL을 수행하는 방법을 적어두었었다. 그런데 최근에 공식 문서를 보니 SQL문을 문자열로 작성하고 처리하는 것이 아니라 python 코드로 작성하여 처리하고 있는 것을 보았다. 이는 SQLAlchemy의 주요 특징 중 하나인 'SQL 표현 언어(SQL Expression Language)' 기능으로, 이번 글에서는 이 기능에 대해서 좀 알아보려고 한다. 메타데이터일반적으로 메타데이터는 ㅇ데이터를 설명하는 데이터를 의미한다. 즉, 데이터의 형식 및 구조를 나타내는 데이터이다. 하지만 SQLAlchemy에서는 SQL 표현 언어가 기반으로 하는 Python 객체를 통칭한다. 테이블, 열과 같..

Python 2025.06.27

[Python] Click - 명령행 인자 전달

개요이전에 2023.01.30-[Python] 명령행 인자 전달 - 2을 통해 Python 실행 시 명령행 인자를 전달하고 파싱하는 방법에 대해서 알아보았다. 최근 업무를 하면서 비슷한 기능을 제공하는 Click이라는 라이브러리가 존재함을 알게되었는데, 이번 글에서는 Click 라이브러리 사용법에 대해서 간단히 적어두려고 한다. ClickClick은 최소한으 코드로 명령줄 인터페이스를 만들기 위한 Python 패키지이다. 명령줄 인터페이스 생성 키드라고 말할 수 있다.크게 명령줄 임의 중첩, 도움말 자동 생성, 런타임에서 하위명령어의 느린 로딩을 지원한다. 그리고 Unix/POSTFIX 명령줄 규약 구현을 지원하고, 환경 변수에서 값을 즉시 로드할 수 있도록 한다. 이외 여러 기능을 제공하고 있는데,..

Python 2025.06.26

[Linux] (CRON) info (No MTA installed, discarding output)

개요운영 중인 서버의 루트 영역에서 용량을 많이 사용하고 있다는 알람을 받았다. 확인해 보니 /var/log/info.log 라는 파일의 용량이 컸고, 아래와 같은 로그가 반복적으로 발생하고 있었다.Jun 17 08:21:52 ec2 CRON[3378698]: (CRON) info (No MTA installed, discarding output)Jun 17 08:21:52 ec2 CRON[3378707]: (CRON) info (No MTA installed, discarding output)원인을 파악하고 현상을 해소해보자. 원인cron 작업은 실행 중 발생한 출력을 사용자에게 이메일로 전송하고자 한다. 그 과정에서 postfix와 같은 메일 서버가 설치되어 있지 않아 발생하는 오류이다. 해당 로..

Linux 2025.06.25

[Jenkins] job 이관하기

개요EKS 업그레이드를 작업하던 중 사이드 이펙트로 클러스터에서 동작하던 Jenkins의 볼륨 위치가 변경되었다. 이에 따라 기존에 생성했던 Job을 신규 경로로 이관하고자 한다.방법을 적어둔다. JENKINS_HOME방법을 알아보기에 앞서 JENKINS_HOME의 구조에 대해서 먼저 적어둔다. Jenkins는 빌드를 수행하고 아카이브를 보관하기 위해 디스크 공간을 필요로 하는데, 이 공간이 JENKINS_HOME이다. JENKINS_HOME의 위치는 Jenkins 구성 화면에서 확인할 수 있고, 기본적으로 ~/.jenkins로 설정되어 있다. 필요한 경우에는 JENKINS_HOME 환경변수나, JENKINS_HOME이라는 시스템 속성에 값을 지정하며 원하는 경로를 홈 경로로 설정할 수 있다. JEN..

Jenkins 2025.06.24

[CloudBeaver] 웹 클라우드 데이터베이스 클라이언트

개요업무를 하다가 웹 브라우저 상에서 동작하는 데이터베이스 클라이언트 소프트웨어를 하나 발견했다. CloudBeaver라는 소프트웨어인데 어떻게 설치하고 사용하는지 간단히 알아본다. CloudBeaver효율적이고 안전한 데이터 관리를 위해 설계된 경량 웹 애플리케이셔이다. 웹 브라우저를 통해 접근하며 SQL, NoSQL, 클라우드 데이터베이스 등 다양한 데이터베이스를 지원한다.Java 애플리케이션이고, 웹은 TypeScript, React로 구현되어 있다. DBeaver에서 관리하며 엔터프라이즈 버전과 무료인 커뮤니티 버전을 제공한다. CloudBeaver는 다음과 같은 기능을 제공한다.- 사용자 친화적인 인터페이스- 안전한 연결- 다양한 배포 옵션- 다중 사용자 환경- 다양한 데이터베이스 지원- 클..

Database 2025.06.23

[Jupyterlab] jupyterlab-sql-explorer - SQL GUI 플러그인

개요예전에 jupyterlab / jupyter notebook을 사용할 때, 데이터베이스를 다루는 경우 jupyterlab-sql이라는 플러그인을 아주 잘 사용했다. 하지만 이 플러그인은 이제 유지보수가 이뤄지고 있지 않아 최신 버전의 jupyterlab에서는 사용이 불가능한 상태이다. 그래서 jupysql을 계속 사용해 왔는데, 최근 jupyterlab-sql을 대체할 만한 플러그인을 확인하여 기록해 둔다. jupyterlab-sql-explorerjupyterlab-sql-explorer는 사용자가 JupyterLab에서 SQL을 실행하고 데이터베이스 객체를 탐색할 수 있도록 도와주는 플러그인이다.JupyterLab 내에서 테이블, 뷰와 같은 데이터베이스 객체를 탐색할 수 있고, SQL문을 직접 ..

Kubernetes 2025.06.20

[EKS] aws-auth - EKS 클러스터에서 IAM 확인

개요업무에서 EKS에 접속해서 사용 중인데, 클러스터 내에서 내가 어떤 AWS 계정을 사용해서 작업을 수행하는지 확인하고 싶다. 찾아보니 EKS 접근 제어를 aws-auth라는 걸로 관리하는 것 같은데, 이번 글에서는 aws-auth에 대해서 조금 알아보려고 한다. aws-authEKS의 접근을 구성하는 방식 중 하나로, 클러스터가 IAM 보안 주체로 aws-auth라는 이름의 ConfigMap을 취급하는 방식이다. 즉, IAM 사용자, Role, Group을 Kubernetes RBAC과 연결하는 역할을 한다.aws-auth ConfigMap은 EKS 접근 제어를 관리하고 Kubernetes RBAC을 설정하며, EKS 노드 그룹이 클러스터에 조인할 수 있도록 허용하는 등의 역할을 담당한다.다만 공식..

Kubernetes 2025.06.19

[SOPS] age 방식으로 암호화

개요2025.06.10-[age] 파일 암호화 도구에서 age에 대해서 알아보았다. 이번 글에서는 업무에 사용 중인 방식인 SOPS를 age 옵션으로 암호화하는 방법을 적어둔다.공식 문서에서는 가능하면 PGP 대신 age를 사용해서 암호화하는 것이 좋다고 한다. 사전 준비먼저 암호화 및 복호화 작업에 사용할 공개 키 쌍을 생성한다.리눅스 기준으로, 생성한 키 쌍은 아래 경로에 위치해 있어야 복호화 시 참조하여 사용한다$XDG_CONFIG_HOME/sops/age/keys.txt# XDG_CONFIG_HOME가 설정되지 않았을 경우$HOME/.config/sops/age/keys.txt또는 환경변수 SOPS_AGE_KEY_FILE를 설정하는 방식으로 키 파일의 경로를 지정할 수 있다.이 글에서는 SOPS..

기타 2025.06.18

[age] 파일 암호화 도구

개요2025.05.30-SOPS(Secrets OPerationS)란에서 사용법 확인을 위해 SOPS Git에서 제공하고 있는 PGP 키를 이용해 파일을 암호화해 보았다. 다만 SOPS는 PGP 외에도 여러 암호화 방식을 지원하는데, 이 글에서는 SOPS에서 지원하고 있는 암호화 방식 중 하나인 age에 대해서 알아보려고 한다. 왜냐? 업무에서 사용하고 있기 때문이다……. ageage는 간단하고 현대적이며 안전한 파일 암호화 도구이자 포맷, 그리고 Go 라이브러리이다.별도의 구성 옵션 없이 사용할 수 있다는 특징을 가지며, Linux, macOS, FreeBSD, Windows 등의 다양한 환경에서 사용할 수 있다.RECIPIENTS라는 이름의 공개 키를 사용해 암호화하고 IDENTITIES라는 이름..

기타 2025.06.17
1 2