본문 바로가기

Skill Stacks132

AWS S3 스프링에 적용하기 - 1 AWS S3란?- Amazon Simple Storage Service로 객체 스토리지 서비스이다.- 업계 최고의 확장성, 데이터 가용성 및 보안과 성능을 제공한다.- 사용자가 원하는 만큼의 데이터를 저장할 수 있기에, 다양한 타입의 데이터를 저장할 수 있다. AWS S3를 프로젝트에서 사용데이터를 S3에 저장할 때에, 해당 데이터에 대한 S3 URI를 제공한다.예시) s3://master-car-application/de8265e3b2984913bbe01cd53733317f_1607146775.jpg위의 뒷부분은 객체의 key라고 볼 수 있다.해당 key를 통해 프로젝트에서 S3에 저장된 이미지를 찾을 수 있다.기본 로직 (DB에 저장)클라이언트에서 MultipartFile을 통해 파일을 가지고 온다해.. 2024. 5. 27.
AWS S3 스프링에 적용하기 - 2 AWS S3란?- Amazon Simple Storage Service로 객체 스토리지 서비스이다.- 업계 최고의 확장성, 데이터 가용성 및 보안과 성능을 제공한다.- 사용자가 원하는 만큼의 데이터를 저장할 수 있기에, 다양한 타입의 데이터를 저장할 수 있다. AWS S3를 프로젝트에서 사용데이터를 S3에 저장할 때에, 해당 데이터에 대한 S3 URI를 제공한다.예시) s3://master-car-application/de8265e3b2984913bbe01cd53733317f_1607146775.jpg위의 뒷부분은 객체의 key라고 볼 수 있다.해당 key를 통해 프로젝트에서 S3에 저장된 이미지를 찾을 수 있다.기본 로직 (DB에 저장)클라이언트에서 MultipartFile을 통해 파일을 가지고 온다해.. 2024. 5. 27.
스프링 회원기능 스프링 회원기능 회원기능을 구현하는 방법은 크게 Session과 Token 방법이 있다 Session 토큰 방식 (JWT) 로그인 구현 클라이언트가 로그인을 하게 되면, 서버에서는 클라이언트에게 권한을 부여한다 여기서 권한, 입장권 같은 내용을 가지고 서버에서 권한이 필요한 기능이면, 해당 입장권을 통해 그 기능을 클라이언트가 사용할 수 있게 된다 Session vs Token 세션은 따로 메모리나 DB에 로그인한 내용을 저장한다 즉 클라이언트가 요청을 보낼 때 마다, DB를 계속 확인을 해야 한다 유저가 늘어나면 서버에 부하가 일어날 수 있다 토큰은 세션보다 입장권 내용에 더 많은 내용들이 들어가 있다 서버에서는 토큰만 확인을 하면 된다 JWT (Json Web Token) Header 토큰의 타입 (.. 2023. 11. 17.
[Java] 오늘 배운 것 20231025 [Java] 오늘 배운 것 20231025 JWT 토큰 @PostMapping("/login") public TokenDto login( @RequestBody @Valid MemberLogin.Request request ) { MemberLogin.Response loginInfo = memberServiceImpl.login(request); return "토큰이 생성되었습니다 : Bearer " + tokenProvider.generateToken(loginInfo.getEmail(), loginInfo.getRole()); } 토큰을 생성하고, 바로 리턴을 했다 이렇게 하면 나중에 유저가 API를 사용할 때에 토큰을 계속 복사, 붙여넣기를 해야하는 불편함이 있다 @PostMapping("/log.. 2023. 10. 25.
[Java] Nginx [Java] Nginx NginX 굉장히 가벼운 웹 서버고, 많은 요청이 들어와도 좋은 성능을 보이고 있다 Apache vs NginX Apache 요청이 아파치 웹서버로 들어올 때마다, 프로세스를 생성을 하여, 프로세스가 하나의 요청을 처리한다 요청이 들어올 때마다 프로세스를 생성하여 오버해드가 발생할 수 있다 비교적 무겁고, 성능이 NginX에 비해 떨어진다 NginX master 또는 worker 프로세스를 configuration에 따라서 미리 생성해 놓는다 Task Queue에다가 요청을 쌓아두고, 한 개의 프로세스가 여러 개의 요청을 처리한다 Task Queue에다가 요청을 쌓아두면서, 비동기 처리도 가능해진다 미리 프로세스를 적게 두면 Task Queue 쌓이는 요청이 많아 응답이 느려진다 .. 2023. 9. 14.
[Java] Kafka [Java] Kafka Kafka? 아파치 재단에서 운영하는 플랫폼이다 Kafka를 이해하기 위해서는 Message Oriented Middleware를 알아야 한다 Middleware는 시스템과 컴포넌트 사이에 있는 중간자 역할을 해준다 두 시스템이 너무 강하게 결합되어 있으면, 서로 의존성이 높게 된다 A와 B가 너무 강하게 결합되어 있으면, A에서 에러가 났을때 B도 영향을 받는다 즉 의존성이 낮은게 더 좋고, 이것을 도와주는 것이 Middleware다 즉 Message Oriented Middleware는, message를 기반으로 중간자 역할을 해주는 것이다 이 Message Oriented Middleware 하단에 Message Queue가 있는 것 그리고 Message Queue를 사용하는.. 2023. 9. 13.
[Java] Linux [Java] Linux 서버에 적합하고, 무료 Open Source 소프트웨어다 Linus Torvalds 라는 사람이 이 Linux OS를 만들었다 Linux는 Linux Kernel (리눅스 커널) 자체를 의미한다 커널은 CPU나 RAM을 포함한 컴퓨터 자원을 관리하고 할당하는 중요한 코어 소프트웨어다 이 Linux를 기반으로 커스터마이즈 된 OS를 만들 수 있다 Linux 계열에는 RedHat, Ubuntu, Debian이 있다 리눅스 커널은 아래와 같은 디렉토리 구조를 가지고 있다 Docker를 이용해서 리눅스 사용하기 Linux 명령어 상대 경로 vs 절대 경로 상대 경로 : 현재 파일의 위치에서의 경로 절대 경로 : 최상위 위치에서의 경 ./ 현재 위치 ../ 현재 위치에서 한단계 상단 위치 .. 2023. 9. 12.
[Java] Docker [Java] Docker 서비스 배포란? 코드로 구현하고, 결과는 콘솔 또는 로컬 호스트를 통해 결과를 확인한다 즉 다른 사용자들을 위한 실제 서비스가 되기에는 부족하다 즉 이 코드들이 다른 사용자들이 이용할 수 있도록 배포가 되어야 한다! 다른 사람들이 개발자들이 만든 코드를 사용할 수 있게 만드는 것이 서비스 배포다 개발자들이 만든 코드를 실행 가능한 형태로 서버 컴퓨터로 옮긴다 그럼 사용자들은 서버 컴퓨터를 통해, 개발자들이 만든 코드를 사용하게 된다 온프레미스 (On-Premise) : 자체 서버가 있는 경우 비용이 굉장히 많이 든다 (설치 비용 + 유지 비용 + 인력까지) 클라우드 : 다른 제 3자가 만들어 놓은 서버를 원격으로 빌려서 사용하는 것이다 예) AWS 대어료를 클라우드 사용자 입장에.. 2023. 9. 11.
스프링 캐시 스프링 캐시 캐시 임시로 데이터를 저장하는 공간이다 인메모리가 될 수 있고, 서버에 캐시를 만들 수 있다 빠른 처리 속도로 성능을 향상할 수 있다 이미 조회한 데이터를 임시로 저장하고, 다음에 같은 데이터에 접근할 때, 더 빠르게 데이터를 조회할 수 있도록 한다 예) 어제 배웠던 내용을, 저번 주에 배웠던 내용보다 더 빠르게 기억할 수 있다 캐시를 정할 때, 얼마나 요청이 많이 들어오는지 확인해보는 방법도 있다 유저가 요청을 할 때마다, 데이터를 생성해야 하나? 미리 데이터를 생성해 놓고, 유저들이 그 데이터를 조회하는게 더 빠르다 캐시를 삭제해야 하는 이유 업데이트가 될 시에, 캐시의 데이터도 없어야 한다 캐시는 무한정 메모리가 아니다 (한번씩 비워줘야 한다) 캐시에는 TTL이 있다 Time To Li.. 2023. 9. 5.