1. Spring Cloud LoadBalancer(SCL) 이해 1.1 WHY ? Spring Cloud LoadBalancer(이하 SCL)는 Spring Cloud Ribbon과 동일한 Client-side Load Balancer입니다. Spring Cloud Ribbon편에서 얘기했듯이 Client side Load balancer가 필요한 이유는 부하분산을 적절하게 하여 서비스의 가용성을 최대화하기 위합입니다. 또한, 2018년 12월 이후 Ribbon은 EOS되었기 때문에 Spring Cloud LoadBalancer를 사용하는것이 좋습니다. 1.2 HOW ? 1) Netflix Ribbon vs Spling Cloud LoadBalancer - 지원 HttpClient Ribbon은 Blo..
1. Spring WebClient 이해 이 글을 읽기 전에 먼저 일하는 방식 변화를 이끌고 있는 애자일, 마이크로서비스, 데브옵스, 클라우드에 대해 기본적인 이해를 하실것을 권장 합니다. https://happycloud-lee.tistory.com/261?category=8322466 1) WHY ? 우리가 개발하는 어플리케이션들을 크게 2개로 나눠보면 요청자와 제공자라고 할 수 있습니다. 요청자를 consumer 또는 subscriber라고 하고, 제공자를 producer 또는 provider라고 합니다. 요청자가 제공자에게 무언가를 요청할 때 제공자가 공개한 API를 이용하게 되는거구요. 요청 시 프로그램에서 우리가 가장 흔하게 사용하는 것이 Http Client입니다. Spring WebClie..
1. Spring Cloud Circuit Breaker와 Resilience4J 이해 1) WHY ? Spring Cloud Hystrix편에서 얘기했듯이 Circuit Breaker가 필요한 이유는, 누전차단기가 전기사고가 발생하기 전에 전기를 미리 차단하는것과 동일하게, 문제가 있는 마이크로서비스로의 트래픽을 차단하여 전체서비스가 느려지거나 중단되는것을 미리 방지하기 위해서 입니다. 2) HOW ? Spring Cloud Circuit Breaker는 Netflix Hystrix, Resilience4J, Alibaba Sential, Spring Retry와 같은 Circuit Breaker제품들을 사용하기 위해 표준 인터페이스를 제공하는 추상화(또는 Facade) 라이브러리입니다. Spring ..
1. Spring Cloud Gateway(SCG) 이해 1) WHY ? SCG는 API Gateway의 하나입니다. 따라서 API Gateway가 왜 필요한지 먼저 이해하는것이 필요합니다. Zuul server편에서 설명한바와 같이 API Gateway가 필요한 이유는 안전한 API유통과 Client 요청별로 유연하게 대처하기 위해서입니다. 그리고 API Gateway는 인증/인가, L/B & 라우팅, 로깅, Circuit Breaker의 역할을 합니다. 2) HOW ? SCG는 Zuul과 어떤 차이가 있을까요 ? 그 차이를 이해하면서 SCG의 동작원리를 설명하겠습니다. 차이점 1: Blocking vs non-Blocking SCG를 만든 Spencer Gibb은 아래와 같이 설명하고 있습니다. Zu..
1. Spring Boot Actuator 이해 1) WHY? 각 마이크로서비스는 고유의 목적을 가지고 개발되고 운영됩니다. 하지만 모든 마이크로서비스에는 공통으로 요구되는 기능이 있습니다. 예를 들어 Health Check와 상태정보(Metrics) 제공같은 기능들이 그것입니다. 이러한 공통 기능들을 각각 만드는 것은 매우 비효율적입니다. Spring Boot Actuator가 필요한 이유는 어플리케이션을 관리하고 제반 정보를 제공하는 공통 기능을 쉽게 적용하기 위해서입니다. 참고) Actuator 어원 An actuator is a manufacturing term that refers to a mechanical device for moving or controlling something. Actu..
1. Sleuth와 Zipkin 이해 1) WHY ? 마이크로서비스로 큰 서비스를 잘게 쪼개어 개발하게 되면 자연스럽게 마이크로서비스간에 연결이 많아지고 복잡하게 됩니다. 예를 들어 고객 '홍길동'이 2021-02-01 13:33:33에 피자 3개를 주문했다고 가정해 봅시다. 그 주문이 처리되기 위해서는 아래와 같이 여러가지 마이크로서비스들이 서로 호출하게 됩니다. 마이크로서비스 (consumer) 마이크로서비스 (producer) API 주문접수 주문등록 /order/register/{order id} 주문등록 고객체크 /customer/validate/{customer id} 주문접수 결제 /pay/{order id} 주문접수 조리요청 /restaurant/{order id} 조리요청 배달요청 /de..
이번 장은 Circuit breaker인 Hystrix에 대해서 다룹니다. 목차는 아래와 같습니다. 1. Hystrix 이해 2. Hystrix 실습 3. Hystrix Dashboard & Turbine 4. Zuul에 Hystrix 적용 자세하게 설명하다보니 내용이 좀 많습니다. 1. Hystrix 이해 WHY ? 모든 전기를 사용하는 곳에는 누전차단기가 있습니다. 누전차단기는 전기 사용 중 누전, 과전류, 합선으로 전기사고가 발생하기 전에 전기를 미리 차단하는 역할을 합니다. 누전차단기와 같이 전류를 차단하는 장치를 통틀어 우리는 Circuit breaker(전류차단기)라고 부릅니다. 전기제품 사이로 전류가 흐르듯이, 우리가 만드는 마이크로서비스 사이에도 트래픽이 흐릅니다. 어떤 마이크로서비스가 메..
Ribbon 이해 WHY ? 어떤 어플리케이션이 다른 어플리케이션을 호출할 때 대상 어플리케이션 인스턴스가 하나밖에 없다면 어떻게 될까요 ? 그 대상앱 인스턴스가 죽거나 HTTP hang이 걸리면 서비스에 장애가 발생합니다. 그래서 보통 어플리케이션 인스턴스는 1개가 아니라 최소 2개 이상을 띄웁니다. 그리고, 그 인스턴스들을 연결해 주는 Load balancer를 이용하여 연결하게 됩니다. Web 서버 이중화 Ribbon은 Load balancing을 요청 어플리케이션 단에서 수행해주는 Client-side Load balancer입니다. Ribbon과 같은 L/B가 필요한 이유는 부하 분산을 적절하게 하여 서비스의 가용성을 최대화하기 위함입니다. API Gateway도 Ribbon을 통해 Backen..
Zuul 서버 이해 WHY ? Zuul서버는 API Gateway입니다. 먼저 왜 API Gateway가 필요할까 이해하는게 중요합니다. API Gateway는 API의 요청자인 Client(웹어플리케이션 또는 모바일앱)와 API의 제공자인 backend service를 연결하는 중계자입니다. 우리가 부동산중계인을 통해 거래를 하듯이, API를 사용하는 어플리케이션과 API를 제공하는 backend service는 API Gateway를 통해 데이터를 유통합니다. 부동산중계인을 이용하면 거래도 안전하고 상대방과 민감한 얘기를 직접할 필요도 없으니 맘도 편합니다. API Gateway가 필요한 이유도 안전한 API유통과 Client 요청별로 유연하게 대처하기 위해서입니다. Client요청에 유연하게 대응한..
Config monitor 이해 WHY ? config git repository의 config파일이 변경되면, 자동으로 MQ에 config 변경정보가 전송되고, MQ 채널을 구독한 각 마이크로서비스에게도 통보가 되어 동적으로 config변경 사항이 각 마이크로서비스에 반영되어야 합니다. Spring Cloud bus는 이를 위한 방법을 제공하나, config git repository에 업로드 후 수동으로 MQ에 config 변경 정보를 요청해야 합니다. 즉, http://{config server host}/actuator/bus-refresh를 POST로 수행해야 합니다. 우리는 이를 자동화하기 위해 위 처리를 수행하는 application을 만들고, config git repository의 web..
https://happycloud-lee.tistory.com/212?category=902419 Spring Cloud bus 이해 WHY ? config가 변경되면 각 마이크로서비스는 최신 값을 갖고 오기 위해 POST로 http[s]://{microservice host}/actuator/refresh를 해줘야 합니다. 물론 이 작업을 자동화할 수도 있겠으나, config server가 각 마이크로서비스의 주소를 모두 관리해야 하니 비효율적입니다. Spring cloud bus는 동적으로 config 변경을 적용하기 위한 MQ(Message Queue) Handler입니다. HOW ? 아래 그림처럼 Config server와 마이크로서비스 간에 메시지 Queue(rabbitMQ 또는 kafka)를 ..
Eureka server 이해 WHY ? 한 마이크로서비스가 다른 마이크로서비스를 호출하려면, 대상 마이크로서비스의 IP 또는 FQDN(FQDN-Fully Qualified Domain Name)과 포트를 알아야 합니다. 대상 마이크로서비스는 증감될 수 있고, IP/FQDN과 포트가 변경될 수도 있습니다. 특히, kubernetes환경에서는 이러한 현상이 비일비재합니다. Pod 하나 하나가 마이크로서비스(정확히는 마이크로서비스 인스턴스)라고 할 수 있는데, Pod는 언제라도 증감되거나 재시작될 수 있고, 그때마다 IP는 변경됩니다. 각 마이크로서비스가 모든 마이크로서비스의 IP/FQDN과 PORT정보를 갖고 있는것은 매우 비효율적입니다. 따라서, 각 마이크로서비스의 IP/FQDN과 PORT정보를 저장하고..
Config server 이해 1) WHY ? 첫째, 마이크로서비스의 어떠한 설정(환경변수값, Spring cloud 설정 등)이 변경되었을때 서버 재시작 없이 동적으로 적용하기 위해서입니다. 둘째, 마이크로서비스가 배포될때 제반 설정값들을 배포 대상 환경(개발계, 검증계, 운영계 등)에 맞게 적용하기 위함입니다. 셋째, 마이크로서비스를 Stateless하게 개발하기 위해서입니다. Stateless하게 만들어야 스케일링(마이크로서비스 인스턴스 서버 - 즉, 컨테이너의 증감)과 부담없는 재시작이 가능하기 때문입니다. 두번째와 세번째는 MSA 12Factors에서도 요구되는 특성입니다. MSA특성과 MSA 12 Factors 이해를 참조하십시오. 2) HOW ? 마이크로서비스에서 설정 파일들을 분리하여, g..
개발 환경은 아래와 같이 구성하며, 인터넷 연결이 되어 있어야 합니다. 상당히 많은 S/W설치가 필요합니다. 상세한 가이드 글을 링크하였으니, 천천히 이해하면서 설치하여 보시기 바랍니다. S/W 설치 1) Container platform 설치 및 구성 S/W 설명 설치 위치 kubernetes 아래 두 옵션 중 원하는 방식을 선택하여 설치하십시오. 학습 목적이라면 싱글 노드에 빠르게 구성하시고, 실무에 사용하고자 하면 멀티 노드에 구성하십시오. 주의) 싱글 노드에 구성할때 VM은 PC에 구성하지 마시고, public cloud에서 구매하거나 별도의 장비에 구성하시기 바랍니다. PC에 VM을 구성하면 리소스가 부족하여 제대로 동작하지 않을 수 있습니다. 1. 멀티 노드에 설치 1) k8s Multi no..
Spring Cloud는 마이크로서비스의 개발, 배포, 운영에 필요한 아키텍처를 쉽게 구성할 수 있도록 지원하는 Spring Boot기반의 프레임워크입니다. 다시 말해 "MSA구성을 지원하는 Springboot기반 Framework"입니다. Spring Cloud의 핵심 component는 아래와 같이 요약할 수 있습니다. 이 글을 읽기 전에 먼저 일하는 방식 변화를 이끌고 있는 애자일, 마이크로서비스, 데브옵스, 클라우드에 대해 기본적인 이해를 하실것을 권장 합니다. https://happycloud-lee.tistory.com/261?category=8322466 그럼 각 컴포넌트에 대해 예제를 개발해 가면서 이해하도록 하겠습니다. 저는 Spring cloud로 개발한 어플리케이션을 kubernete..
vscode 설치 Visual Studio Code는 마이크로소프트에서 개발한 통합개발환경(IDE)입니다. Eclipse, Spring Tool Suite, Intellij IDEA와 더불어 가장 많이 사용되는 IDE의 하나입니다. vscode 설치 : https://code.visualstudio.com/download 확장팩 설치 비슷한 이름의 확장팩이 있을 수 있으니 제공회사와 로고를 확인한 후 잘 설치하세요. 1) Extension Pack for Java 2) Spring Boot Extension Pack 추가 설정 1) 메뉴를 한글로 사용하시려면 언어팩을 설치 하십시오. 2) 'code' 유틸리티 설치 아래 예제와 같이 Terminal창에서 'code {디렉토리}'를 입력하면 현재 디렉토리가..
1. 개요 1.1 가이드 목표 prometheus와 grafana를 이용하여 모니터링 체계를 구축하는 방법에 대해 이해 1.2 아키텍처 kubernetes 리소스의 metric(사용현황) 정보를 수집(prometheus)하여 대시보드로 제공 (grafana)할 수 있도록 하기 위해 prometheus와 grafana툴을 이용함 1.3 사전 작업 1) helm 설치 happycloud-lee.tistory.com/3?category=832245 2) helm chart repository 추가 helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo add kube-state-metrics h..
1. 개요 1.1 가이드 목표 EFK스택을 이용하여 통합로깅체계를 구축하는 방법에 대해 이해 1.2 EFK아키텍처 elastic search는 로그가 저장되는 Database입니다. fluentd는 각 Pod의 로그를 수집하는 데몬 프로그램입니다. kibana는 elastic search의 로그를 통합 조회 및 검색할 수 있는 web UI를 제공합니다. 1.3 사전 작업 1) helm 설치 happycloud-lee.tistory.com/3?category=832245 2) helm chart repository 추가 helm repo add elastic https://helm.elastic.co helm repo update 3) namespace 작성 $ kubectl create ns efk 4)..
jMeter는 Helm차크를 이용하여 Master와 실제로 부하를 줄 복수의 jmeter server들을 설치합니다. jMeter는 성능테스트할 Target cluster가 아닌 다른 k8s cluster에 설치 합니다. 사전준비 - 성능테스트 용 k8s cluster 구성 - namespace 작성 $ ln -s /usr/bin/kubectl /usr/local/bin/k $ k create ns stress $ k config set-context $(k config current-context) --namespace stress - (중요) root로 실행될 수 있도록 anyuid에 default SA를 추가함 $ oc adm policy add-scc-to-user anyuid -z default..
run-cicd 소개 run-cicd는 container image를 build하여, kubernetes상에 workload를 배포하는 CI/CD툴입니다. linux shell로 만들어져 있어 Jenkins, bamboo, Tekton설치 없이 쉽게 사용할 수 있습니다. 소스: https://github.com/happyspringcloud/run-cicd.git 1. How to install CI/CD를 수행할 VM을 로그인 합니다. root user가 아닌 다른 OS user로 실행하고자 하는 경우 그 유저로 전환 합니다. : su - {username} github.com에서 설치 합니다. git clone https://github.com/happyspringcloud/run-cicd.git S..
- Total
- Today
- Yesterday
- 육각형인간
- Event Sourcing
- 분초사회
- 마이크로서비스
- micro service
- API Composition
- agile
- CQRS
- 도파밍
- spotify
- 리퀴드폴리탄
- 디토소비
- 버라이어티가격
- 스핀프로젝트
- 호모프롬프트
- AXON
- 요즘남편 없던아빠
- SAGA
- 돌봄경제
- 애자일
- 스포티파이
- 마이크로서비스 패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |