일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Chat gpt
- AWS
- chat API
- 네이버웍스
- 네이버클라우드플랫폼
- Catalina
- docker
- GitLab
- 도커
- application 재기동
- 모니터링 및 경고 중앙화
- MSA
- MAC
- ChatGPT
- desktop
- 리눅스
- GIT
- error
- crontab
- eclipse
- sh
- 마이크로서비스 패턴
- 분산추적
- 자바 정규식
- 제어루프
- linux
- 알림
- 가상머신 차이
- 정규표현식
- 메시지
- Today
- Total
시간나는대로 틈틈히 정리 합시다~~!!!
마이크로서비스 란? 본문
1. 정의
- 일체형 애플리케이션을 서로 협력하는 독립 소프트웨어 컴포넌트로 나누는 것이며,
애플리케이션을 쉽게 확장하고 빠르게 개발하기 위한 아키텍처이다.
- 아래 두가지 목표를 달성하고자 일체형 애플리케이션을 작은 독립컴포넌트로 나누는 것이다.
> 빠르게 개발해 지속적으로 배포할 수 있어야 한다.
> 수동 혹은 자동으로 쉽게 스케일링할 수 있어야 한다.
- 독립컴포넌트로 동작하려면 아래와 같은 기준을 충족해야 한다.
> 아무것도 공유하지 않는 아키텍처를 유지해야 한다.
(데이타베이스 공유X)
> 명확한 인터페이스를 통해서만 통신해야 한다.
(동기서비스 혹은 API를 이용한 메시징 방식을 사용할 수 있는데,
메시지 형식은 버전 관리 전략에 따라 안정적으로 문서화되고 개선되어야 한다.)
> 개별적인 런타임 프로세스로 배포해야 한다.
(각 마이크로서비스 인스턴스는 도커 컨테이너와 같이 독립된 런타임 프로세스로 실행해야 한다.)
> 마이크로 인스턴스는 상태가 없다.
(모든 마이크로서비스 인스턴스가 마이크로서비스로 들어오는 요청을 처리할 수 있다.)
2. 장점
- 하나의 대형 서버에 배포해야 하는 일체형 애플리케이션과 달리 여러개의 작은 서버에 배포할 수 있다.
- 가상 서버를 늘리는 등의 방법으로 일체형 애플리케이션을 확장하는 것에 비해 훨씬 쉽게 확장이 가능하다.
- 업그레이드나 교체에 대해 일체형 애플리케이션에 비해 쉽다.
3. 단점
- 동기식 통신을 사용하는 다수의 소형 컴포넌트는 연쇄장애를 일으킬 수 있다.
(부하가 높은 상황에서 특히 심함)
- 다수의 소형 컴포넌트를 최신 상태로 유지하기 쉽지 않다.
- 많은 컴포넌트가 처리에 관여하는 요청은 추적하기 어렵다.
예를 들어, 각 컴포넌트가 로컬에 로그 이벤트를 저장하는 경우 근본 원인 분석을 수행하기 어렵다.
- 컴포넌트 수준의 하드웨어 자원 사용량 분석도 어렵다.
- 다수의 소형 컴포넌트를 수동으로 구성하고 관리하는 건 비용이 많이 들고 오류가 발생하기 쉽다.
- 애플리케이션을 독립 컴포넌트 그룹으로 나누면 분산 시스템을 형성하게 된다.
4. 분산 애플리케이션을 처음 구축할 때 하는 여덟 가지 오류(가정)
아래 잘못된 가정을 기반으로 구축한 마이크로서비스는 일시적인 네트워크 결함이나
다른 마이크로서비스 인스턴스에서 발생한 문제에 취약하게 된다.
- 네트워크는 안전하다.
- 네트워크 지연은 0이다.
- 대역폭은 무한하다.
- 네트워크는 안전하다.
- 토폴로지는 변하지 않는다.
- 관리자는 1명이다.
- 전송비용은 0이다.
- 네트워크는 균일하다.
5. 해결책
- 시스템 환경에 항상 문제가 있다는 가정을 기반으로 마이크로서비스 아키텍처를 설계한다.
- 문제를 감지해 고장난 컴포넌트를 다시 시작하고
클라이언트 측에서는 고장난 마이크로서비스 인스턴스에 요청을 보내지 않도록 설계한다.
- 문제가 해결되면 고장났던 마이크로서비스에 대한 요청을 다시 시작해야 한다.
- 운영자가 다수의 마이크로서비스를 수동으로 관리하는 건 어려우므로 모든 것은 완전히 자동화되어야 한다.
6. 마이크로서비스를 나누는 규모 기준
- 개발자가 다룰 수 있을 만한 크기
- 성능(대기시간)이나 데이터 일관성을 저해하지 않을 정도의 규모
'IT' 카테고리의 다른 글
[Error] Mac Os 버전 업그레이드 이후 터미널에서 명령어 실행 시 오류 발생 건 (0) | 2021.03.28 |
---|---|
[GIT] 설치 사이트 (0) | 2021.03.28 |
[마이크로서비스 디자인 패턴] 구성 중앙화 (Central Configuration) (0) | 2021.03.27 |
[마이크로서비스 디자인 패턴] 리액티브 마이크로서비스 (Reactive Microservice) (0) | 2021.03.27 |
[마이크로서비스 디자인 패턴] 에지 서버 (edge server) (0) | 2021.03.27 |