
시작하기 앞서,인프런 강의 및 다양한 블로그를 참고하여 MSA를 공부하면서 작성한 블로그임을 안내드립니다.🔗 인프런 강의 소개Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)자동으로 통합/빌드/테스트/배포Microservices 문제 발생 시 수정

API Gateway API Gateway란? 역할 사용자가 설정한 라우팅 설정에 따라 각각의 엔드포인트(End-Point)로 클라이언트 대신 요청 응답을 받으면 다시 클라이언트에게 전달 프록시 역할 장점 시스템 내부 구조는 숨기고, 외부 요청에 대해 적절한 형태

사용자 정의 필터로그, 로케일(Locale) 등을 수정 가능Locale: 사용자 인터페이스에서 사용되는 언어, 지역 설정, 출력 형식 등을 정의하는 문자열1) pom.xml2) CustomFilter.java 추가✅ 참고1) ServerHttpRequest, Serve

application.yml 파일에서 적용하려는 라우팅 정보에 개별 설정 추가가 필요했던 Custom Filter와 달리, 어떤 라우팅 정보가 실행되는 공통적으로 실행되는 필터가장 먼저 실행 ➡ 개별 Custom Filter 실행 ➡ 가장 마지막 종료GlobalFilt

필터 수행 과정중 발생하는 행위에 대한 로그를 남기기 위한 필터Global Filter ➡ Custom Filter ➡ Logging FilterLogging Filter ➡ Custom Filter ➡ Global Filter⭐ 필터 실행 순서와 종료 순서는 역순Lo

서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술의 통칭🔗 출처: 로드밸런서(Load Balancer)의 개념과 특징1\. Client가 특정 서비스를 요청2\. API Gateway가 Client의 요청을 받아서 Eureka Server에서 해당

카탈로그 서비스➡ 상품 조회유저 서비스➡ 사용자 조회➡ 주문 확인 USER-SERVICE ➡ ORDER-SERVICE주문 서비스➡ 상품 주문➡ 상품 수량 업데이트 ORDER-SERVICE ➡ CATALOG-SERVICE구성요소 ✅ Git Repository : 마이크

파일명: user-servicedependencies \- DevTools, Lombok, Web, Eureka Discovery Client, H2 Databaseapplication.yml 설정UserServiceApplication.java 수정UserContr

