Spring/Cloud

태태개발일지 - spring cloud 기본

태태코 2024. 3. 2. 12:46
반응형

Antifragile의 조건

- Auto Scaling

    ex) 사용자가 많을 때와 사용자가 적을 때에 따라 서버를 자동으로 Scale up | Scale out하는 것.

 

- Microservices

    ex) 개별적인 모듈이나 기능을 개별적으로 운용하고 개발할 수 있는 것.

 

- Chaos enginerring

    ex) 급격하고 예측하기 힘든 상황에서 대해 실험하기 위한 규칙이나 방안.

 

-CI/CD 지속적인 통합

  

 

Cloud native

- Microservices 방식으로 개발되고, CI/CD로 자동으로 통합되고, 빌드, 배포된다.

    문제가 발생했을 때 다시 배포하는 과정인 DEVOPS가 있다. 어플리케이션을 Containers가상화 기술을 통해서  사용하게 된다.

 

CI/CD

카나리 배포 -> 95%만 이전버전 5% 새버전 서비스

블루 그린 배포-> 100%사용자 이전 버전과 거의 동일한 새 버전 으로 점진적으로 개발.

 

DevOps

지속적으로 테스트해나가는 것을 의미한다.

작은 단위로 나눠 더 자주 통합, 테스트, 배포할 수 있다.

 

Container 가상화.

like docker 

 

 

 

Spring Cloud Config Server 

출처: Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

다양한 서비스의 환경설정을 집어 넣을 수 있다.

 

서비스의 등록과 확인 -> Eureka

gateway, 분산 -> Ribbon, Spring Clode Gate Way

출처: Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

 

 

여러개의 서비스를 실행하기 위해서 분명 port를 다르게 써야한다. 

만약 서버가 한대 이상이라면 포트를 같게 해도 된다.

 

ServiceDiscovary -> 어떤 서버가 어디에 있는지를 저장하는 공간이다.

 

1. 서버에서 요청이들어온다.

2. Load Balancer가 springDiscavary에서 찾고 올바른것을 가져온다.

 

 

 

API GATEWAY란?

   - 사용자가 설정한 라우팅 설정에 따라 proxy역할을 한다. 시스템 내부를 숨기고 적절한 대응 가능.

 

출처: Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

 

End Point를 직접적으로 사용했을 때 clinet쪽에서도 수정을 해야한다.

ex) 새로운 마이크로 서비스가 추가되던가 새로운 파라메타가 바뀌었던가 수정되었다고 생각했을 때. 

출처: Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

 

백엔드 단에 API gateWay를 두고, 각각의 마이크로 서비스에 대한 end point를 api gateway가 직접 처리를한다.

 

1. 인증 및 권한 부여

2. 서비스 검색 통합

3. 응답 캐싱

4. 정책 회로 차단기 및 Qos 다시시도

5. 속도 제한

6. 부하 분산

7. 로깅, 추적, 상관관계 -> gate way에서 한번에 관리

8. 헤더, 쿼리 문자열 및 청구 변환

9. IP 등록 -> 등록 원하는 IP만 등록

 

Ribbon이라는 Load Balancer Client side로 서비스의 이름을 가지고 할 수 있는데. 현재는 Spring gateway를 사용한다.

 

api gateway -> 8080으로 설정을 해놓으면 그에 매핑되는 곳으로 

ex) 8000 or 8001로 메핑해서 url 메핑을 해서 요청한다.

port : 8081

@RestController

@GetMapping("/welcome")
public void hello(){
 //코드

}

 

port: 8082

@RestController

@GetMapping("/welcome")
public void hello(){
 //코드

}

각각의 독립적인 서비스를 만들고  Zuul설정을 이용하여

zuul.routes.first-service.path:/first-services/**

zuul.routes.first-service.url: http://localhost:8081

이렇게 메핑을 해줘서 해당 서비스로 가게끔 유도시켜준다.

 

 

반응형