Java 개발 환경에서 keytool로 인증서 및 신뢰 저장소 생성하고 Spring Boot에서 인증서 신뢰하기
Java 개발 환경에서 사용자 정의 인증서를 생성하고 이 인증서를 신뢰하는 방법을 설명합니다.
JKS 방식 예제
인증서 생성
다음 명령어로 키 쌍과 자체 서명 인증서를 생성합니다. 모든 사용자 정의 값은 영문으로 설정하세요.
keytool -genkeypair -alias myalias -keyalg RSA -keysize 2048 -storetype JKS -keystore mykeystore.keystore -validity 365 -ext SAN=dns: ...
8월 17일 13:57에 게시됨
Spring Boot 기반 모바일 쇼핑 시스템 설계 및 구현
개요
현대 정보기술 환경에서 사용자는 다양한 디바이스 간의 원활한 연동과 직관적인 인터페이스를 요구한다. 이에 따라 단일 플랫폼으로 다수의 기기에서 일관된 경험을 제공할 수 있는 모바일 쇼핑 시스템의 필요성이 증가하고 있다. 본 시스템은 사용자의 편의성과 운영 효율성을 동시에 고려하여 개발되었으며, 최신 웹 기술 스택을 활용해 안정적이고 확장 가능한 아 ...
8월 14일 22:22에 게시됨
Spring Boot Quartz를 활용한 동적 스케줄링 및 DB 영속화 구현
Quartz는 Java 환경에서 널리 사용되는 강력한 작업 스케줄링 프레임워크입니다. Spring Boot와 통합하면 단순한 반복 작업을 넘어, 실행 중에 스케줄을 변경하거나 작업 상태를 데이터베이스에 저장하여 서버 재시작 후에도 작업을 유지하는 영속화 기능을 쉽게 구현할 수 있습니다.
1. 의존성 설정
Spring Boot 프로젝트에서 Quartz를 사용하기 위해 다음의 의존성을 po ...
8월 13일 16:46에 게시됨
이메일 인증 코드 발송 로직 및 구현
인증 코드 발송 처리 흐름
시스템은 사용자에게 이메일 인증 코드를 전송하기 전, 여러 단계의 제한 조건을 검사하여 과도한 요청을 방지합니다.
1. 첫 번째 수준의 요청 제한 확인
해당 전화번호에 대해 최근 5분 내에 이미 요청이 있었는지를 확인합니다. Redis의 Set 자료구조를 이용하며, 키는 "limit:first_level:{전화번호}", 값은 "1"로 저장됩니다.
Boolean firstL ...
8월 7일 06:50에 게시됨
Spring Boot와 Redis-Caffeine을 이용한 다단계 캐시 시스템 설계 및 구현
고성능 애플리케이션을 구축할 때 데이터베이스나 검색 엔진(ES)의 부하를 줄이기 위해 캐싱 전략은 필수적입니다. 로컬 캐시(Caffeine)의 빠른 속도와 분산 캐시(Redis)의 데이터 공유 장점을 결합한 다단계 캐시(Multi-level Cache) 구조를 책임 연쇄 패턴(Chain of Responsibility)과 AOP를 활용해 구현하는 방법을 살펴봅니다.
1. 커스텀 어노테이션 정의
메서드 단위 ...
8월 7일 04:24에 게시됨
Minio, Redis 및 Spring Boot 백엔드 핵심 기술 통합 가이드
Minio 객체 스토리지
핵심 개념 및 클라이언트 사용
객체 (Object): 실제 저장되는 데이터 단위 (예: 업로드된 이미지 파일)
버킷 (Bucket): 객체를 논리적으로 그룹화하는 컨테이너로, 파일 시스템의 폴더와 유사한 역할을 함
엔드포인트 (Endpoint): Minio 서버에 접근하기 위한 네트워크 주소 (예: http://192.168.10.101:9000). 참고로 9000 포트는 API 기본 포트이며 ...
8월 6일 02:49에 게시됨
Spring Boot 프로젝트에 Generic Mapper 통합 방법
기존에는 mapper.xml 파일을 통해 직접 SQL을 작성해야 했지만, 일반적인 쿼리 작업을 위해 Generic Mapper를 도입한 이후로는 더 이상 복잡한 XML 설정 없이도 효율적으로 데이터베이스 작업이 가능해졌습니다. 이 라이브러리는 자주 사용되는 기본 쿼리(예: selectOne, insert, update, delete)를 미리 구현해두었기 때문에 개발 속도가 크게 향상됩니다.
실제 프로젝 ...
8월 3일 07:35에 게시됨
Spring Boot에서 Jasypt를 활용한 설정 파일 암호화
Spring Boot 프로젝트에서 Jasypt를 사용하여 설정 파일의 민감 정보를 암호화하는 방법을 알아봅니다.
배경
데이터베이스 연결 정보와 같은 민감한 데이터를 설정 파일에 평문으로 저장하면 보안 위험이 발생할 수 있습니다. 이를 해결하기 위해 Jasypt 라이브러리를 사용하여 이러한 정보를 암호화할 수 있습니다. 아래에서는 Spring Boot 프로젝트에서 Jasypt를 설정 ...
8월 2일 15:14에 게시됨
Neo4j 그래프 데이터베이스 및 Cypher 쿼리 언어 학습 및 활용
Neo4j는 Java 기반의 그래프 데이터베이스이며, 실행을 위해서는 JVM 프로세스를 시작해야 하므로 Java SE JDK가 설치되어 있어야 합니다.
Linux 환경 Neo4j 다운로드: https://neo4j.com/download/other-releases/#releases (커뮤니티 에디션은 무료)
압축 해제 후 Neo4j 설정 파일(neo4j.conf)을 수정합니다.
dbms.directories.import: load csv 시 파일 경로를 임의의 ...
8월 1일 06:07에 게시됨
Redisson 분산 락을 이용한 SMS 중복 발송 제한 구현
개요
사용자가 인증 번호 요청 버튼을 여러 번 클릭하거나 악의적인 요청을 보낼 때, 동일한 번호로 짧은 시간 내에 여러 건의 SMS가 발송되는 것을 방지해야 합니다. 이를 위해 Redis 기반의 Redisson 분산 락을 활용하여 1분간 발송을 제한하는 로직을 구성합니다.
의존성 설정
프로젝트의 pom.xml에 분산 락을 위한 Redisson과 알리운(Aliyun) SMS API 라이브러리를 추 ...
7월 31일 18:59에 게시됨