H2 1.4.x 이후 버전에서는 자동으로 데이터베이스 생성이 안되어서 강제로 낮은 버전의 H2를 사용했지만, Spring 3.x 이후부터는 1.4.x 이전 버전을 사용할 수 없음2.2.224 버전을 사용하여 구현 예정application.yml 수정(🔗 출처: H2를
회원가입 (사용자 추가) - 기본로직 📌 소스코드 큰 흐름 📌 기본 로직 추가 > 🍯 Tip! import 단축키: Alt+Shift+Enter RequestUser.java 클래스 생성 > 💡 참고 pom.xml 에 다음과 같은 의존성 추가 @NotN
pom.xml 의존성 추가 UserEntity.java 클래스 추가✅ 상세 설명@Entity : JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수Entity 객체의 인스턴스 하나가 테이블의 하나의 레코드 값을 의미@Table : 엔티티와 매핑할 테이블 지
UserController.java 수정✅ 상세 설명RequestUser 타입은 RequestBody 형태로 전달되기 때문에 어노테이션 작성 필요 💡 실행 시, 'POST' 형식으로 요청해야 함.➡ 기존에 일반 텍스트 형식으로 특정 문구를 return 했던 것을 코
Spring Secuity 사용 1\. Authentication : 인증 2\. Authorization : 권한구현 순서 1\. 애플리케이션에 Spring Security jar을 Dependency에 추가 2\. WebSecurityConfiguerAdap
전체 사용자 조회사용자 정보 조회 UserController.java 수정 API Gateway service의 application.yml 수정실행결과💡 실행 시 오류 발생다음과 같은 오류 발생 시, 해당 부분을 주석 처리하면 해결 됨➡ user-service의 W
상품 목록 조회Dependency 추가➡ DevTools, Lombok, Web, Eureka Discovery Client, H2 Database,ModelMapper, Spring Data JPA pom.xml 수정 application.yml 수정 Entity.
주문하기유저 아이디로 모든 주문 건들 확인주문 번호로 해당 주문 건 확인Dependency 추가➡ DevTools, Lombok, Web, Eureka Discovery Client, H2 Database,ModelMapper, Spring Data JPA pom.x
login 기능 구현 ✅ 유의해야 할 파일들 AuthenticationFilter UsernamePasswordAuthenticationFilter WebSecurity UserDetailsService 📌 소스코드 작성 1. user-service Reques
지난 포스팅에서 AuthenticationFilter의 attempAuthentication()를 통해 Email을 통해 사용자 정보를 조회하여 해당 Email과 Password를 사용하여 Token을 발급 받음이번 포스팅에서는 AuthenticationFilter 내
사용자에게 특정 리소스나 기능에 액세스할 수 있는 권한을 부여하는 프로세스💡 Authorization vs AuthenticationAuthentication특정 리소스에 권한이 있는지 확인 (ex. 등급 권한)Authorization본인이 누구인지 확인하는 것 (e
분산 시스템에서 서버 클라이언트 구성에 필요한 설정 정보(application.yml)를 외부 시스템에서 관리하나의 중앙화 된 저장소에서 구성요소 관리 가능각 서비스를 다시 빌드하지 않고, 바로 적용 가능애플리케이션 배포 파이프라인을 통해 DEV-UAT-PROD 환경에
User-service에 Config 파일 설정 정보 연동user-service application.yml 수정➡ user-service의 설정이 아닌 config-service의 설정 파일을 사용할 것이기 때문에 주석 처리 pom.xml 수정 bootstrap.ym
스프링 부트에서는 spring-boot-actuator 모듈을 통해 이러한 모니터링 기능을 지원할 뿐만 아니라 서비스를 일부 조작할 수 있게 지원엔드포인트를 활성화하고 노출까지 둘다 적용해야 사용할 수 있다.User-service pom.xml 수정 applicatio
Spring Cloud API Gateway에 Spring Cloud Config 연동API Gateway Service 파일 pom.xml 수정 bootstrap.yml 생성 ActuatorHttpExchangesConfiguration.java 생성HttpExhan
환경에 맞는 여러 가지 설정정보를 등록하여 사용하는 것설정파일 추가User-service bootstrap.yml 수정
기존의 Config 파일을 설정 파일의 주소를 입력하여 연결시켜놨는데,이를 Git Repository의 주소로 변경설정파일 경로config-service application.yml 수정URI 찾는 방법1\. 해당하는 git Repository에 접속🔗 링크: htt
Spring Cloud Config의 변경 내용을 각 마이크로서비스에 적용하는 방법은 다음과 같다.서비스 재기동비효율적Actuator refresh Application 상태, 모니터링Metric 수집을 위한 Http End Point 제공여러 개의 어플리케이션/마이크
메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜메시지 지향, 큐잉, 라우팅(P2P, Publisher-Subcriber), 신뢰성, 보안Erlang, RabbitMQ에서 사용 pom.xml 수정➡ dependency 추가Config ServerUser-se

암호화(Encryption) 평문 텍스트 ➡ 암호화복호화(Decryption) 암호화 ➡ 평문 텍스트대칭키(Symmetric Encryption) 암복호화 시 같은 키 값을 사용비대칭키(Asymmetric Encryption) 암/복호화 시 다른 키 값을 사용P
암호화(Encryption) 평문 텍스트 ➡ 암호화복호화(Decryption) 암호화 ➡ 평문 텍스트대칭키(Symmetric Encryption) 암/복호화 시 같은 키 값을 사용비대칭키(Asymmetric Encryption) 암/복호화 시 다른 키 값을 사용
통신 방식 1\. 동기 방식(Synchronous HTTP Communication) ➡ 클라이언트 요청 시, 해당 요청이 끝날 때까지 다른 클라이언트의 요청 처리 불가능 2\. 비동기 방식(Asynchronous communication over AMQP) ➡
서비스 간 통신 📌 개요 통신 방식 동기 방식(Synchronous HTTP Communication) ➡ 클라이언트 요청 시, 해당 요청이 끝날 때까지 다른 클라이언트의 요청 처리 불가능 비동기 방식(Asynchronous communication ove
로그(Log)의 역할?디버깅HTTP 요청과 응답에 대해 상세한 정보를 제공하므로, 문제를 추적하고 디버깅하는 데 유용모니터링요청과 응답에 대한 정보를 기록함으로써, 서비스의 동작을 모니터링하고 성능이나 예기치 않은 오류를 분석 가능문제 해결운영 환경에서 발생한 문제를
FeignClient 에러 처리 #1 📌 개요 📌 소스코드 UserServiceImpl.java 수정 📌 실행결과

문제 발생💥 Users의 요청 분산 처리 시 Orders 데이터도 분산 저장 ➡ 동기화 문제 발생하나의 Database 사용트랜잭션 관리 중요Database 간의 동기화RabbitMQ, Kafka 등 Message Queuing Server를 사용Kafka Con

Apache Kafka란?Apache Software Foundation의 Scalar 언어로 된 오픈 소스 메시지 브로커 프로젝트Kafka Broker 란? 1\. Kafka 애플리케이션 서버 2\. 3대 이상의 Broker Cluster 구성 3\. Zooke
FeignClient 에러 처리 #1 📌 개요 📌 소스코드 #1 OrderServiceClient.java 수정 📌 실행결과 #1