본문 바로가기

전체 글

(81)
[NHN Academy] NHN Academy 인증 과정 NHN Academy Java 백엔드 광주 1기 https://nhnacademy.github.io/ 기간: 2022.07 ~ 2023.03 지난 약 7개월간의 과정을 마치고 인증과정 수료를 받았다. (Advanced Java과정, Java Backend과정, 인증과정) NHN Academy 과정 중의 Github 백엔드 과정 개인 Github: https://github.com/NHN-Academy-GwangJu-1st 프로젝트 Github: https://github.com/itbook-store 인증을 목표로 달려왔지만 마지막 테스트 시험때 문제로 인하여 시험 결과가 좋지 않아 수료를 받게 되었다. 하지만, 이에 대해 최선을 다했기에 후회는 없고 미련을 갖고 있기에는 시간낭비라고 생각하고 떨쳐내고자..
[NHN Academy] NHN Academy 인증 과정 프로젝트 발표 장바구니 발표 NHN Academy 인증과정 프로젝트 발표를 팀에서 대표로 ‘장바구니’ 라는 주제를 맡아 발표하였다. 나에게 되게 뜻깊고 좋은 경험이었기에 그에 대한 내용을 적어보려 한다. 해당 글은 노션을 통해 작성하였습니다.노션 링크 장바구니 구현 과정 1차 설계 && 구현 처음 장바구니에대해 구현 목표는 MySQL을 사용하여 구현 하는 것이었다. 그 이유로는 회원의 장바구니 데이터를 영구적으로 저장하고자 하였다. 팀원들과 ERD 설계와 구현에 대한 이야기를 나누었을 때 무신사, 쿠팡 등 실제 사용하고있는 쇼핑몰을 예시로 들어 회원의 장바구니가 영구적으로 저장되었으면 한다고 이야기를 나누었고, 나 또한 그에 맞는 구현을 하고 싶었다. 또한, 어느 한 인터넷 기사에서 사용자의 소비 패턴을 분석한 글을 ..
[DataSource] DataSource 설정 정리 해당 글은 Naver D2 를 읽고 참고하여 정리해 놓은 것입니다. initialSize: BasicDataSource 클래스 생성 후 최초로 getConnection() 메서드를 호출할 때 커넥션 풀에 채워 넣을 커넥션 개수 maxActive: 동시에 사용할 수 있는 최대 커넥션 개수(기본값: 8) maxIdle: 커넥션 풀에 반납할 때 최대로 유지될 수 있는 커넥션 개수(기본값: 8) minIdle: 최소한으로 유지할 커넥션 개수(기본값: 0) maxActive >= initialSize maxActive = 10이고 initialSize = 20이라고 가정하면 최초에 커넥션을 생성할 때 initialSize 값이 최대 커넥션 개수인 maxActive 값보다 커서 논리적으로 오류가 있는 설정이다. m..
[Spring Security] Spring Security OAuth2.0 Flow OAuth 2.0 (OpenID Authentication) OAuth (OpenID Authentication) 란, 타사의 사이트에 대한 접근 권한을 얻고 그 권한을 이용하여 개발할 수 있도록 도와주는 프레임워크다. 구글, 카카오, 네이버 등과 같은 사이트에서 로그인을 하면 직접 구현한 사이트에서도 로그인 인증을 받을 수 있도록 되는 구조다. 물론 구글에서 로그인을 했다고 해서, 개발한 웹 사이트에 구글 ID와 PW를 그대로 전달해주면 안되므로, Access Token을 발급 받고, 그 토큰을 기반으로 원하는 기능을 구현해야 한다. Access Token은 로그인을 하지 않고 인증을 할 수 있도록 해주는 인증 토큰 정도의 개념이다. 유저 A가 직접 개발한 웹 사이트 X에서 자신의 구글 캘린더에 대한 ..
[Redis] WRONGTYPE Operation against a key holding the wrong kind of value [Redis] WRONGTYPE Operation against a key holding the wrong kind of value 레디스에 데이터를 집어 넣고 데이터를 조회하려 했다. opsForSet을 통해 Set을 이용하여 데이터를 관리하려고 했다. 그런데, 위와 같은 에러가 뜨면서 조회가 되질 않았다. 찾아보니, 레디스에도 데이터 타입이 존재하고, Set의 경우 smembers key 형식으로 가져올 수 있다고 한다. Redis support 5 types of data types. You need to know what type of value that key maps to, as for each data type, the command to retrieve it is different. Her..
[Spring Security] SessionManagement Spring Security SessionManagement 생성된 계정으로 서버로부터 인증을 받게 되면 서버에 하나의 세션이 생성한다. 다른 브라우저, 또는 다른 PC에서 같은 계정으로 로그인을 할 경우 이전에 서버에 만들어진 세션을 같이 공유하는 것이 아닌 새로운 세션을 생성하여 사용하게 된다. 동시 세션 관리 @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .sessionManagement() .maximumSessions(1) .maxSessionsPreventsLogin(true) .expiredUrl("/expiredUrl") return http.build(); } ma..
[JWT] JWT 토큰이란? 토큰 기반 인증 방식 Cookie 인증 방식 쿠키는 Key-Value 형식의 문자열 덩어리이다. 클라이언트가 어떠한 웹사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버를 통해 클라이언트의 브라우저에 설치되는 작은 기록 정보 파일이다. 각 사용자마다의 브라우저에 정보를 저장하니 고유 정보 식별이 가능한 것이다. Cookie 방식의 단점 가장 큰 단점은 보안에 취약하다. 요청 시 쿠키의 값을 그대로 보내기 때문에 유출 및 조작 당할 위험이 존재한다. 쿠키에는 용량 제한이 있어 많은 정보를 담을 수 없다. 웹 브라우저마다 쿠키에 대한 지원 형태가 다르기 때문에 브라우저간 공유가 불가능하다. 쿠키의 사이즈가 커질수록 네트워크에 부하가 심해진다. Session 인증 방식 쿠키의 보안적인 이슈 때문에 클라이언트의 민감한 인증 정보..
[Architecture] 모놀리식 아키텍처와 마이크로서비스 아키텍처란? 모놀리식 아키텍처 장점 하나의 WAS(Web Application Server)에서 모든 기능을 처리하도록 구성한다. 간단한 구조 덕분에 시스템 운영과 개발이 편리한 장점이 있다, 네트워크로 인한 지연이나 데이터 유실을 걱정할 필요가 없다. 시스템 장애나 기능에 버그가 있다면 개발자는 하나의 애플리케이션에서 원인을 파악하면 된다. 여러 클래스에서 발생하는 로그를 하나의 파일에 기록할 수 있기 때문에 쉽게 원인을 파악할 수 있다. 데이터 저장소가 하나이므로 RDB의 트랜잭션 기능을 쉽게 사용 할 수 있다. 모놀리식 아키텍처 단점 하나의 애플리케이션 서버에서 여러 기능을 제공하므로 서비스 기능이 많아지면 더욱 복잡해질 수 있다, 성질이 다른 두 코드가 하나의 파일에 존재하기도 한다. 서버 기능과 크라이언트 ..

728x90
반응형