웹 애플리케이션을 개발하면서 REST API를 이용해 다른 서비스를 호출할 때는, 다른 서비스에서는 호출하려는 인스턴스가 있는 곳의 네트워크 정보를 알아야 합니다. → 클라이언트나 API GateWay는 호출할 서비스를 찾는 메커니즘이 필요하고, 이것을 Service Discovery라고 합니다. Spirng Cloud Netflix Eureka가 Service Discovery 역할을 합니다. Spring Eureka Discovery Service Spring Eureka Discovery Service는 마이크로서비스 아키텍처(MSA)에서 핵심적인 역학을 합니다. 마이크로서비스들의 위치를 찾아주는 지도와 같은 역할을 합니다. MSA에서 마이크로서비스들의 위치를 동적으로 찾아오는 역할을 합니다. 클라..
CORS(Cross-Origin Resource Sharing) 란 웹 애플리케이션에서 다른 출처(origin)의 리소스에 접근할 수 있는 규칙을 정의하는 메커니즘입니다. 웹 브라우저는 보안 상의 이유로 스크립트가 동일한 출처에서 실행될 때만 리소스에 접근을 허용합니다. 그러나 이로 인해 다른 출처의 리소스에 접근하는 요청이 차단되는 문제가 발생할 수 있습니다. 이를 해결하기 위해 CORS가 도입되었습니다. 개발하면서 마주치는 CORS 에러 분석하기 Warning! Access to fetch at ‘https://myhompage.com’ from origin ‘http://localhost:3000’ has been blocked by CORS policy: No ‘Access-Control-Allo..
SPRING 프레임워크를 통해 객체지향 설계의 원칙 중 SOLID 원칙이 무엇이며, 어떻게 적용되는지 알아보겠습니다. 1. SRP (Single Responsibility Principle) - 단일 책임 원칙 각 클래스는 하나의 단일한 책임만 가져야 한다. Spring에서는 Controller, Service, Repository 등으로 역할을 명확히 나누어 각각의 클래스가 특정 기능 또는 관심사에만 집중하도록 합니다. SRP를 잘 준수했는지 알 수 있는 기준은 변경입니다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따랐다고 할 수 있습니다. // UserController 클래스는 사용자 관리와 관련된 HTTP 요청을 처리하는 책임만을 가져야 합니다. @Controller public ..
스프링을 이용해 파일 업로드하는 방법에 대해 정리하고자 합니다. 스프링 코드와 html 코드를 작성하면서 설명하겠습니다. Spring Code - 파일 업로드 처리 @Value("${file.path}") private String fileRealPath; public void imageUpload(ImageRequestDTO.ImageUploadDTO request, Long userId) throws IOException{ UUID uuid = UUID.randomUUID(); MultipartFile file = request.getFile(); String uuidFilename = uuid + "_" + file.getOriginalFilename(); Path filePath = Paths.g..