반응형

2026/01 6

개인 운영 프로젝트 N + 1 문제 해결로 1900ms → 543ms로 70% 성능 개선

개인적으로 게임 관련 사이트를 운영 중인데 서비스를 이용하면서 특정 API의 응답이 체감상 다소 느리다는 느낌을 받았다실제로 어느 정도 지연이 발생하고 있는지 확인하기 위해 PostMan을 통해 배포 서버에 요청을 보내 API 응답 시간을 측정해 봤다 그 결과, 문제가 된 API의 평균 응답 속도는 약 1900ms으로 확인되었고 자주 조회되는 API임을 고려했을 때 개선이 필요하다고 판단했다서버 환경 및 인프라 구성해당 프로젝트는 다음과 같은 환경에서 운영 중이다AWS EC2 (프리티어)인스턴스 타입: t2.micro 메모리(RAM): 약 2GB (가상메모리 포함)운영체제: LinuxAWS RDS 사용 (관계형 데이터베이스)Cloudflare CDN을 앞단에 적용하여정적 리소스 캐싱HTTPS 및 기본적인..

[Spring] Spring Security JWT 로그인 구현 필수 개념 (Session, JWT, Access / Refresh Token)

이전 글에서 Spring Security의 기본 구조와 인증 처리 흐름에 대해 작성해 보았습니다이번에는 Spring Security를 이용하여 JWT 토큰 기반 인증 방식을 적용한 로그인 서비스를 구현해보려고 합니다 Spring Security에서 기본적으로 세션(Session) 기반 인증 방식을 제공하고 있습니다세션 기반 인증클라이언트가 서버에 로그인 요청을 보내고 로그인 성공 시 서버가 사용자의 인증 정보를 세션에 저장하고 세션 ID를 생성하여 클라이언트에 쿠키로 전달한다 이후 요청에서 클라이언트는 세션 ID를 함께 보내 서버에서 사용자를 식별한다위 다이어그램은 세션 기반 인증 방식의 전체 흐름을 간단하게 나타낸 것이다 클라이언트와 서버 간의 인증 방식은 크게 다음과 같은 순서로 진행된다 1. 로그인..

Back-end/Spring 2026.01.16

[Spring] Spring Security 기본 구조와 인증 처리 흐름 (Filter Chain)

Spring Security란?Spring Security는 Spring 기반 애플리케이션의 인증(Authentication)과 인가(Authorization)를 담당하는 보안 프레임워크웹 애플리케이션에서 사용자의 접근을 제어하며 권한에 따른 리소스 보호하는 역할을 합니다 또한 Spring Security는 다양한 보안 관련 옵션을 기본으로 제공하고 있으며 대표적으로 CSRF 공격, 세션 고정(Session Fixation) 공격과 같은 웹 보안 위협을 방어할 수 있도록 지원합니다 여기에 JWT 기반 인증을 도입하고 Token을 HttpOnly 쿠키로 관리하는 방식으로 구현한다면 프론트에서 자바스크립트를 통한 토큰 접근을 차단할 수 있어 XSS 공격에 대한 방어 수준을 강화할 수 있습니다 CSRF 공격사..

Back-end/Spring 2026.01.09

[Java] 자바 자료구조 백엔드에서 어떻게 사용할까? (List)

백엔드 개발에서 많이 사용하는 자료구조는 List라고 생각합니다 주로 게시글 목록,조회 결과,API 응답 데이터 등 여러 데이터를 순서대로 다뤄야 하는 상황에서 사용됩니다여기서 List를 왜 사용하고 어떤 구현체를 통해 구현했는지에 대해 알아보고자 합니다 Spring 기반 프로젝트에서 List를 어떤 기준으로 사용했는지에 대해서 작성합니다1. 백엔드에서 List를 사용하는 상황프로젝트에서 List 자료구조는 다음과 같은 상황에서 주로 사용한다 - DB 조회 결과 저장- REST API 응답 데이터 구성List posts = postRepository.findAll();해당 상황에 대한 공통점은 데이터가 여러 개이며 순서가 중요하고 중복을 허용하는 데이터인 경우가 많았다이 조건을 만족하는 자료구조는 Li..

Back-end/Java 2026.01.08

[IntelliJ] 인텔리제이 유용한 플러그인 추천 4가지

주로 JetBrains의 IntelliJ IDEA를 사용하고 있는데요 개발 생산성을 높이고 좋은 방식으로 작업을 할 수 있는 플러그인을 사용하고 있습니다 그중에서 제가 사용하고 있는 플러그인 4가지를 소개합니다JetBrains Marketplace JetBrains MarketplaceWelcome to JetBrains Marketplaceplugins.jetbrains.com JetBrains Marketplace 공식 홈페이지에서 플러그인을 검색하여 설치할 수 있습니다또는 IntelliJ IDEA에서 설정 - 플러그인에서도 사용 가능 합니다1. One Dark Theme - IDE 테마 One Dark Theme - IntelliJ IDEs Plugin | MarketplaceOne Dark t..

IDE 2026.01.04

[Spring] Spring Boot + MySQL 연동 & JPA 활용 심화 (2)

이전 포스팅에서 Spring Boot와 MySQL 연동하여 프로젝트 실행 후 출력되는 로그에 대해서 살펴봤다면 이번에는JPA를 실제 프로젝트에서 어떻게 사용되고 활용하는지에 대해서 작성해보려고 합니다 이번 글에서는 간단한 게시판 프로젝트를 예제로 사용하여 설명합니다엔티티 설계 방식엔티티는 DB 테이블과 매핑되는 클래스로 @Entity 어노테이션이 붙은 객체를 의미한다Spring에서는 JPA를 사용할 때 DB 테이블을 자바 클래스로 설계하고 관리하기 위해 주로 사용된다 그런데 엔티티를 "테이블을 자바 클래스로 옮긴 것" 정도로 생각하기 쉬운데 실제로는 JPA가 상태를 관리하는 객체 입니다JPA는 엔티티를 영속성 컨텍스트에 올려두고, 트랜잭션 동안 엔티티의 상태 변화를 추적하여 커밋 시점에서 필요한 SQL을..

Back-end/Spring 2026.01.03
반응형