전체 글 1302

[k8s] Helm Release 원복 현상

개요이전에 EKS 버전 업그레이드를 수행하면서 보안 이슈가 존재하던 nginx-ingress-controller 버전 업그레이드도 함께 진행했다. nginx-ingress-controller는 helm으로 설치를 했는데, 최근 확인해 보니 버전이 업그레이드 이전으로 돌아가있었다. 버전을 업그레이드하면 기존 버전으로 재배포가 이뤄지고 심지어는 Helm Release를 삭제해도 기존 버전으로 자동 배포가 이뤄지고 있었다. 원인을 파악하고 해결한 이력을 적어둔다. 원인 - HelmRelease 리소스 존재쿠버네티스 이벤트를 확인해보니 아래와 같은 이력이 존재하는 것을 확인했다.Normal ReleaseSynced helmrelease/nginx-ingress managed release 'nginx-..

[AWS] EventBridge - S3/SQS 연동 prefix 지정

개요2025.08.04-[AWS] EventBridge를 사용한 S3/SQS 연동에서 AWS EventBridge를 사용해 S3에 저장되는 데이터를 SQS에 전달하는 방법을 살펴보았다. 다만 앞선 글에서는 S3 버킷 전체에서 발생하는 이벤트를 모두 SQS로 전달했는데, 이번 글에서는 특정 prefix에 대해서만 전달하는 방법을 알아보려고 한다. 규칙 편집규칙의 이벤트 패턴을 아래와 같이 편집한다. object.key.prefix 부분이 S3 prefix를 지정하는 설정이다.아래 패턴은 prefix_test_1 이라는 경로에 저장되는 파일만 SQS로 전달하는 예시이다.{ "source": ["aws.s3"], "detail-type": ["Object Created"], "detail": { ..

AWS 2025.08.05

[AWS] EventBridge를 사용한 S3/SQS 연동

개요2022.07.08-[S3/SQS] S3에 생성된 데이터를 SQS에 쌓기에서 S3의 이벤트 알림 기능을 사용해 S3에 저장되는 파일 정보를 SQS에 전달했다. 하지만 S3 이벤트 알림은 치명적인 한계가 있었는데 바로 S3 버킷 당 설정할 수 있는 이벤트 알림의 개수가 100개로 제한되어 있다는 점이다.최근 S3에 저장되는 데이터 중 SQS로 연동해야 하는 prefix가 증가하면서 이 제한사항에 대한 타개책이 필요해졌는데, 확인해 보니 EventBridge라는 서비스로도 S3와 SQS를 연동할 수 있는 것 같다.이번 글에서 간단하게 연동 방법부터 알아보자. SQS 생성먼저 이벤트를 수신할 대상인 SQS부터 생성한다.일단 SQS는 이름만 지정하고 액세스 정책을 포함한 다른 항목은 전부 기본값으로 설정했..

AWS 2025.08.04

[Python] line_profiler - 성능 분석 도구

개요Python으로 개발하고 테스트를 수행하다 보면 개발한 코드의 성능을 확인하고 개선해야 할 필요가 있다. 이때 프로파일링을 활용할 수 있는데, 프로파일링이란 프로그램의 시간 복잡도, 메모리 정보, 함수 호출 주기, 빈도 등을 분석하는 것이다. Python에서는 cprofile, profile과 같은 모듈을 제공하고 있다. 이번 글에서는 Python 기본 모듈은 아니지만, 프로파일링 도구 중 하나인 line_profiler에 대해서 알아보고자 한다. line_profilerline_profiler는 함수의 줄 별 프로파일링을 수행하는 도구다. pip로 설치할 수 있고, Jupyter 노트북에서 매직 커멘드를 통해 활용할 수도 있다. 설치 명령어는 다음과 같다.pip install line_profil..

Python 2025.08.01

[Airflow] dag_id 중복 확인하기

개요Airflow에서 dag_id는 유일해야 하기 때문에 dag_id에 중복이 발생하면 의도하지 않게 동작할 수 있다. 하지만 Dag의 오류 사항을 확인할 수 있는 Web UI에서는 dag_id에 중복 발생 여부를 확인할 수 없어 디버깅하기 조금 힘든데, cli를 활용하면 바로 확인할 수 있는 것을 알게 되어 적어둔다. 확인 방법dag_id 중복 시 발생하는 예외는 AirflowDagDuplicatedIdException이다. 즉, 2024.11.30-[Airflow] Dag Import Error 확인하기에서 확인한 airflow cli의 list-import-errors 명령어를 사용하면 dag_id의 중복 발생 여부를 확인할 수 있다. 참고로 Github에서 명령어의 동작 방식을 확인해 보니 DA..

Apache Airflow 2025.07.16

[Azure] Azure Database for MySQL 개요

개요2025.07.08-[Azure] 데이터베이스 서비스 종류와 구분에서 Azure 데이터베이스에 대해 대략적으로 살펴보았는데, 이번 글에서는 Azure가 MySQL 데이터베이스 엔진을 제공하는 서비스인 Azure Database for MySQL에 대해서 알아보려고 한다.하나의 제품에서 다양한 데이터베이스 엔진을 지원하는 AWS RDS와 다르게, Azure의 경우에는 데이터베이스 엔진마다 별개의 제품을 제공하고 있다. DBaaSDBaaS (Database as a Service)란 가상 머신이나 인프라를 관리할 필요 없이 데이터베이스를 설정하고 접근할 수 있도록 하는 서비스이다. PaaS(Platfrom as a Service)에 한 범주에 속하며, Azure Database for MySQL는 DB..

Azure 2025.07.15

[Python] SQLAlchemy - UPSERT 수행하기

개요이전 글에서 SQLAlchemy를 사용해 테이블 생성과 데이터 삽입, 갱신, 삭제 등의 기본적인 데이터베이스 작업을 수행하는 방법을 알아보았다.이번 글에서는 UPSERT를 구현하는 방법을 알아보려고 한다. UPSERT의 경우에는 데이터베이스 엔진마다 쿼리문이 조금씩 다른데 이 글에서는 MySQL을 기준으로 적어두려고 한다. Dialectsdialect란 SQLAlchemy가 다양한 DBAPI를 구현하고 데이터베이스와 통신하는 데 사용하는 시스템이다. 이를 위해서는 적절한 DBAPI 드라이버가 설치되어 있어야 한다.SQLAlchemy는 PostgreSQL, MySQL, MariaDB, SQLite, Oracle, Microsoft SQL Server에 대한 dialect를 포함하고 있다. 이외의 데이..

Python 2025.07.14

[Python] SQLAlchemy - DELETE 문

개요2025.07.02-[Python] SQLAlchemy - UPDATE 문 에서 SQLAlchemy를 사용해 테이블에 데이터를 UPDATE 하는 방법을 알아보았다. 이번 글에서는 테이블에 있는 데이터를 삭제하는 방법을 알아본다. DELETEinsert, update를 수행할 때와 마찬가지로 deleted() 함수로 DELETE 문을 나타내는 객체를 생성하여 작업을 수행할 수 있다. 기본적인 사용 방법은 아래와 같다.from sqlalchemy import deletestmt = delete(user_table).where(user_table.c.name == "patrick")print(stmt) 영향받는 행의 수 확인DELETE 수행에 영향을 받는 행의 수를 확인하고 싶을 때는 쿼리를 수행한 결..

Python 2025.07.11

[Azure] 데이터베이스 서비스 종류와 구분

개요기존에 Azure 관련해서 VM과 오브젝트 스토리지 서비스에 대해서는 간단히 알아보았는데, 데이터베이스에 대해서는 아직 공부한 바가 없어서 학습을 시도했는데, 제품도 많고 종류도 여럿이고 용어가 다소 헷갈리는 지점이 있어서 정리해보려고 한다. Azure 데이터베이스Azure 데이터베이스는 Azure 클라우드에서 제공하는 다앙햔 데이터베이스 서비스를 통칭한다. SQL Database, Cosmos DB, MySQL, PostgreSQL 등 다양한 데이터베이스 엔진을 지원하며 자동 백업, 고가용성, 강력한 보안 기능을 제공하여 데이터 안정성과 규정 준수를 보장한다. 또한 기업의 필요에 따라 확장과 축소예 용이하다.수직 확장 : 할당된 리소스를 늘려 데이터베이스를 수직적으로 확장할 수 있다. 성능 계층을..

Azure 2025.07.10

[Linux] Vim - 범위 삭제하기

개요Vim을 사용해서 다량의 행을 삭제해야 하는데, 한 줄씩 삭제하고 있자니 끝이 보이지 않아 범위를 삭제할 수 있는 몇 가지 방법을 정리해 둔다. 현재 줄 포함 여러 행 삭제Vim에서 dd 명령은 현재 커서가 위치한 행 한 줄을 삭제하는 명령어이다. 여 dd 명령어 앞에 삭제할 줄의 수를 추가하여 입력하면 현재 행을 포함하여 입력한 줄의 수만큼의 행을 삭제한다.[n]dd예로 들어 아래와 같은 텍스트가 있다고 하자.2dd이 상태에서 2줄을 삭제하겠다는 명령어를 입력하면 1, 2 행이 삭제된다. start ~ end 삭제삭제한 범위를 직접 지정하고 싶을 때는 아래 명령어를 사용한다.:[start],[end]d 예시 텍스트 파일에서 3행부터 5행까지 삭제한다고 하면 다음과 같이 입력하고:3,5d그 결과는..

Linux 2025.07.09