전체 글 94

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

[ JAVA ] 네트워킹 (Networking)

네트워킹 네트워킹이란 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는 것을 말한다. 네트워킹의 개념은 컴퓨터들을 서로 연결하여 데이터를 손쉽게 주고받거나 또는 자원프린터와 같은 주변기기를 함께 공유하고자 하는 노력에서 시작되었다. 자바에서 제공하는 java.net패키지를 사용해 네트워크 어플리케이션의 데이터 통신 부분을 쉽게 작성할 수 있으며, 간단한 네트워크 어플리케이션은 단 몇 줄의 자바코드 만으로도 작성이 가능하다. 클라이언트/서버 클라이언트/서버는 컴퓨터간의 관계를 역할로 구분하는 개념이다. 서버 : 서비스를 제공하는 컴퓨터 클라이언트 : 서비스를 사용하는 컴퓨터 서비스는 서버가 클라이언트로부터 요청받은 작업을 처리하여 그 결과를 제공하는 것을 뜻한다. 서버가 제공하는 서비스의 종류에..

[ JAVA ] 직렬화란

객체를 저장하거나 메모리, 데이터베이스 혹은 파일로 옮기려면 어떻게 해야할까? 이럴 때 필요한 것이 직렬화다. 직렬화란? 직렬화란 객체를 데이터 스트림으로 만드는 것을 뜻한다. 즉 객체에 저장된 데이터를 스트림에 쓰기위해 연속적인 데이터로 변환하는 작업을 말한다. 솔직히 이렇게 말하면 어려운것 같다.. 쉽게 말하면, 직렬화란 현재 데이터의 상태를 영속적으로 저장하거나 다른 환경으로 전달(네트워크 통신 등)하기 위해 어떠한 정해진 포맷으로 변환하는 과정을 말한다. 그리고 이 변환된 데이터를 다시 원래 데이터로 변환 가능하며, 이러한 과정을 역직렬화라고 한다. 그리고 자바에서는 직렬화란? 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데..

[ JAVA ] 입출력

입출력이란? I/O란 INPUT과 OUTPUT의 약자로 입력과 출력, 간단히 줄여서 입출력이라고 한다. 입출력은 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것을 말한다. 1. 스트림 (Stream) 한마디로 정의 하면 스트림이란 데이터를 운반하는데 사용되는 연결통로이다. 스트림의 특징 스트림은 단방향통신만 가능하다. 따라서 입력과 출력을 동시에 처리 할 수 없다. 입력과 출력을 동시에 수행하려면❕❓ 입력을 위한 입력스트림과 출력을 위한 출력스트림, 2개의 스트림이 필요하다. 그리고 스트림은 먼저 보낸 데이터를 먼저 받게 되어 있으며 중간에 건너뜀 없이 연속적으로 데이터를 주고받는다. 큐와 같은 FIFO(First In First Out)구조로 되어 있다고 생각하면 이해가 쉽다. 2. ..

728x90