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
Was this helpful?