마이크로서비스 아키텍처 스터디

1 minute read

Micro Service Architecture (MSA) - 마이크로서비스 아키텍처란?

대용량 트래픽을 커버리지하기 위한 서버 중앙화 다중클라이언트 대상으로 실시간 배포를 할 수 있는 강점이 있음. 서비스 로스타임이 없다.(즉시반영) 대규모 서비스 경우 각 서비스별로 모듈화하여 개발할 수 있는 구조 만약 서비스 모듈에서 오류가 발생하게되면 해당서비스만 로스되며 다른서비스에는 영향이 가지 않는 구조

기존 모노리틱 아키텍처와 마이크로 서비스 아키텍처의 차이점

1

  • 모노리틱 : 하나의 서버에 모든 시스템 구성을 사용.
  • 마이크로서비스아키텍처 : 서비스는 중앙관리 서버에서 그외 서비스별로 vm 구성을 쪼개어 사용하여 관리하는 구조

11

  • 모놀리틱 - 빌드 테스트 후
  • MSA - 무중단 배포 가능 구성

MSA는 만능이 아님 서비스 환경적으로 서비스 사용자가 많았을 경우에 적합한 기술이다.

  1. 빌드 및 테스트 시간을 단축시킬 수 있다. 30개의 서비스를 가진 Monolithic 의 빌드 시간이 30분이었다면, MSA는 각각의 서비스를 1분 만에 빌드 할 수 있습니다. 이는 CI / CD를 추구하는 기업에서는 좀 더 적합한 모델이 됩니다. 왜냐하면 하루에도 몇 번을 빌드 및 배포를 해야 하는데 그때마다 많은 시간을 소모하게 된다면 낭비이기 때문입니다.

  2. 상황에 맞게 기술을 유연하게 적용할 수 있습니다. 예를 들어 TPS(시간당 트랜잭션)가 높고, 읽기 작업이 많은 서비스에는 Node + Redis로 구현을 하고, 트랜잭션 및 안정성이 중요한 서비스에는 Spring + RDB를 적용할 수 있습니다.

Spring cloud Config

  • MSA를 시작하기 앞서 Spring Cloud Config에 대해 알아야한다.
    -중앙 집중식 마이크로서비스 구성을 지원한다. 여기서 두 가지 중요한 구성 요소의 조합이다.
    1. 스프링 클라우드 컨피그 서버 : 버전 관리 리포지토리로 백업된 중앙 집중식 구성 노출을 지원한다.
    2. 스프링 클라우드 컨피그 클라이언트 : 애플리케이션이 스프링 클라우드 컨피그 서버에 연결하도록 지원한다
  • 리본 (부하분산 처리)
    • 클라이언트 로드밸런서
    • 기본 라운드로빈(RR) 방식의 부하분산 처리가능
    • 스프링클라우드로 부터 서버목록을 전달받아 사용가능
    • 클라이언트에서 서버에 접근하는 방식으로 3번이상 연결실패 시 다른 서버로 연결시도함.
  • 로드밸런서에서 로드밸런싱이 이뤄지지않고
    • api-gateway에서 로드밸런스 됨. ribbon은 eureka 서비스 사용시 내부에서 같이 작동한다.
    • HTTP,TCP,UDP 모두지원 함
    • 대상의 지속적인 ping을 체크하여 서비스 UP/DOWN을 판단할 수 있음.
  • 기존 서버사이드 방식과 리본의 방식 1

  • 서킷 브레이커
  • 서킷 브레이커 경우 전류 차단기 처럼
  • 서로의 접점이 문제가 발생 할 경우 해당 문제부분을 일시적으로 차단시켜주어 기존의 사용중인 서비스는 유지하고 문제되는부분만 격리시켜주는 기능

  • 넷플릭스OSS (키워드)
    • ZUUL: 클라이언트의 요청을 해당 경로로 전달하는 역할
    • HYSTRIX :서킷브레이커 라이브러리를 제공(시스템 장애생기면 연쇄작용으로 무너지지않게 차단기역할)
    • RIBBON : 로드밸런싱 기능
    • EUREKA : 유레카 서버에서 유레카 클라이언트 대상으로 중앙 관리를 할 수 있는 구조

Saas 구조 - 12 팩터 앱 자세한 내용 : https://12factor.net/ko/

Comments