728x90
반응형
SMALL

IT/java|Spring 11

[JVM] Heap 구조 뜯어보기: new 한 줄이 메모리에서 벌어지는 일

이전 글에서 부하테스트를 주제로 포스팅하면서 JVM Heap 구조를 간략히 언급했는데,이번에는 JVM 자체를 한 번 깊게 다뤄보고자 합니다.2026.03.16 - [IT/java|Spring] - [부하테스트] JMeter Ramp-up부터 JVM Heap 최적화까지: 서버 성능 개선기 [부하테스트] JMeter Ramp-up부터 JVM Heap 최적화까지: 서버 성능 개선기배경여러 서비스를 운영하면서 공통 질문이 생겼습니다. "POD 한 대가 실제로 얼마나 버틸 수 있는가?"부하테스트를 준비하던 중, 검증계·운영계 모두 JVM Heap이 Pod 메모리와 맞지 않게 설정되어snapcode.tistory.com 알고 있다고 생각하면서도, 막상 설명하려면 막히는 내용 이기도 합니다.이미 알고 계신 분께는 복..

IT/java|Spring 2026.03.17

[부하테스트] JMeter Ramp-up부터 JVM Heap 최적화까지: 서버 성능 개선기

배경여러 서비스를 운영하면서 공통 질문이 생겼습니다. "POD 한 대가 실제로 얼마나 버틸 수 있는가?"부하테스트를 준비하던 중, 검증계·운영계 모두 JVM Heap이 Pod 메모리와 맞지 않게 설정되어 있다는 것을 발견했습니다. Heap을 먼저 바로잡고 테스트를 진행했으며, 이 글은 그 과정 전체를 정리합니다.JVM Heap 최적화: 인수인계 시점부터 고정되어 있던 잘못된 설정을 발견 및 개선부하테스트: 최적화 이후 실제 성능을 데이터로 검증 JVM Heap 최적화문제 발견부하테스트 준비 중 Heap 설정을 살펴보다 이상한 점을 발견했습니다. 인수인계 시점부터 검증계·운영계 모두 Xms=Xmx=2048m으로 고정되어 있었는데, 환경별 Pod 메모리와 맞지 않는 설정이었습니다. 초기 개발 시 놓친 부분으..

IT/java|Spring 2026.03.17

[Backend] SSE vs WebSocket: 실시간 통신 방식 언제 뭘 쓸까?

[Backend] SSE vs WebSocket: 실시간 통신 방식 언제 뭘 쓸까?📊 빠른 비교표항목SSEWebSocket프로토콜HTTPTCP통신 방향단방향 (서버→클라이언트)양방향 (전이중)연결 유지HTTP 연결 유지별도 소켓 유지자동 재연결✅ (기본 내장)❌ (수동 구현)CORS간단복잡구현 복잡도쉬움어려움리소스 사용중간많음🔍 언제 뭘 쓸까?1️⃣ SSE (Server-Sent Events)"서버가 일방적으로 계속 밀어주기"Usecase:- 장시간 작업의 진행상황 표시 (파일 업로드, 데이터 처리)- 실시간 알림 (새 메시지, 주문 상태 변경)- 라이브 피드 (실시간 뉴스, 대시보드)흐름:[클라이언트] --연결 유지--> [서버] ├─ [0.5초] 진행..

IT/java|Spring 2026.02.18

[Spring Security] 자동화된 봇 공격 분석 및 방어: 로그 노이즈 90% 제거하기

[Spring Security] 자동화된 봇 공격 분석 및 방어: 로그 노이즈 90% 제거하기 배경: 아직은 사용자가 나밖에 없는데.. 갑자기 증가한 로그 (귀신이 왔다갔나...)프로덕션 서버에 배포한 Career Lens 애플리케이션(example.com)의 Docker 컨테이너 로그를 확인했을 때, 이상한 패턴의 에러 메시지들이 대량으로 쌓여 있었습니다.2026-01-27T02:06:08.623+09:00 WARN --- Request method 'POST' is not supported2026-01-27T02:44:09.104+09:00 INFO Error parsing HTTP request headerjava.lang.IllegalArgumentException: Invalid char..

IT/java|Spring 2026.01.28

[보안] Spring Boot HTTP→HTTPS 리다이렉트 완전정복

