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

개요 및 간단 정리

마이크로 서비스란?

  • 작은단위의 서비스

  • 분해

  • 모놀리식 : 하나의 어플리케이션이 통으로 이루어짐

  • 마이크로서비스 : 모놀리식에서 각 서비스단위로 분해하여 독립적으로 구축 및 설계하여 하나의 시스템을 완성

  • 이 MSA를 구축하기 위해 필요한 개념 및 패턴들이 있음

마이크로서비스 핵심개발 패턴

  • 구축을 위한 기본 사항

  • 통신 프로토콜 : 데이터 교환 보통은 JSON

  • 서비스 세분성 : 적정한 수준으로 분해

  • 인터페이스 설계 : 서비스 엔드포인트를 클라이언트에 공개

  • 구성관리 : 서비스가 애플리케이션별 구성을 관리해 코드와 구성이 독립적인 개체가 되는 방법

  • 이벤트 프로세싱 : 이벤트 사용 -> 서비스간 상태 및 데이터 변경 사항을 통신

마이크로서비스 라우팅 패턴

  • 서비스 디스커버리 : 오작동하는 마이크로서비스 인스턴스를 가용 서비스 인스턴스 풀에서 제거하는 방법

  • 서비스 라우팅 : 단일 진입점을 제공하는 방법

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

  • 문제발생시, 연쇄적으로 영향을 미치지 않게 하기 위함

  • 클라이언트 측, 로드 밸런싱 : 마이크로 서비스의 여러 호출이 정상 인스턴스에 분산하도록 서비스 인스턴스의 위치를 캐싱하는 방법

  • 서킷브레이커 : 장애 등 문제 발생 -> 계속호출 하지 않게 하는 방법

  • 폴백 패턴 : 서비스호출 실패 -> 다른 대체 수단을 사용해 서비스 클라이언트가 작업을 수행하도록 하는 플러그인 메커니즘을 제공하는 방법

  • 벌크헤드 패턴 : 오작동하는 서비스 호출 하나가 나머지 애플리케이션에 부정적인 영향을 미치지 않도록 이러한 호출을 구분하는 방법

마이크로서비스 보안 패턴

  • 인증 : 서비스를 호출하는 클라이언트가 자신이라는 것을 알게하는 방법

  • 인가 : 마이크로 서비스를 호출하는 서비스 클라이언트가 수행하려는 작업을 수행할 자격이 있는지 알 수 있는 방법

  • 자격 증명 관리 / 전파 : 한 트랜잭션과 관련된 여러 서비스 호출에서 자격 증명을 항상 제시하지 않도록 하는 방법 -> OAuth와 JWT 사용

마이크로서비스 로깅 및 추적 패턴

  • 로그 상관관계 : 단일 트랜잭션에 대해 서비스간 생성된 모든 로그를 함께 연결 상관관계 ID를 구현 -> 고유 식별자

  • 로그 수집 : 모든 로그를 질의 가능한 단일 DB로 취합하는 방법

  • 마이크로서비스 추척 : 트랜잭션과 연관된 모든 서비스에서 클라이언트 트랜잭션 흐름을 시각화, 트랜잭션과 관련된 서비스의 성능 특성을 이해

마이크로서비스 빌드 및 배포 패턴

  • 가상이미지 빌드 , 컴파일

  • 서버가 실행될 머신 이미지 배포

  • 빌드 배포 파이프라인

  • Iass as Code : 소스제어를 사용해 실행하고 관리할 수 있는 코드로 서비스 프로 비저닝

  • Immutable Servers : 마이크로 서비스 이미지를 생성하고 배포한후 변경 못하게..

  • Phoenix Servers : 오래 실행될수록 구성 편차가 발생. 서버를 정기적으로 종료하고 불변 이미지를 재생성하는 방

스프링클라우드 스프링부트

  • 스프링클라우드 -> 피보탈, 하시코프, 넷플릭스 같은 오픈소스 회사의 프로젝트 수용

  • 빌드 배포 등 인프라영역에 매진하지 않고, 코드 작성하는데 집중시킴

  • 서킷브레이커 : 넷플릭스 -> 히스트릭스, 리본프로젝트

  • API 게이트웨이 : 스프링 클라우드 / 넷플릭스 주울, 보안 인가 및 인증, 콘텐츠 필터링, 라우팅규칙 등 표준서비스 정책 시행

  • 경량 메시지프로세싱 : 스프링클라우드 스트림(비동기이벤트), RabbitMQ, Kafka 같은 메시지 브로커와 신속하게 통한 가능

  • 고유추적 식별자 통합 : 스프링 클라우드 슬루스, 상관관계 ID or 추적 ID로.., 페이퍼트레일 같은 로그를 실시간 질의 가능한 데이터베이스로 수집, 오픈집킨은 단일 트랜잭션에 연관된 서비스의 호출 흐름을 시각화

  • 인증 인가 : 스프링클라우드 시큐리티 -> HTTP 호출에서 전달된 토큰사용으로 신원확인, 검증 -> JWT, OAuth2

  • 프로비저닝 -> 빌드 배포 파이프라인을 생성할 수 있는 도구!! Travis CI, Jenkins, Docker

Last updated