2025/01 3

OAuth2.0

Oauth?Open Authorization의 약자로 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 위한 개방형 표준이다. 쉽게 말해 사용자가 자신의 비밀번호를 공유하지 않고도 다른 애플리케이션이 특정 작업을 수행하도록 허용하는 인증 방식이다.주요 용어 Authorization Code 엑세스 토큰을 얻기 위한 중간 단계로 사용되는 코드 Scope 클라이언트가 리소스에 대하여 어떤 작업을 수행할 수 있는지 정의한 문자열Access Token리소스 서버로부터 리소스 소유자 정보를 얻을 때 사용하는 tokenRefresh Tokenaccess token 만료시 갱신을 위한 tokenOAuth2.0 구성 Resource..

개발/CS 2025.01.21

동시성(synchronized)

틀린 부분이 있다면 피드백 주시면 감사합니다! 프로젝트를 진행하면서 조회수 불일치 문제를 겪은적이 있다. 당시 3주라는 짧은 기간에 기능 구현하기 급급해서 블로그 슥 보고 Redisson을 활용해서 분산락 방식으로 해결한 적이 있다. 프로젝트 끝나고 나서 동시성 문제가 왜 생기는지 알아보면서 멀티 스레드 환경에서 동시성 문제는 꼭 이해하고 넘어가야 한다는걸 느꼈다.  동시성 문제란?여러 작업(스레드, 프로세스, 트랜잭션)이 동시에 같은 데이터나 자원을 수정하려고 하면 문제가 발생할 수 있으며 이를 동시성 문제라고 한다.여기서 다룰 내용은 데이터베이스의 저장된 데이터에 여러 작업이 동시에 수행될 때 의도하지 않은 작업 결과가 발생하는 경우라고 가정한다. 가장 쉬운 예시로 흔히 재고 시스템에서의 동시성 문제..

개발/spring boot 2025.01.04

전략 패턴과 팩토리 메소드 패턴 리팩토링

요구사항회원가입 시 이메일 인증비밀번호 찾기 시 이메일 인증문제점기존 코드의 경우 각 상황별로 API들이 존재하면서 그에 맞게 서비스 로직도 구현되어 있음 즉 똑같은 로직들이 반복 될 수 밖에 없는 구조Before CodeAuthController@Operation(summary = "이메일 인증번호 생성 API")@Parameter(name = "email", example = "teamluckyvickyblurrr@gmail.com")@GetMapping("/email/{email}")public ResponseEntity createEmailAuth(@PathVariable("email") String email) { return ResponseEntity.ok(memberService.cre..

개발/spring boot 2025.01.03