Spring REST Docs란 ? RESTful 서비스를 문서화하는 데 도움을 주는 도구 Asciidoctor로 작성한 수동 문서와 Spring MVC Test를 통해 자동 생성된 스니펫을 결합하여 사용 이 프로젝트의 핵심 철학 중 하나는 테스트를 통해 문서를 생성한다는 점 이는 API의 실제 동작과 항상 일치하...
OS - 리눅스 Load Average 살펴보기
Load Average ? 리눅스의 load average는 시스템 전체의 부하 평균을 나타내며, 실행 중이거나 대기 중인 스레드(태스크)의 수를 평균으로 나타낸 것. 즉, 실행 가능한(runnable) 태스크뿐만 아니라, uninterruptible sleep 상태(중단 불가능한 대기 상태)에 있는 태스크들도 추적 역사 처음엔 실...
iframe이 열리지 않는 이슈 (ancestor violates the following Content Security Policy directive)
상황 기존에는 http://alpha.domain.com 부모창에서 http://alpha-foo.domain.com iframe을 사용하는 시스템에서, 특정 작업으로 인해 http://alpha.domain.com 부모창에서 https://test.alpha-foo.domain.com iframe을 사용하게 되었는데, 콘솔에 다음과 같은 에...
WEB - Content-Security-Policy(CSP) 살펴보기
Content-Security-Policy ? 콘텐츠 보안 정책(CSP)은 특정 유형의 보안 위협의 위험을 방지하거나 최소화하는 데 도움이 되는 기능으로 웹사이트에서 브라우저로 보내는 일련의 지침으로 구성되어 있으며, 브라우저에서 코드가 수행할 수 있는 작업에 제한을 두도록 지시 CSP 전달 방식 HTTP 응답 헤더 ...
Hello 2025
지난 시간들을 되돌아보며 다짐해본다. 감사하자. 겸손하자. 꾸준하자. 넓게보자. 진짜가 되자.
Java - try-with-resources 알아보기
try-with-resources란 ? 자바7부터 등장한 구문으로 try 블록이 종료될 때 AutoClosable 또는 Closable 인터페이스를 구현한 리소스에 대해 (JVM이) 자동으로 close()를 호출한다. 기존(try-finally) 방식 static String readFirstLineFromFileWithFinallyBlock...
HashMap의 put 메서드 들여다보기
자바 17 기준, GPT 선생님과 함께 공부해보았다. static class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; Node<K,V> next; Node(int hash, K k...
API 호출시 타임아웃이 발생하면 ? (caller 관점에서)
상황 가정 사용자 요청을 처리할 때 외부 API 호출이 필요하고, 해당 API(api/foo) 호출에 대해 타임아웃이 발생 (client ---> 내 서버 ---X 외부 서버) 생각해볼 수 있는 다양한 타임아웃 상황 외부 서버에서 api/foo에 대한 처리가 늦어짐 api/foo 요청이 외부 서버에 늦게 도...
DB 롤체인지 후 애플리케이션 헬스체크가 정상적으로 되지 않은 이슈 (feat. DB 커넥션 풀)
상황 L4/L7 스위치 --- WEB --- WAS(애플리케이션)로 구성된 환경에서 2~3초 간격으로 L4/L7 스위치에서 헬스체크 신호를 보냄 애플리케이션은 헬스체크를 위해 DB에 SELECT 1 질의하게 되어있음 인프라팀 작업 이슈로 마스터 DB 서버 메모리 점유율이 너무 높아져 DB가 롤체인지 됨(약 12초 정도 소요) 롤체인지 ...
MySQL에서 4bytes 이모지가 물음표로 저장되는 이슈
상황 MySQL DB에 🎃이모지 저장시 ‘????’로 저장되었고, connection properties(jdbc url에 쿼리 스트링으로 붙는 값들)를 변경해가며 테스트 해 본 결과는 다음과 같았다. connection properties 현상 mysql-connector-j 버전 ...