TIL 34

24.11.15 TIL - 윈도우 WSL Ubuntu 저장 경로 이동 방법

오늘 배운 것윈도우 WSL Ubuntu 저장 경로 이동 방법 개요WSL Ubuntu를 설치하면 C:\Users\\AppData\Local\Packages에 WSL Ubuntu의 데이터가 저장이 된다.  현재 Docker Desktop이 원인 모를 오류로 설치가 안되어서 WSL Ubuntu에서 Docker를 실행해서 사용하고 있다.  Docker를 사용하면 용량을 엄청 먹기 때문에 C 드라이브에서 하면 용량이 부족해질 수 있다. 그래서 용량이 널널한 HDD D 드라이브로 WSL Ubuntu을 옮겼다.  그리고 Docker를 사용해보려고 하니 Docker가 너무 느렸다.  심지어 HDD 사용률이 100%가 되었었다.  그래서 다시 WSL Ubuntu를 SSD인 E 드라이브로 옮기기로 했다.  이때 WSL U..

TIL 2024.11.15

24.09.30 TIL - 이미지 모듈 시스템 설계도

오늘 배운 것이미지 모듈 시스템 설계도이미지 모듈 시스템 흐름 이미지 모듈 시스템 설계도 이미지 모듈 시스템 흐름 시스템 큰 흐름은 2가지다. 이미지 업로드 이미지 조회 및 다운로드 이미지 업로드이미지 업로드 요청이미지에서 저장할 데이터 추출 및 가공해 DB에 저장ex: 원본 이미지 이름, storage service에 저장할 이미지 이름, 이미지 생성된 시간....DB에 저장 후 Backend Client에서 업로드한 이미지 구분에 필요한 데이터 반환 (ex: UUID??...)왜냐하면 이미지 업로드 후 URL 반환까지 오래 걸리기 때문원본 이미지 storage service에 저장 후 URL DB에 저장비동기, 배치 처리??어떻게 이미지 업로드 처리할지는 더 공부 후 상세 로직 나올듯원본 이미지 업로..

TIL 2024.10.01

24.09.27 TIL - 이미지 처리 모듈 생각 정리

오늘 배운 것백엔드에서 이미지 처리 시 불편한 점, 고려할 점이미지 모듈에서 있으면 좋을 것 같은 기능 백엔드에서 이미지 처리 시 불편한 점, 고려할 점대용량 이미지 업로드, 다운로드 시 시간이 오래 걸림여러 이미지를 차례로 업로드, 다운로드 하면 오래 걸림업로드, 다운로드 시 중간에 오류 발생하면 전체 취소됨업로드, 다운로드 시 중간에 오류 발생하면 취소된 곳부터 다시 하는 것이 어려움이미지 조회 시 권한 체크를 고려해야 함이미지를 resize해서 여러 size로 저장해야 함이미지 메타데이터 정보를 고려해야 함원본 이미지 이름은 그대로 넣지 않는 것이 좋음확장자를 제한해서 받아야 함이미지 업로드, 다운로드를 동기, 비동기로 처리할 것인지 고려해야 함 이미지 모듈에서 있으면 좋을 것 같은 기능업로드, 다..

TIL 2024.09.30

24.09.26 TIL - 2차 프로젝트 trouble shooting

오늘 배운 것Spring Cloud Gateway와 OpenFeign 사용 시 문제점FeignClient 사용 시 header 문제 개요 MSA에서 인증 인가를 진행할 때 발생한 문제들이였다.  우선 MSA에서 인증 인가를 위와 같이 진행했다. Gateway에서 하는 일들어오는 요청에 Authorization Header에 JWT가 있는지 확인 JWT가 있다면 JWT가 유효한 JWT인지 검증JWT 검증되었다면 JWT에서 추출한 정보로 필요한 정보 얻어옴필요한 정보 = username, roles를 Header에 넣어 요청 뒤로 진행시킴회원가입, 로그인 요청은 JWT 검증 로직 진행하지 않음Auth 서버에서 하는 일회원 가입 진행Spring Security 이용해 인증 진행 이 과정에서 User 서비스에게..

TIL 2024.09.27

24.09.12 TIL - 프로젝트 하면서 배운 팁

오늘 배운 것패키지 구조Service에서 어떤 것 호출하는지application.yml 파일 분리 패키지 구조이전에 프로젝트를 진행할 때 패키지 구조를 각 엔티티별로 나눴다.  각 엔티티 패키지가 있고 해당 패키지 안에 controller, service, repository 패키지 등이 있는 구조였다.  이렇게 나눈 이유는 각자 맡은 도메인별로 개발을 진행했기 때문이였다.  그리고 이전에 다른 프로젝트를 진행할 때 Controller나 Dto 등이 너무 많아지면 한 패키지에서 찾기 어려웠다.  그래서 각 도메인별로 모아두는 것이 보기 편해서 이렇게 진행하였다.  아래 그림처럼 Dto가 너무 많아 찾기가 어려웠다.   그런데 패키지 구조를 도메인 별로 나누는 것보다 계층별로 나누는 것이 좋다고 한다.  ..

