OCI 프리티어 인스턴스에서 외부 포트 접속 불가 문제 해결기 (Swagger 접속 사례)

문제 상황 Oracle Cloud Infrastructure(OCI) 프리티어 인스턴스에서 Node.js 기반 API 서버를 실행하고 있었고, 내부에서는 정상적으로 localhost:3000 또는 10.0.0.x:3000 접근이 가능했지만 외부에서는 퍼블릭IP:3000 접속이 되지 않는 문제가 있었습니다. 접속 불가 현상 예시 점검한 사항들 최종 원인 및 해결 방법 최종 테스트 결과 추가 팁 결론 OCI 프리티어에서 외부 포트 접속이 되지 더 읽기

Oracle Cloud 인스턴스 SSH 키 분실 시 복구 방법 (GRUB 접근 실패 대응)

문제 상황 Oracle Cloud Free Tier 인스턴스를 생성할 때 등록한 SSH 키 쌍의 개인키를 분실하거나 다른 컴퓨터에서 접속하려 할 경우, SSH 접속이 실패합니다. 특히 시리얼 콘솔로 접속하더라도 GRUB 진입이 되지 않아 키 등록도 불가능한 경우가 발생할 수 있습니다. 원인 해결 방법 ✅ 방법 1: Boot Volume 마운트를 통한 키 복구 더 읽기

Oracle Cloud Free Tier에서 iptables -F 실행 후 SSH 완전 차단 사태 복구 실패 사례

1. 문제 발생 배경 Oracle Cloud Infrastructure(OCI) Free Tier 환경에서 Ubuntu 인스턴스를 운영 중이던 중, 서버 내의 iptables 방화벽 정책을 초기화하기 위해 다음 명령어를 실행했습니다. 이 명령을 실행한 직후, SSH 연결이 끊겼고 다시는 접속이 되지 않았습니다. 2. 당시 질문 흐름 3. ChatGPT가 했던 설명 중 “틀리거나 오해 유발”한 부분 ❌ 더 읽기

Node.js와 Supabase로 무료 성경 API 데이터 수집 자동화하기

개요 이 글에서는 https://bible.helloao.org의 무료 성경 API에서 번역 목록과 각 번역의 책 정보를 수집하여 Supabase(PostgreSQL)에 자동 저장하는 방법을 정리합니다. Node.js 기반으로 구성하며 .env, 스케줄링, 중복 처리까지 실용적으로 다룹니다. 1단계: Supabase 테이블 구조 만들기 📌 bible_translations 테이블 create table bible_translations ( id text primary key, name text, website text, license_url text, 더 읽기

Spring @Scheduled 동작 조건과 반복 실행 문제 해결 가이드

@Scheduled가 동작하지 않는 이유와 설정 조건 Spring의 @Scheduled는 단순히 어노테이션을 붙이는 것만으로는 동작하지 않습니다. 다음과 같은 조건이 반드시 충족되어야 합니다. ✅ 필수 설정 💥 예외 사례 아래와 같이 파라미터가 있는 메서드는 @Scheduled에서 예외가 발생합니다: ✅ 올바른 예시 cron 표현식 정리 표현식 설명 */2 * * * * ? 매 2초마다 더 읽기

Spring Batch ExecutionContext 사이즈 초과 원인과 해결 방법

1. ExecutionContext 사이즈 초과 발생 원인 Spring Batch에서 아래와 같은 방식으로 대용량 데이터를 ExecutionContext에 저장할 경우, 직렬화된 데이터가 수십 KB ~ 수 MB까지 증가하면서 DB 저장에 실패하거나 OutOfMemoryError가 발생할 수 있습니다. 2. 안전한 대체 전략 📌 2-1. Processor에서 get 후 즉시 remove 📌 2-2. StepExecutionListener로 꺼내고 바로 삭제 그리고 Processor에서 더 읽기

Apache POI SXSSFWorkbook 사용 시 OutOfMemoryError(OOM) 발생 원인 및 해결 전략

Apache POI의 SXSSFWorkbook은 대용량 Excel 파일을 메모리 부담 없이 생성할 수 있는 streaming 기반 API입니다. 하지만 적절히 설정하지 않으면 5만 건 이하의 데이터에서도 OOM(OutOfMemoryError)가 발생할 수 있습니다. 1. OOM 발생 원인 2. SXSSFWorkbook 생성 시 올바른 사용 예시 3. SXSSF는 랜덤 접근이 불가능 flush된 row는 메모리에서 제거되며, 이후 sheet.getRow(n)으로 접근할 더 읽기

Spring Boot 3 구동 지연 원인 분석 및 ConditionEvaluationReport 활용

1. 배경 Spring Boot 3 기반의 배치 시스템을 운영 중, 일부 구동 시점에서 눈에 띄는 지연 현상이 발생하여 이에 대한 분석을 진행하였습니다. JPA 미사용, 보안 비활성화 등의 전제가 있는 프로젝트입니다. 2. 분석 방식 Spring Boot 3.1 이상에서 제공하는 ConditionEvaluationReport 로그를 통해 자동 설정이 어떤 조건에 따라 적용 또는 제외되는지를 확인했습니다. 더 읽기

Spring Batch Chunk Size, Skip/Retry, Listener 구성 시 주의사항 정리

1. Spring Batch에서 Chunk Size 1과 1000의 성능 차이 Chunk Size는 Spring Batch 성능에 직접적인 영향을 주며, 특히 chunk=1과 chunk=1000은 속도 차이가 큽니다. 일반적으로는 chunk size를 100 ~ 1000 사이로 설정하는 것이 적절하며, 성능과 메모리 사용량의 균형을 고려해야 합니다. 2. Skip과 Retry를 함께 설정했을 때 우선순위는? Spring Batch에서는 retry가 우선입니다. 더 읽기

EKS CronJob Pending 현상: “Preemption is not helpful for scheduling” 원인 분석

문제 현상 EKS 환경에서 특정 CronJob 실행 시 다음과 같은 메시지와 함께 Pod가 Pending 상태에 머무르며 일정 시간 이후에야 실행되는 현상이 발생했습니다: 원인 분석 이 메시지는 Kubernetes 스케줄러가 다음과 같은 조건 중 하나 이상으로 인해 Pod를 즉시 스케줄하지 못했음을 의미합니다: 1. 리소스 부족 2. 스케줄 조건 미충족 (Affinity, Toleration 등) 더 읽기