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=902419Spring 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..
마이크로서비스를 공부하기 시작하면 MSA(MicroService Architecture), 마이크로서비스패턴(Microservice Pattern)이라는 용어를 접하게 됩니다. 여러가지 복잡하고 어려운 설명들이 많은데, 저는 Simon sinek의 Golden Circle로 간단하게 설명해 보도록 하겠습니다. Golden circle은 위대한 리더와 기업은 무엇인가를 말할 때 WHY(신념)부터 얘기하고, HOW를 설명한 후 WHAT을 가장 마지막에 말한다는 이론입니다. 저 또한 마이크로서비스가 왜 필요하고, 어떻게 해야하고, 어떤 특징이 필요한지의 순서로 정리하고자 합니다. 아래 장표가 바로 그것입니다. MSA Features와 12 Factors는 'MSA특성과 MSA 12Factors이해'를 참조하십..
보호되어 있는 글입니다.
Java language에 대한 기본적 이해를 위해 메모합니다. 주로 아래글을 참고했습니다. gmlwjd9405.github.io/2017/10/01/basic-concepts-of-development-java.html Class, Object(객체), Instance 차이 Class는 설계도이고 Object(객체)는 설계도로 만들 예정인 대상이며 Instance는 실제 만들어진 결과물입니다. 그러나 Class와 Object만 비교할때는 Object는 Instance와 동일한 의미로 쓰입니다. 즉, Class로 실제 만들어진 결과물을 Object라고 합니다. 건물을 예를 든다면 아래와 같습니다. Class Object Instance 단독주택 설계도 class House { private String ..
java springboot2와 nodejs의 swagger 샘플앱입니다. springboot에서 사용하려면, 사전에 lombok을 먼저 설치하셔야 합니다. https://happycloud-lee.tistory.com/228 lombok 설치 롬복은 테이블을 구조화한 도메인 클래스(Entity 또는 DTO, VO)에서 getter/setter 메서드와 toString, equals, hashCode 등의 메서드를 애너테이션으로 사용할 수 있도록 해주는 라이브러리입니다. 아래를 참 happycloud-lee.tistory.com springboot2 sample: https://github.com/happykube/api-service.git 설명은 daddyprogrammer.org/post/313/s..
RDBMS는 분산 transaction환경에서 Data의 CRUD를 문제 없이 처리하기 위해 ACID(Atomicity, Consistency, Isolation, Durability)라는 특성을 지원합니다. 쉽게 말해, ACID란 데이터를 안전하게 처리하기 위한 RDBMS의 성질입니다. ACID의 의미는 아래와 같습니다. 이해를 돕기 위해 '계좌이체' transaction을 예로 들겠습니다. Atomicity(원자성): "All or nothing" transaction의 시작과 종료사이에 일어난 data의 변경은 정상적이면 모두 저장(Commit)되어야 하고, 문제가 있으면 모두 취소(Rollback)되어야 한다. 예) 송금이 50%만 진행되고 장애가 났다면 송금은 모두 취소된다. 일부만 저장되면 안..
아래 글과 크리스리처드슨의 '마이크로서비스 패턴'을 참고했습니다. 비동기메시징시스템 이해: https://victorydntmd.tistory.com/343 kafka vs RabbitMQ 비교: https://coding-nyan.tistory.com/129 메시지 처리순서 보장 - 메시지 처리순서 문제 예시 . 주문서비스는 3개의 인스턴스를 가진다.(예: k8s라면 Pod가 3개) . 주문생성메시지가 요청채널에 발행된다. 주문서비스인스턴스1이 처리를 시작한다. . 주문취소메시지가 요청채널에 발행된다. 주문서비스인스턴스2가 처리를 시작한다. . 주문생성메시지가 먼저 도착했으나 주문서비스인스턴스1이 일시적 장애로 처리가 오래 걸린다면 주문취소가 먼저 처리될 수도 있다. - 메시지 처리순서 해결안 . 요청..
크리스 리처드슨의 '마이크로서비스 패턴'에 나오는 44가지 패턴 중 핵심 패턴인 Saga. Event sourcing, API composition, CRQS, External API, Transactional Outbox/Polling publisher/Transaction Log tailing 8가지를 먼저 빠르게 이해해 봅니다.‘마이크로서비스 패턴' (크리스 리처드슨 지음, 이일웅 번역) 참조 먼저 아래 요약본을 먼저 보시면 좀 더 이해가 쉬울 수 있습니다. 마이크로서비스 패턴 Summary 보기 그리고, 2024년 1월 현재 Axon 프레임워크를 이용한 마이크로서비스 패턴 개발 예제를 올리고 있습니다. 마이크로서비스 패턴을 실제 어떻게 개발하는지 알고 싶은 분들은 읽어 보시길 추천 합니다. htt..
마이크로서비스(이하 mSVC라고도 함)에 대해서 제가 이해하는 수준에서 최대한 쉽게 정리해 봤습니다. 마이크로서비스란 ? 마이크로서비스는 큰 서비스를 고유의 Database를 갖고 있는 작은 단위로 나눈 서비스입니다. 이런 마이크로서비스를 설계,개발,배포,운영하는 아키텍처 패턴(반복 사용될 수 있는 방법)을 마이크로서비스아키텍처(MSA-Micro Service Architcture)라고 합니다. 각 마이크로서비스가 고유의 DB가 있어야 하는 이유는 다른 서비스의 일시적 장애에도 자기 자신의 서비스는 그 자체로 동작하도록 하기 위해서입니다. 즉, 서비스 간 Loosely Coupling 하기 위해서 입니다. 이론적으로는 그렇지만 각 서비스가 고유의 DB를 갖기 위해서는 추가적인 비용이 들어갑니다. 대표적..
마이크로서비스의 설계 방법론인 DDD(Domain Driven Design)에 대해 제가 가진 지식과 그간의 경험을 기반으로 정리하였습니다. 이 글을 읽기 전에 먼저 일하는 방식 변화를 이끌고 있는 애자일, 마이크로서비스, 데브옵스, 클라우드에 대해 기본적인 이해를 하실것을 권장 합니다. https://happycloud-lee.tistory.com/261?category=8322466 일하는 방식 변화 핵심만 빠르게 이해하기: 애자일, 마이크로서비스, 데브옵스, 클라우드 새로운 변화의 물결 학습 목표 마이크로서비스가 최근에 왜 주목 받고 있는지 거시적 관점인 일하는 방식 변화의 측면에서 이해하는 것이 목표입니다. 이를 위해 일하는 방식 변화가 왜 필요한 happycloud-lee.tistory.com ..
- Total
- Today
- Yesterday
- 도파밍
- agile
- micro service
- CQRS
- spotify
- 분초사회
- 요즘남편 없던아빠
- AXON
- 디토소비
- 스포티파이
- 호모프롬프트
- 스핀프로젝트
- 애자일
- Event Sourcing
- API Composition
- 리퀴드폴리탄
- 마이크로서비스 패턴
- 버라이어티가격
- 마이크로서비스
- 육각형인간
- 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 |