API 접근 기록을 저장하는 기능을 맡으면서 Path, QueryString, Referrer, Body 값을 DB에 저장을 한다. HTTP의 주요 값을 갖고 있는 HttpServletRequest 클래스를 통해서 Path, QueryString, Referrer 조회하면 정상적으로 조회가 되지만, Body 조회를 하면 값이 없다고 나온다. 그 이유를 찾아보니 네트워크로부터 들어오는 데이터여서 한 번만 읽을 수 있도록 제한되어 있다고 한다. 개발환경 : Java 11, SpringBoot 2.7.71. 문제 사례public class TestController { @PostMapping("/test") public void test(@RequestBody String body, HttpSer..
생성 패턴 중에서 많이 쓰이는 팩토리 패턴(Factory Pattern)에 대해 알아보겠습니다. 1. 팩토리 패턴(Factory Pattern)의 개념 및 역할[ 팩토리 패턴이란? ]팩토리 패턴(Factory Pattern)은 객체를 생성하는 디자인 패턴 중 하나입니다. 객체를 생성하는 과정을 캡슐화하여 클라이언트가 직접 객체를 생성하는 것이 아니라 생성 로직을 분리해서 객체를 요청하고 생성하는 디자인 패턴입니다. 이를 통해 객체 생성의 유연성을 높이고, 의존성을 줄이며, 코드의 확장성을 향상시킵니다. [ 팩토리 패턴 주요 4가지 역할 ]1. 팩토리 패턴을 사용하여 생성 과정을 캡슐화할 수 있다. 이때 생성 과정의 변경 사항은 호출자에게 투명성을 가진다.2. 생성 과정을 팩터리 클래스로 추출한 후, 재..
Slow 쿼리나 실제 실행되는 쿼리가 인덱스를 제대로 실행되는지 확인할 때 실행 계획(Explain) 사용한다.실행 계획을 볼 때 각 항목들(select_type, type, key, ref, filtered, extra) 보게 되는데 이 항목들을 읽을 수 있는 배경지식이 필요하다.하지만 실행 계획을 읽을 때마다 “이 항목은 어떤 의미였지? 이 항목에 대한 타입은 무슨 의미였지?” 까먹거나 정확히 확인하기 위해서 구글링 하는 경우가 많았다. 그래서 이번에 구체적으로 정리하기로 마음 먹었다. 1. Explain 항목[ Select Type ]쿼리에서 사용된 SELECT 문의 종류를 알려준다.Select Type 명설명SIMPLE가장 일반적인 SELECT 문이며, 복잡한 UNION이나 서브쿼리가 없는 경우..
Nginx에서 SSL 인증서 만료가 되면 갱신을 해야한다. 만약 갱신을 제때 못하면 신한카드 SSL 인증서 만료로 인한 결제 장애 생기는 일이 생긴다.이번에 갱신을 하면서 대표적인 인증 기관(CA : Certificate Authority), 각각의 인증서가 어떻게 이루어져 있는지, 갱신은 어떻게 하는지에 대해 알아보았다.일단 인증 기관을 정리하면 아래와 같다.1. Let's Encrypt: Let's Encrypt- 무료로 SSL/TLS 인증서를 발급하는 비영리 기관이다. 많은 웹 호스팅 서비스 및 웹 서버에서 Let's Encrypt를 지원하고 있어, 사용자들이 쉽게 무료 SSL/TLS 인증서를 획득할 수 있다.2. DigiCert: DigiCert- 글로벌 인증 기관 중 하나로, 고급 보안 솔루션을..