본문 바로가기
개발관련

MSA(2) 로드밸런싱, 서킷브레이커, API GW, 보안구성

by 수바니 2024. 8. 2.

오늘의 부트캠프에서 알게되었던것은

1. 로드밸런싱

2. 서킷브레이커

3.  API GW

4. 보안구성

이다.

 

1. 로드밸런싱

컴퓨터 네트워크 기술의 일종으로 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. 즉, 서버에 가해지는 부하를 분산해주는 장치 또는 기술

 

2. 서킷브레이커

마이크로서비스 간의 호출 실패를 감지하고 시스템의 전체적인 안정성을 유지하는 패턴
외부 서비스 호출 실패시 빠른 실패를 통해 장애를 격리하고, 시스템의 다른 부분에 영향을 주지 않도록 합니다.

Fallback 메커니즘
문제가 생겼을때 로직을 제공한다.
어디에서 에러가 생겼는지 알 수 있고, 에러전파를 방지할 수 있다.
어노테이션으로 fallbackMethod = "fallbackMethod" 으로 로직으로 넘어간다.

 

3. API GW = API 게이트웨이
클라이언트의 요청을 받아 백엔드 서비스를 라우팅하고, 다양한 부가기능을 제공하는 중간서버
클라이언트와 서비스 간의 단일 진입점 역할을 한다.

Spring Cloud Gateway?
Spring 프로젝트의 일환으로  개발된 API 게이트웨이로, 클라이언트 요청을 적절한 서비스로 라우팅하고 다양한 필터링 기능을 제공한다.

어떤 user가 요청을 한다. /order/product
order와 product와 user 다 따로 있는 애플리케이션 각각 호출해야하한다. 각각 호스트가 다르다.
우리는 이 각각의 호스트를 하나로 만들수있다.
같은 통합된 호스트로 요청을 한다. -> 이것이 게이트웨이
엔드포인트를 보고 각각 라우팅을 하게된다.

 

4. 보안구성

OAuth2 : 토큰기반의 인증 및 권한 부여 프로토콜 (토큰기반이중요)
4가지 역할 정의 : 리소스 소유자, 클라이언트, 리소스서버, 인증서버

JWT(Json Web Token) : Json 형식의 자가 포함된 토큰으로, 클레임을 포함하여 사용자에 대한 정보를 전달합니다.
JWT : 헤더, 페이로드, 서명으로 구성
페이로드는 티켓으로 비유하자면, 이름이나 정보들이 담겨있다.

특징 
1. 자가포함  토큰자체에 모든 정보 포함하고 있어서 별도의 상태 저장이 필요없다.
2. 간결성 : 짧고 간결한 문자열
3. 서명 및 암호화 : 데이터의 무결성과 인증을 보장
토큰의 내부 데이터보다는 토큰을 가지고 왔는데 그 토큰이 누가 변조했는지 아니면 그대로 가져왔는지 그것이 중요하다.

JWT를 수정해서 인증을 태우면 인증이 안된다.
JWT는 페이로드를 암호화하기위해서 사용하는것이 아니다.  페이로드는 이름이나 정보들이 담겨있다.

 

Order ,Product 애플리케이션은 방화벽을 설치하여 GatewayApplication으로 Order와 Product에 접근되어야 한다.

 

게이트웨이를 통한 로드밸런싱 실습진행.

 

localhost:19090을 태웠을때의 유레카서버

PRODUCT-SERVICE 보면 포트가 2개의 인스턴스를 갖는다. -> 로드밸런싱

 

 

http://localhost:19095/auth/signIn?user_id=aaa

를 했을때  토큰이 나오는 것을 알수있다.

앞에 7글자 "Bearer "

도 포함되어있는걸 subString 지워주었다.

Bearer은 인증타입이다.  JWT 혹은 OAuth에 대한 토큰을 사용한다.

http://localhost:19095/product

403 Forbidden -> 권한이 없을때 생기는 에러이다.

당연하다 권한을 준적이 없다.

 

굉장히 귀여운 홈페이지를 알려주셨다!

403, 400 등 에러종류가 굉장히 많은데, 어떤 에러인지 기억이 나지않는다면 이 홈페이지를 들어가보세요!

강아지를 좋아한다면 dog를 고양이를 좋아한다면 cat로 검색해보세요!ㅎㅎ

https://http.dog/

 

HTTP Status Dogs API - A dog image for every HTTP Status Code

A free HTTP status code API with lots and lots of awesome dogs! Use it to show useful error messages in your website for HTTP response status codes. Support for AVIF, JXL, JPG, WEBP and JSON.

http.dog

 

https://http.cat/

 

HTTP Cats

API for HTTP Cats

http.cat