지원자 입장으로 면접을 본 경험은 많지만, 면접관 자리에 앉는 건 다른 일이다. 최근 2~3년차 백엔드 개발자 채용에 면접관으로 참여하면서, 지원자의 이력서에 적힌 기술 스택을 기준으로 질문 세트를 미리 준비했다. 이 글은 그 세트를 특정 지원자를 식별할 수 없게 일반화해서 정리한 것이다. 같은 연차 백엔드 채용을 준비하는 면접관에게도, 반대로 면접을 앞둔 더 읽기
java
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)으로 접근할 더 읽기
Oracle 연결 오류: SQLRecoverableException – Invalid Operation, NOT Connected
1. 오류 메시지 요약 2. 발생 원인 3. 자주 발생하는 상황 4. 해결 방법 4.1 HikariCP 설정 강화 주의: max-lifetime은 DB의 세션 만료 시간보다 짧게 설정해야 합니다. 4.2 Oracle DB 세션 타임아웃 확인 4.3 운영 상 참고사항 5. 결론 해당 오류는 커넥션 풀에서 이미 종료된 커넥션을 닫는 과정에서 흔히 발생하는 더 읽기
Spring BeanCreationNotAllowedException: Singleton Bean 생성 오류와 종료 시점 문제 해결법
1. 오류 메시지 Spring 종료 시 다음과 같은 예외가 발생할 수 있습니다: 2. 발생 시점 Spring 애플리케이션 종료 중, 별도 쓰레드 또는 병렬 처리 중에 ApplicationContext.getBean() 을 호출하는 경우에 발생합니다. 예를 들어 다음은 비동기 처리 로직 내에서 Bean을 호출한 경우입니다: 3. 주요 원인 4. 해결 방법 4.1 Bean 사전 주입 더 읽기
Spring Batch Stack Trace 분석: 예외 발생 위치와 전달 순서 이해하기
Spring Batch 기반의 배치 작업을 수행하던 중 다음과 같은 예외가 발생했습니다. com.sample.common.exception.CustomException: 테스트용 오류 발생 예시입니다. at com.sample.batch.job.ExampleJob.lambda$1(ExampleJob.java:174) … at com.sample.SampleBatchApplication.main(SampleBatchApplication.java:118) 해당 Stack Trace를 보면 ExampleJob.lambda$1 메서드에서 CustomException이 발생했으며, 이 예외는 Spring Batch 내부 프로세스를 거쳐 main() 메서드까지 전파되었습니다. 이를 이해하기 위해 다음과 같은 예외 전달 순서를 주목할 수 있습니다: 더 읽기
Spring Batch 멀티스레드 처리 중 대기 상태 발생 및 트랜잭션 롤백 해결 방법
Spring Batch 환경에서 멀티스레드 처리 중 특정 스레드가 대기 상태에 빠지고, Pod가 계속 Running 상태가 되는 문제를 해결하는 방법을 정리합니다. 1️⃣ 문제 상황 2️⃣ 대기 상태가 발생하는 원인 분석 3️⃣ 해결 방법 ✅ 스레드 타임아웃 적용 ✅ 예외 발생 시 CountDownLatch.countDown() 보장 ✅ 대기 상태 감지 및 강제 종료 (shutdownNow() 더 읽기
AWS Aurora MySQL 환경에서 HikariCP keepaliveTime 적용 조건과 커넥션 관리
내용 정정: Aurora MySQL이라는 이유만으로 HikariCP keepaliveTime이 불필요하다고 단정할 수 없습니다. DB·프록시·방화벽의 연결 제한, 드라이버와 HikariCP 버전에 따라 판단해야 합니다. 기존의 “Aurora Proxy” 표기는 AWS 서비스명인 RDS Proxy로 바로잡습니다. keepaliveTime이 하는 일 HikariCP가 풀의 유휴 연결을 주기적으로 확인하는 설정입니다. 사용 중인 쿼리의 실행 시간을 제한하거나 Failover로 끊긴 트랜잭션을 복구하지는 않습니다. 더 읽기
EKS 환경에서 Pod 장애 발생 시 요청을 이어받아 처리하는 방법
1. 개요 EKS 환경에서 Spring Boot 애플리케이션이 여러 개의 Pod에서 실행되고 있을 때,특정 Pod가 요청을 처리하는 중 장애로 종료되면, 다른 Pod에서 동일 요청을 이어서 처리할 수 있는가? 이 문서에서는 일반적인 CRUD 요청과 파일 업로드 요청 모두에 대해Pod 장애 발생 시에도 중단 없이 이어서 처리할 수 있는 방법을 설명합니다. 2. 첫 더 읽기
AWS Aurora Failover 대비 Spring Boot 트랜잭션 유지 및 커넥션 폐기 대응 방법
AWS Aurora를 사용하는 Spring Boot 애플리케이션에서 Writer 장애(Failover) 발생 시 트랜잭션을 유지하면서 서비스 중단을 최소화하려면 어떻게 해야 할까?Aurora 클러스터에 연결된 상태에서 Writer 장애 발생 시 기존 커넥션이 유지되지 않으며, 트랜잭션 처리 방식은 autocommit 설정에 따라 다르게 동작한다. 이 글에서는 Aurora 장애 발생 시 트랜잭션이 어떻게 동작하는지와 애플리케이션에서 최적의 대응 방법을 더 읽기
KISA SEED ECB 암복호화 및 문자열 변환 방법
KISA SEED는 한국정보보호진흥원(KISA)에서 개발한 블록 암호 알고리즘으로, 국내에서 널리 사용되는 암호화 방식 중 하나입니다. SEED 알고리즘은 여러 운영 모드를 지원하는데, 그중 ECB(Electronic Codebook) 모드는 블록 단위로 독립적으로 암호화하는 방식입니다. SEED ECB 모드를 사용하여 데이터를 암·복호화하면 byte[] 형태의 결과값을 얻게 되는데, 이를 문자열(String)로 변환하여 저장하거나 전송하는 방법이 필요할 수 있습니다. 이 더 읽기