TIL(Today I Learned) 40

[TIL] Local에서 Locust 설치 및 사용법

이 글을 로컬에서 Locust사용하는 방법입니다!(Locust를 설치안하고 Docker로 사용하는 방법도 있다고 하니깐 참고해주시면 될 것 같습니다.) 1. Python 설치우선 Python 공식 홈페이지에서 Python을 다운로드해준다.  - locust를 사용하려면 파이선의 버전 3.7이상이여야 됩니다! cf ) 설치를 안하고 진행하고 싶다고 하시는 분은 "구글 코랩"을 이용하셔도 좋을 것 같습니다!  파이선 공식 홈페이지 : https://www.python.org/downloads/ Download PythonThe official home of the Python Programming Languagewww.python.org  다운로드한 설치 파일 실행   - 다운로드한 파일을 실행하면 Pyth..

[TIL] 마이페이지 성능 최적화 : 로컬 캐시(Ehcache) 적용

목적마이페이지 조회 시 반복적으로 DB를 조회하게 되어 성능 저하가 발생이를 개선하기 위해 로컬 캐시(Ehcache)를 적용하여 DB 조회 횟수를 줄이고 응답 속도를 최적화하고자 함캐시 선택 (Ehcache vs Redis)Ehcache 선택 이유로컬 캐시로, 외부 캐시 서버를 별도로 두지 않아도 돼서 설정이 간단하고 비용 절감응답 속도가 빠르며, 애플리케이션 서버에 직접 캐싱하여 네트워크 요청이 필요 없음지속적으로 갱신되는 마이페이지 데이터 특성상, 짧은 TTL 설정으로 캐시 활용도와 일관성 유지Redis와의 비교Redis는 분산 캐시로 여러 서버 간 캐시 일관성을 보장하고 큰 데이터 세트도 효과적으로 캐싱 가능Ehcache는 분산되지 않기 때문에 서버 로컬 캐시용으로 적합하며, 데이터 일관성을 관리하..

[Spring] 프로젝트에서 OAuth 소셜 로그인 적용하기: 카카오, 네이버, 구글, 깃허브 사례

OAuth2.0사용자 인증 및 권한 부여를 위한 표준 프로토콜이다.주로 사용자 정보에 접근할 때 사용자 비밀번호를 직접적으로 요구하지 않고, 제3자 서비스(클라이언트)가 특정 사용자 데이터를 일정 기간 동안만 접근할 수 있게 권한을 부여하는 방식으로 작동한다.이를 통해 보안성을 높이고 사용자 경험을 개선할 수 있다. OAuth 2.0의 주요 개념Resource Owner(자원 소유자) - 보통 서비스의 사용자로, 자신의 데이터에 접근할 수 있는 권한을 가진 사람이다.Client(클라이언트) - 사용자가 접근을 허용해주는 애플리케이션 또는 서비스를 말한다.Authorization Server(인증 서버) - 자원 소유자의 신원을 확인하고, 권한을 부여하는 서버이다. - 이 서버는 자원 소유자가 허가한 범위..

[Spring] 스프링에서 알아두면 좋은 어노테이션(Annotation) 모음

1. Validation 기능개념 - 사용자 입력값의 유효성을 검증하여 잘못된 데이터 입력을 방지하는 기능이다. 적용 사례 - 프론트엔드와 백엔드 모두에서 검증을 수행하여 안전한 데이터 처리가 가능하며, 유효성 검증 실패 시 예외 처리를 통해 사용자에게 명확한 오류 메시지를 제공할 수 있다.주요 어노테이션 - 밑 다양한 어노테이션을 사용해 필드의 유효성을 정의할 수 있다.@NotNull, @Size, @Valid, @Validated, @ControllerAdvice ... DTO 클래스에서 사용하는 Validation 어노테이션 - @NotNull: 필수 입력 필드로, 값이 null이 아니어야 함을 보장한다. - @Size: 문자열이나 컬렉션의 길이를 제한한다. - @Email: 유효한 이메일 형식인지..

