· 웹
지난번 MSA 구현 이후 이해가 안되던 부분에 대해서 알게된 점을 포스팅 합니다. 이전 포스트 : https://g-db.tistory.com/9 원인, 문제 이전의 마이크로 서비스를 구현했을 때 Kafka를 이용하여 서비스 로직을 수행하는 서버들을 컨슈머로 구동하게 했고 api gateway를 spring boot로 구현하여 토픽에 메시지를 넣어 요청이 처리되면 redis로 응답을 받아오는 로직을 수행하도록 구현하였습니다. 분명히 비동기 처리를 하기 위해 카프카를 사용해서 이벤트를 토픽으로 날리는 선택을 했지만 실제로는 동기적인 처리를 진행하는 HTTP에 종속되어 로직을 수행하도록 기능을 작동시킨 것이었습니다. 이렇게 한 이유는 기존의 request-response에 얽매여서 비동기로의 확장을 똑바로 ..
· 웹
원인 서비스 계층의 테스트를 작성하면서 assertJ로 테스트를 작성했다. Service계층은 DAO에 종속되어 메소드를 사용하기 때문에 DAO를 통해서 새로 만들어진 객체를 삭제해주어야 했고 DAO를 통해서 작업을 수행한다. 따라서 Service의 단위 테스트는 DAO에 종속되어 있었고 DAO 빈을 가져와서 일일히 값을 삭제하면서 테스트를 진행했다. 이런 불편한 점을 제거하고 단위 테스트가 DAO에 종속되지 않도록 만들기 위해서 Mockito 프레임워크를 적용해서 DAO에 대한 Mock 객체를 만들어 사용했다. @SpringBootTest public class AuthServiceTest { private UserDTO user1; private UserDTO user2; private UserDTO..
· 웹
Spring Cloud Gateway에서 인증, 인가처리를 하는 Filter를 만들어보겠습니다. 저는 먼저 MSA구조에서 Auth, User 서비스를 담당하는 서버를 미리 만들어 로그인, 회원가입을 처리하고 로그인처리 후 발급한 JWT 토큰을 Gateway에서 인증 및 인가처리를 해주기 위해서 만들게 되었습니다. Auth Service JWT 발급 public String createToken(String userUid, List roles){ logger.info("[JwtTokenProvider] createToken, 토큰 생성"); // Jwt token의 값을 넣기 위한 claims, sub 속성(제목)에 유저의 ID 삽입 Claims claims = Jwts.claims().setSubject..
· 웹
에러 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class java.io.FileDescriptor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class java.io.F..
· 웹
Spring Cloud Eureka 오늘은 스프링 클라우드 유레카 서버를 생성하고 설정하는 방법, 유레카 클라이언트가 연결설정 및 서버 인스턴스 정보를 받아오는 방법에 대해서 설명해보겠습니다. 유레카는 서버의 인스턴스 정보(ip, port, 상태 등..)를 담아두고 동적으로 관리하는 서버로써 MSA 환경에 특화되어 관리자 없이도 쉽게 서비스를 확장, 축소하고 그에따른 인스턴스를 자동으로 관리할 수 있습니다. 또한 서버의 주소를 여러 전략을 통하여 로드밸런싱 작업도 수행할 수 있습니다. 즉, 유레카를 사용하여 코드를 개발하면 관리자는 서버가 확장될 때마다 코드를 수정할 필요가 없고 동적으로 서버가 등록되어 관리되게 됩니다. Eureka 서버 생성 dependency ext { set('springCloud..
· 웹
JWT를 모르시는 분들은 지난 포스트 ()를 간단하게 읽고 와주세요! JWT는 Header, Payload, Signature 3가지로 나뉩니다. Header는 토큰의 타입과 Signature에 사용된 서명 알고리즘을 정의합니다. Payload는 Registered, Public, Private 3가지 클레임으로 나뉩니다. 각각은 여러 정보들을 담고 있습니다. Signature는 Base64Url로 인코딩된 헤더, 페이로드를 합쳐 SecretKey로 서명된 값을 저장합니다. 이번 포스트에서는 Spring Boot에서 로그인을 위한 JWT를 발급하는 방법에 대해서 살펴보도록 하겠습니다. Dependency 저는 https://github.com/jwtk/jjwt를 사용하여 JWT를 발급하였습니다. MAVE..
· 웹
JWT란 Json Web Token의 약자로 당사자간의 정보를 Json 형태로 전송하기 위한 표준입니다. (RFC7519) JWT는 서명을 이용하여 신뢰할 수 있는 정보입니다. 보통 HMAC, RSA, ECDSA(타원곡선 암호)를 사용하여 서명합니다. 저는 보통 JWT를 이용하여 로그인 후 토큰을 발급하는 용도로 사용하였습니다. 따라서 무결성만 제공된다면 해당 사용자에게 맞는 권한의 서비스를 제공해줄 수 있습니다. Json Web Token 구조 JWT는 Header, Payload, Signature3가지 정보가 ‘ . ’으로 나누어져 있습니다. xxxx.yyyy.zzzz Header 헤더에는 보통 토큰의 유형, 서명에 사용되는 서명 알고리즘(RSA, HMAC SHA256 등..)의 두 부분으로 구성됩..
· 웹
2023 / 09 / 16 해커톤을 진행하면서 이미지를 저장할 일이 있어서 이미지를 저장하는 방법을 알아보고 개발했습니다. 어플리케이션 구조는 React - Spring Boot 였고 이번 포스트에서는 Http로 부터 이미지를 받아오는 방법, Spring jpa에 이미지를 저장하는 방법, 이미지와 Json 데이터를 같이 받아오는 방법을 알아보겠습니다. 주관적인 방식이 들어간 점 양해바랍니다. 프로젝트에서 Review에 대한 정보와 함께 이미지를 받아와야하는 상황이 발생했다. 자바에서 이미지는 MultipartFile 이라는 인터페이스로 받아올 수 있다. @PostMapping() public ResponseEntity createReview( @RequestPart("body") ReviewDTO rev..
창e
'웹' 카테고리의 글 목록