2025/04 7

TLS가 안 맞아서 통신이 안 됐다 – 결국 JDK 올렸습니다

☁️ 새로 연동하는 협력사와 통신이 안 됐다우리 회사는 커머스 플랫폼이라협력사와의 API 연동 작업이 일상이다.이건 내가 직접 처리한 건 아니고우리팀에서 실제로 겪었던 실무 이슈다. 그날도 새로 들어온 협력사와이미지 API 연동 작업을 진행하고 있었는데…“이미지 API 요청 자체가 실패합니다.” 다른 협력사들은 아무 문제 없이 잘 되는데유독 이 새 협력사만 통신이 안 됐다. 우리는 당연히 로그부터 확인했고파고 또 파고… 그러다 딱 하나가 의심됐다.“이거 TLS 버전 문제 아니야?” 🔍 우리는 JDK 1.7 , TLS는 1.0/1.1만 지원 우리 시스템은 아주 건강한(?) 레거시다.현재까지도 Java 1.7을 쓰고 있었고그 말은 곧 지원 가능한 TLS 버전은 1.0 또는 1.1이라는 뜻. 그런데 해당..

트러블슈팅 2025.04.25

캐시는 빠르다! 근데 터지면 진짜 다 같이 죽는다!

☠️ 캐시 서버가 터졌다그날 진짜... 아무 생각 없이 평소처럼 일하고 있었는데갑자기 “사이트 접속이 안 된다”는 연락이 여기저기서 쏟아졌다. 싸늘하다.팀장급들과 윗분들 다 모여서 한 화면만 보고 있다.그 화면 = 접속 불가된 우리 서비스. 커머스 회사에서…사이트 접속이 안 됐다.그게 가능하냐고?가능했다. 원인?캐시 서버 터짐.진짜로. 그 한 놈 때문에 전체가 무너졌다. 🧨 터진 이유는? 솔직히 아직도 잘 모른다지금 생각해보면…원인은 이 중 하나거나 전부였을지도 모른다..🧠 메모리 초과 (OOM)→ 캐시 TTL 안 걸려 있던 거 다 모여서 메모리 꽉 찼을 가능성 있음 🧱 동시에 대량 캐시 MISS→ 한 타이밍에 요청 몰려서 캐시 못 받고 DB로 몰렸을 수도 있음 ❌ 캐시 삭제 실수?→ 배치든,..

트러블슈팅 2025.04.24

[Oracle] 오라클 시퀀스 초기화 3가지 방법

실무에서 시퀀스 초기화가 필요했던 순간 개발하다 보면 종종테스트 데이터를 모두 삭제하고시퀀스도 다시 1부터 시작하고 싶을 때가 있다. 나도 INSERT 테스트 몇 번 하고 DELETE로 비웠는데시퀀스는 계속 101, 102... 이렇게 올라가 있어서“이거 다시 1부터 못 돌리나?”싶어서 한참 찾아봤던 기억이 있다.그래서 정리했다.Oracle에서 시퀀스를 초기화하는 3가지 방법가장 많이 쓰는 기준으로! ❗ 그리고 참고로운영에서 시퀀스 초기화하면… 크으으으은일 납니다운영 시퀀스 건드릴 수도 없겠지만 혹시나 하는 마음에 ㅎ(진짜 PK 충돌나서 난리부르스 서비스 에러에러에러 voc voc voc... ++;)👉 이건 어디까지나 개발 서버 기준에서만 사용하세요! 1. 기존 시퀀스 삭제 후 새로 생성 (가장..

DataBase/Oracle 2025.04.23

SVN 커밋이 안 될 때 점검할 3가지

SVN 커밋이 안 될 때 실제로 겪은 상황SVN으로 소스 관리를 하다 보면어느 날 갑자기 커밋이 안 되는 프로젝트가 생기곤 한다... 개빡침.. 나도 똑같은 이클립스 환경 같은 SVN 리포지토리에서A 프로젝트는 정상 커밋이 되는데, B 프로젝트는 아무 반응 없이 실패하는 상황을 겪었다. "설정이 다른 것도 아닌데, 왜 이 프로젝트만 안 되지?"결국 확인해보니, 원인은 파일 잠금(Lock) 상태와 숨겨진 설정 차이에 있었다. 1. 파일이 lock 상태인지 확인해보기SVN은 파일을 lock(잠금) 상태로 지정할 수 있음누군가가 해당 파일을 Lock 해두었거나, 내가 Lock 후 Release 안 했을 경우→ 커밋 시도해도 아무 반응 없이 멈춤✅ 해결 방법:TortoiseSVN 기준: 해당 파일 우클릭 →..

기타/에러 2025.04.22

[트러블슈팅] DB 세션이란? 롱 아이들 세션이 쌓이면 생기는 진짜 문제

원래는 인터페이스로 통신해 해당 기능을 실행하던 구조였는데직접 시스템 자체에서 해당 기능을 처리하라는 요청이 들어왔다. 급하게 대응하기 위해 DB LINK를 신청해서 다른 DB에 INSERT하는 방식으로 로직을 변경했고단순한 작업이라 금방 끝냈다고 생각했다. 그런데 바로 다음날 DBA팀에서 연락이 왔다.“해당 DB에 세션이 갑자기 급증했는데, 혹시 무슨 작업하셨어요?” 확인해보니, DB LINK를 통해 연결된 세션이 자동으로 닫히지 않아INACTIVE 상태로 계속 남아 있었던 것... 이 일을 계기로, DB 세션과 롱 아이들 세션 이슈의 심각성을 처음 알게 되었고정리 차원에서 이 글을 작성하게 되었다. DB 세션이란?DB 세션은 클라이언트(자바 애플리케이션 등)가DB에 접속할 때 생성되는 하나의 연결..

트러블슈팅 2025.04.21

[JAVA] JNDI란 무엇인가? 그리고 언제 사용하는가?

JNDI란?JNDI(Java Naming and Directory Interface) 는Java 기반 웹 애플리케이션에서 DB 연결 정보(DataSource) 를 외부 설정으로 분리하고필요할 때 코드에서 lookup 방식으로 꺼내 쓰는 기술임 쉽게 말하면“DB 접속 정보를 미리 서버(Tomcat 등)에 등록해두고 앱에서는 그냥 이름만 불러서 사용하는 방식”임 전체 흐름 한눈에 보기 (위 다이어그램 설명)TOMCAT 설정 → JNDI에 DataSource 등록됨 ↓ Java Application이 JNDI에서 lookup() ↓ DataSource에서 Connection 꺼냄 ↓ DB에 쿼리 날림✅ 흐름 설명 (실제 동작 순서)Tomcat에서 server.xm..

[Oracle] 오라클 디비링크(DB LINK)란?

오라클에서 외부 DB와 연결할 때 사용하는 DB LINK는간편하지만 세션 부하 등 주의가 필요한 기능이다. DB LINK란?DB_LINK(Database Link)는 오라클 DB에서 다른 원격 DB의 객체(테이블, 뷰 등)를로컬 DB에서 직접 접근할 수 있도록 만들어주는 기능이다. 운영 중 서로 다른 DB 인스턴스를 연결해야 할 상황이 생깁니다. 예를 들어 A 시스템에서 B 시스템의 테이블에 접근하거나 데이터를 쓰고 싶을 때가장 간편한 방법 중 하나가 바로 DB LINK입니다. 사용 예시 ✅ SELECT 예시 SELECT * FROM customer@ERP_LINK; ✅ INSERT 예시 INSERT INTO log_table@LOG_DB_LINK (id, message) VALUES (1, '처..

DataBase/Oracle 2025.04.19
728x90