전체 글

깃 허브: https://github.com/yujindonut
Server🧤/SpringBoot

[Springboot] AWS S3 버킷을 이용한 PresignedUrl로 이미지 업로드 구현하기

도입하게 된 과정 사용자가 이미지를 업로드해야하는 상황 발생했다. 프론트 개발자들과 이미지 업로드 구현을 Multipart 자체를 주고 받는 것으로 논의를 했다가, 해당 구현은 문제점이 있었다. 서버 부하가 올 가능성이다. 현재 우리 서버는 ec2 micro2를 사용하고 있으며, 이미 메모리 부족 이슈가 발생하고 있다. 이미지 파일용량 자체가 매우 크기에, 이미지 업로드가 백엔드 서버를 거치게되면 백엔드 서버가 금방 죽게 된다. 해당 문제에 대한 해결 방법으로 Presigned-url을 사용한다고 한다. 기존의 방식 1. 서버가 클라이언트에게 이미지 자체를 받는다. 2. 서버가 보안절차를 거친다.(AWS sdk secret key를 활용해 s3접속) 3. 서버가 버킷에 이미지를 올린다. 이렇게 구현된 이..

Server🧤/Spring

[Spring] Transaction 제대로 이해하기

@Transaction에 대해 공부하다가, propagation 전파 방식, 고립 방식에 대해 더 자세히 알기 위해 기록 Transaction이란? 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야하는 연산들 병행 제어 시 처리되는 작업의 논리적 단위 Transaction은 하나의 흐름으로 하나의 실행이 성공하거나 실패하면 모든 연산들을 동일하게 처리한다. 모든 작업이 성공한다면 완료 작업 상태를 모두 반영하고, 이것을 Commit이라고 한다. 반면, 하나라도 실패하게 되면 모든 사항을 폐기하고, 이것을 Rollback이라고 한다. Spring에서는 Data Access 계층에서도 데이터베이스에 접근하여 데이터를 조작한다. 스프링은 트랜잭션 추상화를 반영했는데, 이 덕분에 특정 기술에 종속되지 ..

Server🧤/SpringSecurity

[SpringSecurity] CustomFilter 생성하기

CustomFilter 프로젝트에 SpringSecurity를 포함시켜 개발하다보면, SpringSecurity에서 기본으로 제공하는 필터 뿐만 아니라 개발자가 원하는 방식대로 동작하는 필터가 필요함. 커스텀 필터를 구현하면 된다. 더보기 커스텀 필터를 구현하기 위해서는 다른 필터와 마찬가지로 Filter Interface를 구현해야 한다. 그러나 Filter Interface를 직접 구현하게 되면 중복실행 문제가 있어서 대부분의 경우에는 OncePerRequestFilter를 구현하기를 권장. CustomFilter 필요한 예시 개인보안노트서비스는 1명의 유저는 1개의 권한을 갖도록 되어있습니다. 권한이 나뉘어져있다보니 테스트하는데 어려움을 느꼈습니다. 그래서 tester 유저인 경우에는 모든 권한을 ..

Server🧤/SpringSecurity

[SpringSecurity] SecurityConfig 알아보기

WebSecurityConfigurerAdapter 개발자가 SpringSecurity 설정을 더 쉽게 구현하도록 구현되어있다. 위를 상속받으면 class에 @EnableWebSecurity 설정해줘야한다. URL Matchers 관련 기능 antMatchers() antMatchers("/signup").permitAll() "/signup" 요청을 모두에게 허용 mvcMatchers() mvcMatchers("/signup").permitAll() "/signup", "/signup/", "/signup.html" 와 같은 유사 signup 요청을 모두에게 허용한다. regexMatchers() 정규표현식으로 매칭한다 requestMatchers 위의 세개 모두 requestMatchers로 이루어져..

yujindonut
Yujindonut