전체 글38 구버전 서버와 최신 JDK 서버, TLS 핸드셰이크 문제 해결기 이번에 유지보수를 하고 있는 고객사에서 문의가 들어왔다.10년 전에 우리가 납품했던 솔루션이 아직도 JDK 1.6 + Spring 3 기반으로 잘 돌아가고 있었는데,상대방 시스템을 업그레이드하면서 JDK를 Zulu OpenJDK 17로 올리려다 보니 문제가 생긴 거다.우리 쪽은 현실적으로 업그레이드가 불가능했다.Spring 3는 JDK 11부터 공식적으로 지원하지 않으니, JDK 버전만 올린다고 해결될 게 아니라사실상 재개발 수준으로 일이 커져버린다.그래서 결국 결론은 우리 서버는 현 상태 유지, 상대 서버만 JDK 업그레이드 진행으로 정리했다.근데 여기서 중요한 포인트가 하나 있었다.바로 JDK 버전 차이로 인한 TLS 통신 문제.TLS Handshake 이슈HTTPS 통신은 데이터를 주고받기 전에 먼.. 2025. 8. 19. 도메인 변경 중 SSL 에러 발생 -> 등록 및 갱신하기 며칠 전, 유지보수 중인 프로젝트에서 외부 시스템과의 연동에 문제가 생겼다.별건 아니고, 기존에 쓰던 도메인을 다른 걸로 바꾸면서 발생한 문제였다.URL만 바꿨을 뿐인데 갑자기 서버에서 API 요청이 실패하기 시작했다.에러 로그를 보니 다음과 같은 메시지가 남아 있었다.javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetSSL 인증서 문제였다.모든 예시는 가칭입니다! 문제 요약도메인을 기존에서 *.new.or.kr 로 변경함 서버에서.. 2025. 7. 30. Spring MVC 에서 React 로 전환 🧩 React 도입 시 백엔드는 어떻게 구성하면 좋을까? (Spring MVC vs React 구조 정리)이번 프로젝트에서는 기존에 사용하던 Spring Framework + JSP 조합에서 프론트엔드를 React로 전환하는 작업을 하게 되었다.React는 프론트와 백이 완전히 분리되는 구조라 처음에는 기존의 MVC 패턴과 어떻게 연결될지에 대해 꽤 혼란이 있었다.특히 "React를 쓰면 기존의 Model-View-Controller는 어떻게 되는 거지?"라는 질문이 생겼다.그래서 React를 도입하면서 기존 Spring MVC 구조와 어떻게 달라지는지를 간단히 정리해봤다.(이 부분은 나중에 또 다른 프로젝트에서 참고할 일이 있을 것 같아서!)✅ 기존 방식: Spring MVC + JSP기존에는 브라우.. 2025. 7. 28. 데이터 전달할때 자주 쓰는 JSON 그리고 XML 이번 프로젝트에서는 외부 시스템에서 MQTT로 메세지를 받아서 처리하는 로직을 개발하게 되었다.처음에는 메세지 포맷을 XML로 할지, JSON으로 할지 팀 내에서 고민을 꽤 했다.각자 장단점이 있어서 쉽게 결정을 못 했지만, 최종적으로는 JSON을 선택하게 되었다.그 과정에서 정리해본 JSON vs XML 비교 내용을 간단히 공유해본다.(개발하면서 꽤 자주 부딪히는 주제라 정리해두면 나중에 또 쓸 일이 있을 듯.)✅ JSON의 장점1. 가볍고 간결하다JSON은 불필요한 태그 없이 딱 필요한 데이터만 담을 수 있어서메시지 크기를 줄이기에 좋다.→ MQTT처럼 네트워크 효율이 중요한 환경에 유리2. 파싱이 쉽고 빠르다대부분의 언어에서 기본적으로 지원되는 JSON 파서 덕분에별다른 설정 없이 바로 객체로 변환.. 2025. 7. 19. [암호화]Threefish - Skein 해시 함수의 핵심 블록 암호 우연히 유지보수 하는 업체에서 암호화를 해야한다며 요청이 왔다(공공기관) 당연히 우리는 흔히 사용하는 ARIA 나 AES 를 사용하고 있는 줄 알았는데 솔루션이 버젼업 하면서 새로운 암호화를 채택했다고 하여 정리한다!1. Threefish 개요Threefish는 2008년, NIST SHA-3 해시 함수 공모전을 위해 설계된 해시 함수인 Skein의 핵심 블록 암호입니다. 일반적인 블록 암호와 달리 Threefish는 비트 조작 기반 구조로 되어 있으며, 특히 고속 처리와 단순한 구조, 그리고 암호학적 강인성을 목표로 설계되었습니다.Threefish는 독립적으로도 사용할 수 있지만, 보통은 Skein 해시 함수의 내부에서 블록 암호로 동작합니다.2. 주요 특징 항목설명디자이너Bruce Schneier.. 2025. 7. 16. 스레드 풀 (Thread Pool) 왜 지정해야 할까? 📘 스레드 풀(Thread Pool)을 왜 지정해야 할까?서버에서 여러 사용자의 요청을 동시에 처리하려면 "스레드"라는 일꾼들이 필요해요.이 일꾼들을 하나씩 매번 새로 만드는 건 비효율적이기 때문에, 보통은 **“스레드 풀”**이라는 개념을 써서 미리 여러 스레드를 만들어두고, 필요할 때 꺼내 쓰고 다시 돌려줍니다.하지만 중요한 문제는…❗ “그럼 도대체 스레드를 몇 개 만들어야 하지?”스레드를 너무 적게 잡으면 응답이 느려지고,너무 많이 잡으면 서버가 버벅거리거나 죽을 수도 있어요.그래서 적절한 스레드 수를 지정하는 과정이 꼭 필요합니다.🧩 스레드 수를 지정할 때 알아야 하는 것들1️⃣ CPU 코어 수💡 컴퓨터(서버)의 뇌! 동시에 몇 개의 일을 진짜로 할 수 있는지 알려줘요.CPU 코어가 4개면 .. 2025. 7. 12. 이전 1 2 3 4 ··· 7 다음