[보안] Spring Boot HTTP→HTTPS 리다이렉트 완전정복 개요이 글은 Spring Boot(백엔드)에서 HTTP → HTTPS 자동 리다이렉트를 구현하는 방법을 정리합니다.사용자가 http://your-domain.com으로 접속해도 자동으로 https://your-domain.com으로 이동하게 합니다.핵심: 사용자는 신경 쓸 필요 없이 자동으로 보안 연결로 이동합니다! 🔒목표✅ 모든 HTTP 요청(포트 80) → HTTPS(포트 443)로 자동 리다이렉트✅ Spring Boot에서 HTTP(80) + HTTPS(443) 동시 리스닝✅ 사용자 경험 개선 (자동 이동, 보안 경고 제거)✅ SEO 최적화 (Google HTTPS 우대)✅ 보안 강화 (중간자 공격 방지)전제도메인 → 서버 IP..

IT/java|Spring 2026.01.25

[디자인패턴] 자바빈즈 패턴 (JavaBeans Pattern)

[디자인패턴] 자바빈즈 패턴 (JavaBeans Pattern)            개요객체 생성 방식에서 필드가 많을 때의 문제를 해결하기 위한 방법 3가지 (패턴 하나씩 포스팅 진행)      1. 생성자에 필드가 적다면? => 점층적 생성자 패턴      2. 필드가 많고, 대부분의 필드가 선택적이면?  => 자바 빈즈 패턴      3. 필드가 많고, 대부분의 필드가 필수적이면?  => 빌더 패턴       하나씩 재미있게 읽어보실 수 있도록 깔끔한 스토리텔링식으로 작성해보겠습니다~    한눈에 보는 패턴별 장단점    자바빈즈 패턴 개념두번째 디자인 패턴은 자바빈즈 패턴입니다.유연해야 하는 로직에서 자주 사용됩니다.ex. User 객체를 생성하고, 나중에 상황에 따라 address, phoneN..

IT/java|Spring 2024.10.25

[디자인패턴] 점층적 생성자 패턴 (Telescoping Constructor Pattern)

[디자인패턴] 점층적 생성자 패턴 (Telescoping Constructor Pattern) 개요 객체 생성 방식에서 필드가 많을 때의 문제를 해결하기 위한 방법 3가지 (패턴 하나씩 포스팅 진행) 1. 생성자에 필드가 적다면? => 점층적 생성자 패턴 2. 필드가 많고, 대부분의 필드가 선택적이면? => 자바 빈즈 패턴 3. 필드가 많고, 대부분의 필드가 필수적이면? => 빌더 패턴 하나씩 재미있게 읽어보실 수 있도록 깔끔한 스토리텔링식으로 작성해보겠습니다~ 한눈에 보는 패턴별 장단점 점.생. 패턴 개념첫번째 디자인 패턴은 점층적 생성자 패턴입니다.가장 기초적인 패턴입니다. - 여러 생성자를 사용해 필드의 조합을 다르게 하여 객체 생성함-..

IT/java|Spring 2024.10.25

[java] 유니코드 대체문자(��) 자바 검증 처리 방법 (마름모 안의 물음표)

[java] 유니코드 대체문자(��) 검증 및 처리 방법 (마름모 안의 물음표)   문제 상황 Confluence의 첨부파일 API를 호출해서 다운로드 로직 구현하고나서Tika 라이브러리의 parseToString 메소드로 여러가지 확장자 파일의 텍스트를 추출하는 과정에서일부 암호화된 파일을 파라미터로 넘겨줄 경우쓰레기값 대체문자들이 리턴되어 예외처리 분기가 필요했다. 대체문자. 바로 채득해보자.     대체문자(代替文字,replacement character)란? - 오류가 발생하거나 잘못되어 있다는 사실을 표시하기 위하여 사용되는 제어 문자입니다.  - 컴퓨터가 이해할 수 없거나, 유니코드에서 지원되지 않는 문자가 들어온 경우 대신 표현하는 유니코드(unicod)의 특수블록(special block)..

IT/java|Spring 2024.09.12

[java] com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value at [Source: (StringReader); line: 1, column: 200304] at

[Java] com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 10)): has to be escaped using backslash to be included in string value at [Source: (StringReader); line: 1, column: 200304] at    spring boot 에서 API를 호출해서 데이터를 저장하는 파이프라인 배치가 있는데,받아온 API 의 응답을 jackson object mapper으로 파싱하는 부분에서 오류가 발생했다. mapper 를 사용하는 부분에서개행문자가 포함되어 있는 json 데이터를 처리하려고 하면 (메소드 파라미터로 ..

IT/java|Spring 2024.08.29
728x90
반응형
LIST