[Spring Boot] 포스트맨으로 테스트하기 쉽게 환경변수 설정과 'Barere 접두사'를 제거한 순수한 토큰 헤더로 받기

포스트맨의 환경변수 설정오른쪽 위의 빨간색 네모 - 지금 현재 설정되있는 '환경변수'를 나타낸다왼쪽 옆에 있는 빨간색 네모 - 환경변수 설정할 수있는 메뉴로 들어갈 수 있다.왼쪽 환경변수 메뉴로 들어가서 "+" 버튼을 눌러준다.위의 빨간색 네모박스에 들어가있는 내용처럼 모두 입력해준다.화살표로 가르키고 있는 "login-token"은 빈 곳으로 입력한다.(추후에 로그인하고 생성된 토큰이 자동으로 저곳에 입력되어 편하게 테스트할 수 있는 것이다.) 포스트맨의 환경변수 사용방법1. 환경변수에 설정한 url 값을 "{{base_url}}"로 변경해준다.  2. Scripts 탭에서 포스트맨을 설정 또 해줘야한다.(밑의 명령어 2줄로 입력하여 설정해주면 된다.)  - var token = pm.response...

[CS스터디] Blocking I/O & Non-Blocking I/O (+ 동기와 비동기)

I/O란?Input/Output이라고 부르며, 프로그램이 외부와 데이터를 주고받는 작업이다.네트워크에서의 I/O : 서버가 클라이언트의 요청을 받아 응답을 돌려주는 과정이다.예시 - 파일 읽기/쓰기 - 네트워크 요청 처리(웹 서버와 클라이언트의 HTTP 요청/응답)위의 이미지는 네트워크 I/O 흐름을 간단하게 표현한 다이어그램이다.클라이언트가 서버에 요청을 보내고, 서버가 응답을 돌려주는 과정이다.   동기(Synchronous) I/O와 비동기(Asynchronous) I/O동기 I/OI/O 작업이 완료될 때까지 대기하는 방식이다.I/O 작업이 끝나기 전까지 다음 코드 실행이 불가능하다.cf ) 동기  - 사전적으로 '동시에 일어난다'는 의미를 가지고 있다.  - 프로그래밍에서의 동기는 작업이 순차적으..

[내배캠] 아웃소싱 프로젝트 후 KPT 회고 작성

Keep(현재 만족하고 있는 부분)소통이 너무 잘 되었고 팀원들끼리 서로 모르는게 있을 경우 너무 잘 알려주셔서 큰 도움이 되었다.커뮤니케이션 활발한 분위기 때문에 회의를 더 활발하게 하고, 의견도 불편함 없이 낼 수 있었다는게 너무 좋았다.아무도 포기 안하고 프로젝트 제출까지 잘 해낸 점과 서로 소통도 많이 하면서 본인의 맡은 역할을 완벽히 다 해낸 점이 만족스럽다. 팀원들 간의 정보 공유 및 대화가 잘 이루어졌다. 부족한 부분은 서로가 채워주는 분위기와 환경이 조성돼서 더할 나위 없었다. 처음 만났을 때, 서로 이미 편안한 분위기로 대화가 가능하여서 마음 편히 서로 질문할 수 있는 분위기가 정말 좋았다.Problem(불편하게 느끼는 부분)프로젝트 시작할때 필수 구현이후 추가로 어디까지 구현할 것인지 ..

[Java] Jwt Filter & 인증/인가 관련된 코드들 정리

JwtUtil 클래스package org.example.authfilter.config;import io.jsonwebtoken.Claims;import io.jsonwebtoken.Jwts;import io.jsonwebtoken.SignatureAlgorithm;import io.jsonwebtoken.security.Keys;import jakarta.annotation.PostConstruct;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;import org.springframework.util.S..