본문 바로가기

전체 글19

PostgreSQL - Spring JPA Lock Timeout 적용하기 Spring JPA에서 비관적 락 (Pessimistic lock) 사용 시 Lock timeout을 함께 적용해주어야 한다. 그렇지 않으면 락을 얻기위해 무한정 대기하게 될 수 있다. DB종류별 LockTimeout 기본값은 다음과 같다. LockTimeout Oracle MySQL PostgreSQL H2 Apache Derby unit of measurement sec sec ms ms sec nowait (or similar) 0 0 1 1 0 min 0 0 1 1 0 max 2.147.483 oo (no internal limit) 2.147.483.647 2.147.483.647 oo (no internal limit) infinite wait -1 N/A 0 N/A N/A default -1.. 2023. 12. 10.
Oracle DB TestContainers 통합 테스트 구현 배경 테스트 컨테이너는 도커 컨테이너를 활용하여 격리된 테스트 환경을 쉽게 구축할 수 있도록 해줍니다. 컨테이너를 활용한 격리된 테스트 환경의 장점은 다음과 같습니다. (chatGPT 참고) 일관된 테스트 환경 제공: 테스트 컨테이너는 테스트 환경을 컨테이너화하므로, 모든 테스트가 동일한 환경에서 실행됩니다. 이로써 테스트 결과가 일관되며, 테스트 간의 상호 작용 문제를 줄일 수 있습니다. 테스트 격리: 테스트 컨테이너는 테스트 간의 격리를 제공합니다. 각 테스트는 독립적인 컨테이너 내에서 실행되므로 다른 테스트에 영향을 미치지 않습니다. 복잡한 의존성 관리: 테스트 시스템이 복잡한 의존성을 가질 때, 테스트 컨테이너를 사용하면 이러한 의존성을 쉽게 관리할 수 있습니다. 데이터베이스, 메시지 큐, 외부 .. 2023. 10. 25.
기타 필수 개념 start_date와 schedule_interval, execution_date Airflow에서 start_date는 실행 시작 날짜가 아니라 스케줄이 시작 되는 날짜. 위와 같은 경우, 1월 1일부터 하루에 한번씩 8시에 스케줄이 등록되고, 하루 뒤인 1월2일부터 execution_date가 1월 1일인 DAG가 실행된다는 것입니다. 이 execution_date는 나중에 해당 DAG를 다시 실행해도 그대로 1월 1일로 유지되는 이 DAG고유 실행 Id 같은 값입니다. cron 과 같은 scheduler처럼 생각하면 이 execution_date는 잘 이해가 가지 않습니다. 하지만 ETL관점에서 증분을 생각하면 이해하기 쉽습니다. 예를 들어, execution_date가 1월 1일인 task의 경우.. 2023. 4. 17.
DAG 예시 및 DAG 반영 참고 DAG 수정 사항 반영 방법 google composer 기준 가이드 참고한거라 실제 airflow랑 같을지 모르겠음. DAG 추가 / 업데이트 후 Airflow가 DAG를 로드하고 업데이트 하는 데 시간이 걸림. 클러스터일 경우 Airflow UI에 DAG가 업데이트 되었어도, 실제로 모든 worker에 DAG가 업데이트 되지 않았을 수도 있음. 충분한 대기 시간 필요. DAG의 start_date나, schedule이 바뀌는 등 큰 수정이 있을 때 스케쥴이 제대로 동작하지 않을 수 있음. 또한, 기존 task를 삭제하거나 이름을 수정할 경우 실행 이력이 날라감. ⇒ 따라서 Airflow에서는 DAG 에 큰 수정이 있을경우 버전관리를 하는 것을 추천함. (DAG_v1, DAG_v2…) 작업 예시 현재 .. 2023. 4. 17.
Airflow 소개 Airflow Airflow 란, 데이터 파이프라인을 구축하고 유지하는 작업을 쉽게 할 수 있도록 도와주는 python 기반의 오픈 소스 툴. DAG(Directed Acyclic Graphs)라고 불리는 워크플로우(workflow)를 작성하고, 워크플로우가 특정한 시간에 run 하도록 스케쥴링하고, 이러한 과정이 문제없이 잘 작동하는지 web UI를 통해 모니터링 할 수 있게 해준다. Airflow Basic Architecture Metadata Database dag 정보, 실행이력, 스케줄링 이력, 유저 정보 등 실행하는 workflow에 필요한 메타데이터를 저장한다. Airflow Scheduler DAG 분석, 현재 시점에서 DAG의 스케쥴이 지난경우 Airflow 워커에 DAG의 태스크를 예.. 2023. 4. 17.
Maven compile 시 maven-resources-plugin 에러 Spring boot 2.5.2 버전에서 Maven compile 시 다음과 같이 maven-resources-plugin 에러가 발생하였다. Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources 원인을 찾아보니 내 application.yml 파일에 한글 주석이 포함되어 있었고, application.yml 파일의 인코딩이 EUC-KR인것이 문제였다. 이 경우 application.yml 파일의 인코딩을 UTF-8로 바꾸어주면 해결된다. 인코딩을 바꾸었는데도 안될 경우 다음 stackoverflow 글을 참고하자. https://stackoverflow.com/questions/65910112/mave.. 2022. 2. 28.