일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @Builder
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Callback
- case when
- CCW
- chat GPT
- CICD
- Today
- Total
목록2024/12 (18)
기록
1. 소개JWT를 선택한 이유사용자를 인증하는 방법에는 여러 가지가 있습니다. 그중에서 JWT(JSON Web Token)를 사용하기로 한 이유는 간단합니다. JWT는 서버가 사용자의 인증 상태를 유지하기 위해 별도의 저장 공간을 필요로 하지 않습니다. 반면에, 세션 기반 인증은 서버가 상태를 저장해야 하므로 확장이 어렵고 유지보수가 복잡합니다. JWT는 이러한 문제를 해결해 줍니다. 또한, JWT는 클라이언트가 자체적으로 인증 정보를 유지하기 때문에 마이크로서비스 환경에서도 유용하게 사용할 수 있습니다.토큰 전달 방식 고민JWT를 사용하기로 한 뒤, 우리는 "어떻게 토큰을 전달할 것인가?"라는 질문에 직면했습니다. 토큰을 쿠키에 저장하면 클라이언트가 따로 신경 쓰지 않아도 된다는 장점이 있습니다. 하지..
시작하면서최근에 고민했던 것 중 하나는 "로그인 시 만들어둔 토큰을 어떻게 관리해야 할까?"라는 문제였습니다. 로그인 토큰은 인증과 권한 관리를 위해 반드시 필요한데, 이를 어디에 저장하고 어떻게 관리해야 하는지 명확히 정해야 했습니다. 처음에는 외부 저장소를 활용하는 방안을 떠올렸습니다. 예를 들어, Redis 기반의 Elastic Cache를 사용하면 분산 환경에서도 안정적으로 토큰을 관리할 수 있습니다. 하지만 여기서 예상치 못한 난관에 부딪혔습니다. Elastic Cache는 같은 VPC 내에서만 접근 가능하다는 제한이 있었습니다. 로컬에서 이를 테스트하려면 Bastion Host를 통해 접속하거나, VPN 같은 추가적인 네트워크 설정이 필요했습니다. 이 과정이 생각보다 복잡하고 번거로웠습니다. ..
1. 개요블루그린 배포(Blue-Green Deployment)는 애플리케이션 배포 중에도 사용자 경험을 유지할 수 있는 무중단 배포 방식입니다. 이를 통해 새 애플리케이션 버전을 테스트하고, 안정적으로 운영 환경에 반영할 수 있습니다.본 가이드는 GitHub Actions, Docker, Nginx, Spring Boot, AWS를 활용하여 블루그린 배포를 구현하는 방법을 다룹니다. 주요 내용은 다음과 같습니다:블루그린 배포 아키텍처CI/CD 파이프라인 구성배포 스크립트와 관련 설정Blue와 Green 환경 간 트래픽 전환2. 블루그린 배포 아키텍처2.1. 주요 개념Blue 환경: 현재 사용자 요청을 처리 중인 운영 환경.Green 환경: 새로운 버전의 애플리케이션을 배포하고 테스트하는 대기 환경.트래..
시작하면서Java Persistence API(JPA)는 객체와 관계형 데이터베이스 간의 매핑을 지원하는 강력한 도구로, 개발자들이 SQL을 직접 다루지 않고도 데이터를 효율적으로 관리할 수 있도록 돕습니다. 이 글에서는 책 "자바 ORM 표준 JPA 프로그래밍"의 16장에서 다룬 중요한 개념과 예제를 중심으로 내용을 정리하였습니다.1. 격리 수준과 문제점JPA에서는 트랜잭션 격리 수준을 이해하고 데이터 일관성을 유지하는 것이 중요합니다. 격리 수준에 따라 발생할 수 있는 문제점을 아래 표에 정리하였습니다.격리 수준설명발생할 수 있는 문제READ UNCOMMITTED트랜잭션에서 커밋되지 않은 데이터를 읽을 수 있음Dirty ReadREAD COMMITTED커밋된 데이터만 읽을 수 있음Non-repeata..
스프링 이벤트 처리 예제 및 코드 구현시작하면서이 프로젝트는 오픈소스를 분석하다가 각 모듈들이 이벤트를 통해 통신하는 것을 발견한 것이 계기가 되었습니다. 처음에는 이벤트 기반 통신이 어떻게 이루어지는지 이해하기 어려웠지만, 이를 제대로 익히기 위해 직접 샘플 프로젝트를 만들어보기로 했습니다. 스프링의 이벤트(Event) 기능은 애플리케이션의 모듈화와 확장성을 높이는 데 큰 도움이 되며, 이번 글에서는 간단한 이벤트 처리 프로젝트를 통해 이벤트 구현, 발행(Publish), 리스너(Listener) 설정 방법을 단계별로 익혀보겠습니다. 또한 이러한 이벤트 기반 아키텍처의 장점과 활용 방법에 대해서도 함께 논의해 보겠습니다.1. 프로젝트 개요 및 목표이번 프로젝트에서는 두 가지 사용자 정의 이벤트(Firs..
JPA 활용과 심화 이해이 글은 "자바 ORM 표준 JPA 프로그래밍" 책의 주요 내용을 바탕으로 작성되었습니다. 특히 15장에서 다룬 예외 처리, 엔티티 비교, 프록시 문제 및 성능 최적화에 관한 내용을 정리한 기록입니다.1. 예외 처리1.1 JPA 예외 개요JPA를 사용할 때 주로 발생하는 예외는 두 가지로 구분됩니다.트랜잭션 롤백이 필요한 예외데이터베이스 상태를 되돌려야 할 정도로 심각한 문제.예시: DataIntegrityViolationException, OptimisticLockingFailureException롤백이 필요한 이유는 데이터 무결성 위반이나 잠금 충돌 같은 경우 데이터의 일관성을 보장해야 하기 때문입니다.트랜잭션 롤백이 필요하지 않은 예외시스템에 큰 영향을 주지 않고 처리 가능한..
시작하면서JPA는 객체 지향 프로그래밍의 장점을 살려 데이터베이스를 효율적으로 관리할 수 있도록 도와줍니다. 특히 컬렉션, 컨버터, 리스너, 엔티티 그래프와 같은 부가 기능은 코드의 생산성과 유지보수를 크게 향상시킵니다. 이 글에서는 이러한 기능을 이해하기 쉽게 정리하고, 실제 코드와 함께 활용법을 살펴보겠습니다.1. 컬렉션컬렉션은 엔티티와 연관된 데이터를 저장하는 데 사용됩니다. JPA는 Collection, List, Set, Map 등 다양한 컬렉션 타입을 지원하며, 각 타입은 고유한 특징을 가지고 있습니다.1.1 Collection과 List중복 데이터를 허용합니다.엔티티를 추가해도 지연 로딩된 컬렉션은 초기화되지 않습니다.코드 예제@Entitypublic class Team { @Id @G..
보호되어 있는 글입니다.