TIL 2024.09.13

24.09.11 TIL - MSA Service 공통 처리

오늘 배운 것Dependency 추가BaseEntity 추가  개요MSA 형태의 프로젝트를 진행하는데 각 서비스에서 설정해야 하는 것이 많이 있다.  이때 공통적으로 각 서비스에 설정해야 하는 것들이 있다.  이런 공통적인 것들을 작성해 봤다.  각 서비스에서 추가해야 하는 것들이 어떤 것들이 있는지 알아보자.   Dependency 추가우선 추가한 Dependency들은 다음과 같다. Spring WebLombokSpring SecuritySpring Data JPAPostgreSQL DriverValidationSpring Boot ActuatorZipkinPrometheusEureka Discovery ClientOpenFeign위의 dependency는 Spring Initializer에서 추가하..

TIL 2024.09.12

24.09.10 TIL - 같은 타입 Bean 여러 개

오늘 배운 것같은 타입 Bean이 여러 개라면해결 방법해결 방법 우선 순위 같은 타입 Bean이 여러 개라면같은 타입의 Bean이 여러 개인 상황부터 보자. 먼저 인터페이스가 있는 것이다. public interface Product{ ...} 그리고 이 인터페이스를 구현한 클래스가 2개 있는 것이다. @Componentpublic class KoreaProduct implements Product{ ...} @Componentpublic class JapanProduct implements Product{ ...} 이 구현 클래스들에 @Component를 붙여 Bean으로 각각 등록한 것이다.  두 구현 클래스 모두 Product 타입으로 같은 타입의 클래스를 Bean으로 등록하는 것은 문제가 없다. ..

TIL 2024.09.10

24.09.09 TIL - Bean 수동 등록

오늘 배운 것Bean 자동 등록이란?Bean 수동 등록이란?Bean 수동 등록 방법 Bean 자동 등록이란?@Component를 class에 붙이게 되면 해당 class는 Bean으로 등록이 된다. Component Scan에 의해 @Component가 붙은 class들을 자동으로 scan해 Bean으로 등록해주기 때문이다. 일반적으로는 @Component를 사용해 Bean을 자동 등록하는 것이 좋다. 프로젝트 규모 커질수록 등록할 Bean이 많아지기 때문에 자동 등록이 더 편리하다. 비즈니스 로직과 관련된 클래스들은 수가 많아 @Controller, @Service와 같은 애너테이션들을 사용해서 자동 등록해 관리하면 개발 생산성에 유리하다.  흔히 알고 있는 @Controller, @Service, @..

TIL 2024.09.10

24.09.06 TIL - CSRF

오늘 배운 것CSRF란?CSRF 상황CSRF 공격 예시CSRF 공격 방지 방법 CSRF란?CSRF는 Cross-site request forgery의 약자로 사이트 간 요청 위조라는 의미이다.  웹 애플리케이션의 취약점을 이용해 사용자가 의도하지 않은 요청 보내도록 하는 공격 기법이다.  공격자는 사용자가 인증된 상태를 악용해 사용자가 원하지 않는 행동 수행하게 만든다.  공격자가 인증된 브라우저에 저장된 쿠키의 세션 정보를 활용해 웹 서버에 사용자가 의도하지 않은 요청 전달하는 것이다. CSRF 공격은 생성된 요청이 사용자의 동의를 받았는지 확인할 수 없는 웹 애플리케이션의 CSRF 취약점을 이용한다.  공격자의 요청이 사용자의 요청인 것처럼 속이는 공격 방식이다.   CSRF는 사용자가 인증한 세션에..

TIL 2024.09.08

24.09.05 TIL - Effective Java Item 63

오늘 배운 것Effective Java Item 636️⃣3️⃣ Item 63 : 문자열 연결은 느리니 주의하라📌 목차문자열 연결 방법 1문자열 연결 방법 2성능 차이1️⃣ 문자열 연결 방법 1문자열을 연결하는 방법에는 문자열 연결 연산자 (+)가 있다. 이것은 여러 문자열을 하나로 합쳐주는 편리한 수단이다. String firstName = "minjae";String lastName = "kim";String name = firstName + lastName;하지만 문자열 연결 연산자는 아래와 같은 경우에 사용해야 한다. 한 줄짜리 출력 값작고 크기가 고정된 객체의 문자열왜냐하면 문자열 연결 연산자를 이용해 여러 문자열을 연결하면 성능 저하가 생기기 때문이다. 문자열은 불변이라 두 문자열을 연결할 ..

TIL 2024.09.08