빈수 개발자 개발 일기920 [Airflow] example_datasets.py 에러 ERRORBroken DAG: [/opt/airflow/airflow_env_38/lib/python3.8/site-packages/airflow/example_dags/example_datasets.py] Traceback (most recent call last): File "/opt/airflow/airflow_env_38/lib/python3.8/site-packages/airflow/example_dags/example_datasets.py", line 60, in from airflow.timetables.datasets import DatasetOrTimeSchedule File "/opt/airflow/airflow_env_38/lib/python3.8/site-packages/airfl.. 개발중/AirFlow 2024. 10. 8. [AirFlow] ContentType Mysql 누락 MySQL Content Type 을 선택하고 싶은데 주어진 값에 "MySQL" 은 없습니다. MySQL을 사용하려면, MySQL과 연동하는 Airflow Provider 패키지를 설치해야 합니다. 해당 패키지가 설치되지 않으면 MySQL 연결 타입이 Airflow의 UI에서 누락될 수 있다고 합니다. Mysql 옵션을 다운로드 하자.pip install apache-airflow-providers-mysql 근데 이런 에러가 난다면× Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> [27 lines of output] /bin/sh: 1: pkg-config: not found .. 개발중/AirFlow 2024. 9. 30. Redis Pub/Sub 기반 SSE 실시간 알림 삽질 통해 구현하기. 첫 번째와 두 번째 클라이언트는 첫 번째 서버와 SSE 연결을 맺었기 때문에, 두 번째 서버는 이 두 클라이언트와의 SSE 연결 정보를 가지고 있지 않습니다.만약에 A 파드에서 알림이 발생했을 경우에는 첫번째 클라이언트와 두번째 클라이언트에게 SEE 를 사용해서 알림을 보낼 수 있습니다. 하지만 B 파드에서 알림이 발생했을 경우에는 ?첫번째 클라이언트와 두번째 클라이언트의 SSE 정보가 없기 때문에 전송할 수 없습니다. 그래서 레디스의 Sub/Pub 기능을 이용해서 알림 상태를 모든 Pod 에게 전달하기로 했습니다.Redis Sub / Pub 참고 ... Redis Config 에 RedisMessageListenerContainer, MessageListenerAdapter 빈등록을 해줍시다. 일단.. 개발중/Spring Boot & Redis 2024. 9. 24. Redis Pub/Sub 에 대해서 알아보기. Redis Pub/Sub Redis Pub/Sub(Publish/Subscribe)는 Redis에서 제공하는 메시징 시스템으로, 발행자(Publisher)가 메시지를 특정 채널에 발행하고, 구독자(Subscriber)는 해당 채널을 구독하여 메시지를 수신하는 방식입니다. 이 방식은 비동기적 통신을 가능하게 하며, 발행자와 구독자가 서로 직접적으로 통신하지 않고, Redis가 중간에서 메시지를 라우팅하는 역할을 합니다. Redis Pub/Sub 동작 방식Publisher (발행자)발행자는 특정 채널로 메시지를 보냅니다.발행자는 메시지를 보낼 때 구독자가 있는지 여부를 알 필요가 없습니다.여러 구독자가 있으면, 같은 채널을 구독한 모든 구독자에게 메시지가 전송됩니다. Subscriber (구독자)구독자는 .. 개발중/Redis 2024. 9. 24. ApplicationListener 를 이용해서 어플리케이션 기동시 에러날 경우에 대처하기. 개요CI/CD 환경에서 애플리케이션을 배포할 때는, 수동 배포와 달리 애플리케이션 기동 중 발생하는 에러를 즉각적으로 파악하기 어려울 수 있습니다. 수동 배포의 경우, 직접 로그를 확인하며 에러를 바로 인지할 수 있지만 CI/CD 파이프라인을 통해 자동화된 배포가 이루어질 때는 이를 실시간으로 감지하고 대응하기가 쉽지 않습니다. 이러한 상황을 해결하기 위해, 애플리케이션이 기동 중에 에러가 발생하면 즉시 알림을 받을 수 있도록 설정할 수 있습니다. ( 물론 다양한 방법이 있지만 그중에 하나 입니다. ), 이를 위해 Spring의 ApplicationListener와 ApplicationFailedEvent를 활용할 수 있습니다. ApplicationFailedEvent는 애플리케이션 로딩 중 예외가 발.. 개발중/Spring Boot 2024. 9. 19. [Apache Tomcat] 톰캣 일자별 로그 나누기 톰캣 일자별 로그 나누기Tomcat 서버 운영 중 로그 관리의 중요성을 인식하게 되었습니다. 단일 catalina.out 파일에 모든 로그가 누적되어 관리와 분석에 어려움을 겪었습니다. 이에 로그를 일자별로 분리하여 관리하는 방법을 모색하게 되었습니다. 이 글에서는 Tomcat의 catalina.sh 스크립트를 수정하여 일별 로그 파일을 생성하는 과정과, 이를 통해 얻을 수 있는 이점, 그리고 구현 과정에서 마주친 문제점들을 공유하고자 합니다. rotatelogs 위치 찾기 rotatelogs란 Apache HTTP Server 프로젝트의 로그 관리 유틸리티로, 로그 파일을 주기적으로 순환(rotate)시키는 기능을 제공합니다. 아래와 같이 rotatelogs 의 위치를 찾습니다.[root@RC9-19 .. 개발중/Web 2024. 7. 23. Mono와 Flux의 차이점과 활용법 - Spring WebFlux Flux와 MonoSpring WebFlux의 Flux와 Mono는 반응형 프로그래밍 모델의 두 가지 주요 구성 요소입니다. Mono Mono는 0 또는 1개의 요소를 비동기적으로 제공하는 Publisher입니다. 단일 값 또는 빈 값의 비동기 처리를 나타냅니다.Mono mono = Mono.just("Hello, Mono!");mono.subscribe(System.out::println); Flux Flux는 0개 이상의 요소를 비동기적으로 제공하는 Publisher입니다. 여러 값의 스트림을 처리할 때 사용됩니다.Flux flux = Flux.just("Hello", "Flux", "World!");flux.subscribe(System.out::println); 예제 코드 Mono 예제Mono.. 개발중/Spring Boot 2024. 6. 11. Spring Boot 3와 WebClient: 비동기식 HTTP 요청을 쉽게 구현하기 WebClient Spring Boot 3에서 WebClient는 비동기 및 동기식 HTTP 요청을 수행하기 위해 사용되는, 강력하고 유연한 HTTP 클라이언트입니다. WebClient는 Spring 5에서 처음 도입되었으며, Spring Boot 2.x 및 3.x에서도 계속해서 사용되고 있습니다. 이는 Spring의 기존 RestTemplate을 대체하는 역할을 수행하며, 비동기식 API 호출을 더욱 간편하게 구현할 수 있도록 합니다. 주요 특징 비동기 및 동기식 요청WebClient는 비동기식과 동기식 요청을 모두 지원합니다.반응형 프로그래밍 지원WebClient는 Reactor 라이브러리를 기반으로 하여, 반응형 스트림을 활용한 비동기 프로그래밍을 지원합니다.플러그인 아키텍처요청 및 응답을 변환하.. 개발중/Spring Boot 2024. 6. 11. Spring Boot 3와 Redis: 로컬 도커 환경에서 시작하기 이 블로그 포스트에서는 로컬 개발 환경에서 Docker를 활용하여 Redis를 설치하고 구성하는 과정을 안내합니다. Redis는 다양한 개발 상황에서 선호되는 오픈 소스, 인 메모리 키-값 데이터베이스로, 빠른 성능과 높은 확장성을 제공합니다. 또한, 최신 Spring Boot 3 프레임워크와의 통합을 통해 실제 어플리케이션 개발 상황을 시뮬레이션하며 기초적인 CRUD 작업을 수행하는 예제를 소개하고자 합니다. Docker를 이용한 Redis 설치docker 에서 redis 설치 후 실행 시키는 방법 1. Redis 이미지 다운로드 Redis Docker 이미지를 다운로드합니다. 터미널 또는 커맨드 라인을 열고 다음 명령을 실행합니다: docker pull redis2. Redis 컨테이너 실행 다운로드.. 개발중/Spring Boot & Redis 2024. 5. 8. Spring Boot 3.x 및 Security 6.x를 이용한 중복 로그인 관리 방법 이 글은 Spring Boot 3.x와 Security 6.x를 활용하여 중복 로그인을 관리하는 방법에 대해 설명합니다.Spring Security의 세션 관리 기능을 사용하여 동일 사용자의 중복 로그인 시도를 제어하는 방법을 다룹니다. 중복 로그인은 보안 및 세션 관리 측면에서 중요한 문제입니다. 특히 Spring Boot와 Spring Security를 사용하여 안전하고 효율적으로 중복 로그인을 관리하는 방법에 대해 알아보겠습니다. 로그인 성공 시 세션에 사용자 정보 저장하기 먼저, 사용자의 로그인 정보를 세션에 저장하는 방법을 살펴보겠습니다. Spring Security에서는 로그인 성공 시에 AuthenticationSuccessHandler를 통해 로그인 이후의 작업을 처리할 수 있습니다. 아.. 개발중/Spring Boot & Redis 2024. 5. 3. Spring Boot와 Redis를 사용한 데이터 저장 및 관리 Redis는 빠른 오픈 소스 인-메모리 키-값 데이터 스토어로, 다양한 데이터 구조를 지원합니다. Spring Boot 애플리케이션에서 Redis를 사용하면, 데이터 캐싱, 메시지 브로커 등 다양한 방식으로 활용할 수 있습니다. 이 글에서는 Spring Boot를 이용하여 Redis 데이터 구조를 어떻게 조작하는지 보여드립니다. 설정 사항 먼저, Redis 서버가 설치되어 있어야 하며, application.properties 파일에 다음과 같이 Redis 서버 접속 정보를 설정해야 합니다: spring.redis.host=localhostspring.redis.port=6379 Redis 데이터 유형 및 조작 StringRedis CLI127.0.0.1:6379> SET key valueOK127.. 개발중/Spring Boot & Redis 2024. 5. 3. [Spring Batch] 낙관적 잠금 오류 (OptimisticLockingFailureException) 해결하기 서론 현대의 소프트웨어 개발에서 병렬 처리와 데이터 동시성은 필수적이지만, 이로 인해 예상치 못한 오류에 직면할 때가 많습니다. 본 포스트에서는 Spring Batch에서 흔히 발생하는 OptimisticLockingFailureException 오류를 다루고, 이를 flush() 메소드를 사용하여 해결한 경험을 공유하고자 합니다. 이 오류가 프로젝트에 미치는 영향을 이해하고 대처법을 배우는 것은 모든 데이터 중심 애플리케이션 개발자에게 중요할 것입니다. 문제 상세 설명 OptimisticLockingFailureException은 낙관적 잠금 기법을 사용할 때 발생합니다. 이 기법은 동시에 같은 데이터에 여러 트랜잭션이 접근하려 할 때 사용되는데, 데이터 무결성을 보장하기 위해 데이터의 버전을 체크합니.. 개발중/Spring Batch 2024. 4. 19. 이전 1 2 3 4 5 6 7 ··· 77 다음