스프링, 클라우드와 만나다.

철근콘크리트·2020년 12월 10일
0
post-thumbnail

마이크로 서비스 사용이유

마이크로 서비스를 사용하면 대형 애플리케이션을 관리하기 쉽고, 제한된 책임을 담당하는 컴포넌트로 분해할 수 있다.
마이크로서비스를 고려할 때 수용해야 할 핵심 개념은 애플리케이션 기능을 분해하고 분리해서 완전히 상호 독립적이어야 한다는 것이다.




스프링과 마이크로 서비스의 관련성

스프링은 의존성 주입 프레임워크를 사용하면 하드 코딩 하지 않고, 관례와 annotation으로 객체 간 관계를 외부화할 수 있어 대규모 자바프로젝트를 더 쉽게 관리할 수 있다.

스프링 클라우드 프레임워크를 사용하면 private 및 public 공용 클라우드에 마이크로서비스를 쉽게 운영하고 배포할 수 있다.



스프링 부트는 다음과 같이 요약 된다.

작고(small) 단순하며(simple) 분리된(decoupled)서비스 = 확장 가능하고(scalable) 회복적이며(resilient) 유연한 애플리케이션



왜 클라우드는 마이크로서비스인가?

마이크로 서비스를 작성하는 개발자는 서비스를 다음 중 어디에 배포할지 조만간 결정해야 한다.

  • 물리적 서버 : 용량을 빠르게 늘릴 수 없고 마이크로서비스를 수평 확장하는데 상당한 비용이 든다.

  • 가상 머신 이미지 : 장점으로는 확장하고 실패 이벤트를 받을 때 신속하게 마이크로서비스 인스턴스를 시작하고 종료할 수 있다는 것이다.
    (여러 인스턴스를 신속하게 IaaS형 사설 및 공용 클라우드에 배포하고 시작할 수 있다.)

  • 가상 컨테이너 : 가상 머신 이미지 기반의 마이크로서비스 배포를 자연스럽게 확장한 것이다. 도커 컨테이너로 자기 서비스를 클라우드에 배포한다. 가상 컨테이너는 가상 머신 안에서 실행된다.

    " 클라우드 기반의 마이크로 서비스는 탄력성 개념을 중심으로 한다. 클라우드 서비스 공급자를 통해 몇 분 안에 새로운 가상 머신과 컨테이너를 빠르게 가동시킬 수 있다. 서비스 용량이 감소한다면 추가 비용을 들이지 않고도 가상 서버를 줄일 수 있다. 서버 탄력성은 애플리케이션 회복성이 높다는 것을 의미한다.

마이크로서비스 클라이언트 회복성 패턴

" 마이크로 서비스 아키텍처는 고도로 분산되어 있어서 1개의 서비스 (또는 서비스 인스턴스) 문제가 서비스 소비자에게 연쇄적으로 발생하지 않도록 방지하는 데 매우 민감해져야 한다. 

1) 마이크로 서비스 보안 패턴
- 인증, 인가, 자격증명 관리와 전파 

2) 마이크로 서비스 로깅 및 추적 패턴. 
- 로그 상관관계, 로그 수집, 마이크로서비스 추적. 

3) 마이크로서비스 빌드 및 배포 패턴
- 빌드 및 배포 파이프라인, 코드형 인프라스트럭처, 불변 서버, 피닉스 서버

스프링 클라우드로 마이크로서비스 구축.


  • 스프링 부트 : REST 기반 마이크로 서비스를 구축하는 주요 작업을 단순화해 마이크로서비스를 상당히 쉽게 개발할 수 있다. HTTP 형식의 동사를 URL에 매핑하고 JSON 프로토콜을 자바 객체로 직렬화할 뿐만 아니라 자바 예외를 표준 HTTP 에러 코드에 매핑하는 작업도 간편해 졌다.

  • 스프링 클라우드 컨피그 : 중앙 집중식 서비스로 애플리케이션 구성 데이터 관리를 담당하고 애플리케이션 데이터를 마이크로서비스와 완전히 분리한다. (인스턴스가 아무리 많더라도 항상 동일한 구성을 유지할 수 있다.)
    ex)깃, 콘설, 유레카

  • 스프링 클라우드 서비스 디스커버리 : 이것을 사용하면 클라이언트에 서버가 배포된 물리적 위치를 추상화할 수 있다. 소비자는 물리적 위치보다 논리적 이름을 사용해 서버의 비즈니스 로직을 호출한다.

    "스프링 클라우드는 넷플릭스나 하시코프 같은 회사의 오픈 소스 기술을 집약 했다. 그들의 기술은 스프링 애너테이션에 '포함' 되어 서비스 설정과 구성을 크게 단순화 한다."

0개의 댓글