1. Deep Learning(딥러닝)이란? [ Deep Learning ] Deep Learning은 autonomous, self-teaching system으로 어떤 pattern을 찾기 위한 알고리즘을 학습시키기 위해 존재하는 데이터를 사용한다. 이미지에서 고양이를 찾기 위해 Deep Learning을 사용할 수 있다. 고양이가 있는 이미지와 없는 수백만장의 이미지를 학습 데이터로 사용하다보면 edges, shapes, colors 등과 같은 이미지 데이터를 사용하고 분류하는 패턴을 정립하게 된다. 이러한 패턴들은 학습데이터를 통해 생성한 Model을 기반으로 새로운 이미지를 보고 고양이의 포함여부를 알준다. Deep Learning 알고리즘은 인간의 뇌의 뉴런구조를 흉내난 인공 신경망을 사용한다..
현대 웹서비스에서는 토큰을 사용하여 사용자들의 인증 작업을 처리하는 것이 가장 좋은 방법이다. 이번에는 토큰 기반의 인증 시스템에서 주로 사용하는 JWT(Json Web Token)에 대해 SpringBoot와 Spring Security 기반으로 직접 제작해보도록 하겠다. 1. Spring Security 처리 과정 Spring Security 아키텍쳐는 위와 같으며 각각의 처리 과정에 대해서 자세히 알아보도록 하자.(아래에서 설명하는 내용은 Json Web Token을 활용한 Spring Security의 구현 방식으로, Session과 Token 기반의 차이점에 대해서는 여기를 참고하시고, Form을 활용한 Session기반의 구현 방식이 궁금하시다면 여기를 참고해주세요!) [ 0. 사전 세팅 ] ..
현대 웹서비스에서는 토큰을 사용하여 사용자들의 인증 작업을 처리하는 것이 가장 좋은 방법이다. 이번에는 토큰 기반의 인증 시스템에서 주로 사용하는 JWT(Json Web Token)에 대해 알아보도록 하겠다. 1. JWT(Json Web Token)란? [ JWT 개념 ] JWT(Json Web Token)란 Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token이다. JWT는 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달한다. 주로 회원 인증이나 정보 전달에 사용되는 JWT는 아래의 로직을 따라서 처리된다. 애플리케이션이 실행될 때, JWT를 static 변수와 로컬 스토리지에 저장하게 된다. static 변수에 저장되는 이유는..
기존의 시스템에서는 서버 기반의 인증방식을 사용하였다. 하지만 시스템의 규모가 커짐에 따라 서버 기반의 인증 방식은 한계점을 보이기 시작하였고, 토큰 기반의 인증 방식이 등장하게 되었다. 현대 웹서비스에서 API를 이용한 웹서비스를 개발할 때, 토큰을 사용하여 사용자들의 인증 작업을 처리하는 것이 가장 좋은 방법이다. 이번에는 서버 기반의 인증 시스템과 토큰 기반의 인증 시스템의 차이점을 알아보고 토큰 기반 인증 시스템의 장점을 알아보도록 하겠다. 1. 서버(세션) 기반의 인증 시스템 [ 서버(세션) 기반 인증 시스템이란? ] 기존의 인증 시스템은 서버 기반의 인증 방식으로, 서버 측에서 사용자들의 정보를 기억하고 있어야 한다. 사용자들의 정보를 기억하기 위해서는 세션을 유지해야 하는데, 메모리나 디스크..
오늘은 단일 쿼리로는 해결할 수 없는 로직을 처리할 때 필요한 개념인 트랜잭션에 대해 알아보고, Spring에서 어떻게 활용하는지 확인해보도록 하겠습니다. 1. 동시성 제어(Concurrency Control) [ 동시성 제어(Concurrency Control)이란? ] 동시성 제어란 DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간섭 작용에서 Database를 보호하는 것을 의미한다. 일반적으로 동시성을 허용하면 일관성이 낮아지게 되며 이를 그래프로 나타내면 아래와 같다. 다수 사용자의 동시 접속을 위해 DBMS는 동시성 제어를 할 수 있도록 Lock 기능과 SET TRANSACTION 명령어를 이용해 트랜잭션의 격리성 수준을 조정할 수 있는 기능도 제공한다. 이렇게 동시성을 ..