OS: Ubuntu Linuxide: Spring boot - Intellij / React - VSCodedatabase: mariadbSpring Cloud Config Server - 8888Eureka Discovery Server - 8761Spring API
Spring Cloud Netflix Eureka는 MicroService에서 구동이 되는 여러 서비스들을 Eureka서버에 등록하게 하여 이 서비스들을 관리해주는 서버입니다. 그림처럼 여러 서비스들이 유레카 서버에 묶이게 됩니다. 예를 들어 클라이언트에서 /auth-
Spring Cloud Gateway는 하나의 api gateway server를 만들어 클라이언트의 요청을 해당 게이트웨이 서버로 보내고 조건에 따라 이 요청에 해당하는 서비스에 요청을 전달해주는 역할을 합니다.Rental Application에서는 이 api gat
#1 Auth-Service Auth-Service는 유저 관련 로직을 처리하는 서비스입니다. 예를 들면 회원가입, 로그인, 유저 정보 확인 등이 있겠죠. 또한 Spring-Security를 해당 서비스에서 구현하고, API-Gateway의 필터를 이용하여 인증, 인
#1 vo객체 vo는 read-only의 특성을 가지는 객체입니다. 이 특성을 토대로 RequestRegister, RequestLogin vo들을 작성해보도록 하겠습니다. RequestRegister RequestLogin ResponseUser Respon
#1 Spring Security Spring Security는 Authentication(인증), Authorization(권한)에 대한 기능을 제공하는 프레임워크입니다. Spring Security를 사용하지 않는다면 커스텀으로 세션, redirect 등 보안에
저번 포스트까지 로그인 처리에 대한 결과까지 확인을 했고 이번에는 jwt를 이용한 토큰 발급을 다뤄보도록 하겠습니다. jwt 토큰 발급 이전에 수정하고 추가할 부분이 있어서 먼저 구현을 진행하도록 하겠습니다.AuthenticationFilter.successfulAut
Spring Cloud Config는 서버, 클라이언트 구성에 필요한 설정 정보 (application.yml)를 외부 시스템에서 관리합니다. 외부 시스템 즉, 하나의 중앙화된 저장소에서 설정 정보를 관리 가능하며 배포 파이프라인을 통해 dev, uat, prod 환경
#1 apigateway-service와 Cloud Server 연동 이전 포스트와 같은 방식으로 apigateway-service와 Cloud Server를 연동해주도록 하겠습니다. apigateway-service와 Cloud Server를 연동해주는 이유는 a
이전 포스트에서는 actuator를 통한 refresh를 사용해보았습니다. refresh는 microservice의 상태값을 재구동 없이 갱신을 해준다는 측면에서 상당히 편리한 기능이었지만 microservice들이 10개 20개와 같이 수적으로 많아진다면 일일이 re
#1 암호화 간단하게 암호화를 알아보면 암호화는 보통 대칭키, 비대칭키를 이용해 암호화를 합니다. 대칭키의 경우 같은 비밀키를 server, client가 공유하여 송신자가 이 비밀키를 이용해 평문을 암호화하고 수신자는 같은 비밀키를 이용해 복호화를 진행합니다. 이런
post-service는 유저가 게시물을 올리기 위한 서비스입니다. 물건을 대여하거나 대여를 요청하기 위한 공간이죠. 대략적인 시나리오를 한번 보겠습니다.1) 물건대여 - 빌려줄게요 1-1) 유저-a는 z라는 물건을 대여해주기 위해 빌려줄게요라는 게시글 타입으로 게시글
#1 service 이어서 서비스에 대한 부분을 구현하도록 하겠습니다. PostService PostServiceImpl PostRepository 여기까지 post를 위한 controller ~ repository까지 구현 부분이었습니다. 하지만 post는 c
#1 post-service test 우선 image 관련한 코드는 잠시 주석처리를 하고, 추후에 프론트엔드를 구현하면서 image도 사용할 수 있게 만들어 보겠습니다. Controller, Service에서 이미지 관련된 코드들은 주석처리해주시면 되겠습니다. 저는
rental-service는 post-service에서 대여에 관한 요청이 들어왔을 때 대여를 생성해주는 클래스입니다. 이 외에도 대여 리스트 조회, 대여 상세 조회에 관한 기능도 수행할 수 있죠. 대략적인 시나리오를 보겠습니다.1) 대여 생성 1-1) 게시글 작
RentalService, RentalRepository를 구현하도록 하겠습니다.RentalServiceRentalServiceImplRentalRepository코드 자체는 post-service와 비슷하고 메서드에 대한 설명은 이전 포스트에 RentalControl
#1 시나리오 kafka를 적용하기에 앞서 대여 생성에 관한 시나리오를 살펴보도록 하겠습니다. .png) 대여 생성 : post-service를 이용하여 유저는 대여를 요청합니다. 그리고 post-service kafka 메시지 브로커로 대여에 대한 요청메시지를
Feign Client는 Netflix에서 개발된 REST Call을 추상화한 라이브러리입니다. 사용방법은 호출하려는 Http Endpoint에 대한 Interface를 생성해서 @FeignClient라는 어노테이션으로 사용할 수 있죠. 예를 들자면 유저 서비스에서 포
FeignClient의 정보를 확인하는 로그application.yml에 다음의 설정을 추가하도록 하겠습니다.auth-service - application.ymlFeignClient 클래스들이 있는 패키지의 logger수준을 DEBUG 수준으로 맞춘 것입니다. 그리고
#1 message-service 유저 간 대여를 위해 대화를 해야할 경우 게시글의 댓글을 이용할 수 있고, 메시지 서비스를 이용할 수 있습니다. 그래서 이번 포스트는 유저 간의 대화를 위한 메시지 서비스를 구현해보도록 하겠습니다. .png) 1) sender:
#1 React 애플리케이션 생성 React 설치 잘 정리된 url 링크를 걸어 두겠습니다. https://online.codingapple.com/unit/react1-install-create-react-app-npx/ 제 환경 기준 /home/biuea/Des
#1 PostPage PostPage는 게시글 담당 페이지입니다. 게시글 리스트를 볼 수 있으며, 게시글을 작성할 수 있도록 버튼이 있는 페이지입니다. 대략적으로
redux를 적용하기 전에 LoginPage와 RegisterPage를 작성하도록 하겠습니다.공통적으로 사용할 button, input을 작성하도록 하겠습니다./src/components/common/Input.jsconst Input = props => <St
redux-saga는 액션들을 모니터링하고, 특정 액션이 발생시 이 액션을 처리하기 위한 작업을 수행합니다. 우선 redux-saga, axios를 설치하도록 하겠습니다. axios는 API를 연동하기 위한 라이브러리입니다../src/lib/api/client.js프록
#1 로그인 회원가입에 이어서 로그인에 관한 기능을 완성하도록 하겠습니다. 우선 redux모듈에 header를 저장할 수 있게 store에 관련 state를 만들도록 하겠습니다. 로그인 시 res를 이용하여 localStorage에 저장하는 방법을 사용해봤지만 pa
#1 auth-service Entity 로그인, 회원가입시 입력 사항에 관한 에러(이메일 중복, 닉네임 중복 등)를 유저 화면에서 띄우도록 하겠습니다. 그러기 전에 우선 auth-service의 UserEntity의 정보를 확인하도록 하겠습니다. UserEntit
게시글을 불러오는 REST 요청을 구현하기 전에 게시글을 보여주고, 쓸 수 있는 페이지들에 대한 디자인을 작업하도록 하겠습니다.대략적으로 다음의 사진처럼 작업을 진행하겠습니다../src/pages/PostPage.js우선 HeaderTemplate을 PostPage에
다음의 그림을 바탕으로 글쓰기를 만들어보도록 하겠습니다.게시글 쓰기는 type에 따라 게시글의 상태가 변화합니다. 따라서 리덕스를 적용하면서 type의 state에 따라 게시글이 변화할 수 있도록 모듈을 먼저 만들도록 하겠습니다.우선 api요청을 만들어보도록 하겠습니다
게시글 상세 페이지를 만들어보도록 하겠습니다.빌려주세요 타입과 빌려줄게요 타입에 관한 게시글 뷰어 두 가지 형태를 구현하겠습니다../src/modules/post.js이전에 만들었던 posts 모듈과 비슷한 구조입니다. 다만 다른 액션이 있다면 unloadPost인데요
#1 게시글 리스트 게시글 리스트 ui를 마무리하도록 하겠습니다. 우선 더미데이터를 활용해서 게시글을 불러왔을 때 게시판이 어떻게 되는지 확인해보도록 하겠습니다. ./src/components/posts/PostListTemplate.js ./src/compone
이미지 로드 문제 게시글을 작성하면서 업로드한 이미지는 전부 post-service의 upload파일에 저장이 되게끔 진행을 했습니다. 하지만 진행하면서 게시글 이미지를 불러오려고 시도를 해봤지만 client-app에서 벗어난 파일들은 불러올 수 없다고 결론을 내렸고
유저 간 대여를 위해선 의사소통이 필요합니다. 물론 게시글내의 존재하는 댓글 시스템을 이용할 수도 있겠지만, 좀 더 긴밀한 대화가 필요한 경우가 있겠죠. 그래서 채팅창을 만들어 유저 간의 대화를 용이하게 하도록 해보겠습니다.우선 채팅창 디자인을 만들고, 이를 바탕으로
#1 메시지 흐름 메시지 전송, 리스트 읽기 과정에서 sender, receiver에 혼동이 있을 수 있으므로 정리를 하고 모듈을 작성하도록 하겠습니다. 메시지는 sender, receiver를 기준으로 userList, chatList를 받아오도록 합니다. 여기서
http://kafka.apache.org 홈페이지에서 카프카를 설치하도록 하겠습니다.scala 2.13에 있는 tgz압축 파일 url에 들어가 http로 다운받습니다.kafka 디렉토리를 생성하고 압축파일을 옮기고, 다음의 명령어로 압축을 해제하겠습니다.ka
#1 rental-service는 대여를 담당하는 서비스입니다. 게시글을 통해 상품을 확인하고 마음에 드는 상품이 존재한다면 댓글, 채팅 서비스를 이용해 유저 간 대화를 나누고, 게시글의 대여 버튼을 이용해 대여를 합니다. 대여의 흐름은 다음과 같습니다. 1) 대여
#1 대여흐름 앞서 카프카 메시지 브로커를 이용해 post-service와 rental-service 연동을 진행해 보았습니다. 그러면 실제로 사용자가 대여 버튼을 눌렀을 때, 어떤 이벤트들이 발생하는지 그림을 통해 살펴 보고 이를 바탕으로 실제 구현을 진행해보겠습니
#1 스케쥴러 관리자 입장에서 매번 모든 데이터를 대상으로 대여가 끝난 대상을 찾아 만료시키는 일은 번거로운 일입니다. 따라서 서비스 자체에서 자동적으로 이러한 작업을 진행해주는 일 또한 중요하죠. 그런 관점에서 스프링에서는 cron을 이용하여 스케줄을 지정해줄 수