본문 바로가기

분류 전체보기

(345)
구성 중앙화 구성 중앙화 패턴은 다음과 같은 문제점, 솔루션, 해결책의 필요 조건이 있다. 문제점 일반적으로 애플리케이션은 여러 환경 변수나 파일에 담긴 구성 정보와 함께 배포되는데, 다수의 마이크로서비스 인스턴스가 배포된 마이크로서비스 아키텍처 기반의 시스템 환경에선 문제가 조금 있다. - 실행 중인 모든 마이크로서비스 인스턴스의 구성 정보를 한눈에 보려면 어떻게 해야 하는가? - 구성을 업데이트하고 관련된 모든 마이크로 서비스 인스턴스가 올바르게 업데이트 되게 하려면 어떻게 해야 하는가. 해결책 시스템 환경에 모든 마이크로서비스의 구성 정보를 저장하는 새 컴포넌트(구성 서버)를 추가한다. 해결책의 필요조건 마이크로서비스 집합에 대한 구성 정보를 한 곳에 저장하고 환경별(예: dev, test, qa, prod) ..
리액티브 마이크로서비스(Reactive Microservice) 리액티브 마이크로 서비스 패턴은 다음과 같은 문제점, 솔루션, 해결책의 필요 조건이 있다. 문제점 관례적으로 자바 개발자는 HTTP 기반의 RESTful JSON API와 같은 블로킹 I/O 모델을 사용해 동기식 통신을 구현해 왔다. 블로킹 I/O를 사용하면 요청을 처리하는 동안 운영체제의 스레드를 점유하게 된다. 동시 요청 수가 증가하거나 요청과 관련된 컴포넌트가 증가하면 운영체제의 가용 스레드가 부족해 응답 시간이 늦어지거나 서버가 중단되는 문제가 발생 할 수 있다. 또한 앞에서 언급했듯이 블로킹 I/O를 과도하게 사용하면 마이크로서비스 시스템에 오류가 발생하기 쉽다. 예를 들어, 어떤 서비스의 지연 시간이 증가하면 가용 스레드가 부족해져서 클라이언트가 실패 할 수 있다. 이런 상황은 결국 클라이언트..
에지 서버 패턴 에지 서버 패턴은 다음과 같은 문제점과 솔루션, 해결책의 필요 조건이 있다. 문제점 마이크로서비스 시스템 환경에선 일부 마이크로서비스만 시스템 환경 외부에 공개하고, 그 외의 마이크로서비스는 외부에서 접근하지 못하도록 숨기는게 바람직하다. 공개된 마이크로서비스는 악의적인 클라이언트의 요청으로부터 보호해야 한다. 해결책 모든 요청이 거치는 시스템 환경에 새 컴포넌트(에지 서버)를 추가한다. 구현참고: 일반적으로 에지 서버는 리버스 프록시로 동작하며, 동적 로드 밸런싱 기능을 제공하고자 검색 서비스와 통합될 수 있다. 해결책의 필요 조건 해결책의 필요 조건은 다음과 같다. - 외부로 공개하면 안 되는 내부 서비스는 숨긴다. 즉 외부 요청을 허용하는 마이크로서비스로만 요청을 라우팅한다. - 서비스를 외부로 공..
서비스 검색(Service Discovery) 패턴 서비스 검색 패턴은 다음과 같은 문제점, 솔루션, 해결책의 필요 조건이 있다. 문제점 클라이언트가 마이크로서비스와 그 인스턴스를 찾을 수 있어야 한다. 컨테이너 등에서 실행되는 마이크로서비스 인스턴스는 시작하면서 동적 IP 주소를 할당 받는게 일반적이다. 이런 상황은 마이크로서비스가 노출하는 HTTP 기반의 REST API를 클라이언트에서 호출하는 것을 어렵게 한다. 해결책 현재 사용 가능한 마이크로서비스와 그 인스턴스를 추적하는 새 컴포넌트(서미스 검색 서비스)를 시스템 환경에 추가한다. 해결책의 필요 조건 - 마이크로서비스와 마이크로서비스 인스턴스를 자동으로 등록 및 등록 해지한다. - 클라이언트는 마이크로서비스의 논리 엔드포인트에 요청을 보낼 수 있어야 한다. 요청은 사용 가능한 마이크로서비스 인스..
LTE 네트워크 구조 www.netmanias.com/ko/post/blog/5344/lte/lte-network-architecture-network-reference-model LTE 네트워크 구조 요즘 이동통신의 화두는 당연 LTE이죠. 국내 통신 3사에서도 각종 언론을 통해 "LTE"란 기술 용어를 브랜드화여 일반인에게 노출하고 있습니다. 그래서 오늘은 LTE를 구성하는 네트워크 장비 요소(N www.netmanias.com
Statefulsets을 사용하는 STATEFUL CONTAINER (w/ Persistent Volume) StatefulSet Pod 집합에 대한 deployment와 scaling을 관리하고 이들 Pod가 다음중 하나 이상의 요구 사항을 갖는 어플리케이션을 위해 안정적으로 제공되는 것을 보장한다. - Stable, unique 네트워크 식별자 - Stable, Persistent Storage - Ordered, graceful deployment and scaling - Ordered, automated rolling updates 이 장에서는 StatefulSet 및 PersistentVolume으로 Amazon Elastic Block Store(EBS)를 다음과 같이 사용하여 MySQL 데이터베이스를 배포하는 방법을 검토한다. ㅁ Amazon EBS CSI Driver ㅇ Container Stor..
Spot Instance로 EKS 구성 이번장에서는 Spot Instance를 통해 비용과 Sacle을 최적화 하는 EKS 환경을 구성해 본다. ㅁ Spot EC2 Worker Node 추가 기존 구성되어 있는 node를 OnDemand Node로 변경하여 신규 생성할 Spot Node와 구분할 수 있도록 함 $ kubectl label nodes --all 'lifecycle=OnDemand' node/ip-192-168-21-20.ap-northeast-2.compute.internal labeled node/ip-192-168-40-208.ap-northeast-2.compute.internal labeled node/ip-192-168-71-49.ap-northeast-2.compute.internal labeled 새로운 Spot w..
Assigning Pods to Nodes 이 파트에서는 pod 할당 전략의 작동 방식, 대안 및 권장 되는 접근 방식을 검토한다. 특정 노드에서만 실행되거나 특정 노드에서 실행되도록 pod를 제한 할 수 있다. 일반적으로 스케줄러가 자동으로 Pod의 적절한 배치를 수행하기 때문에 pod를 노드에 할당하는 제약 조건이 필요하지 않으나 Pod가 연결된 노드에 특성이 일부 있을 수 있어 이 기능도 필요하다. ㅁ NODESELECTOR nodeSelectorsms는 node를 선택하는 제한을 적용하기에 가장 추천하는 기능이다. nodeSelector는 PodSpec의 필드이다. kye-value 맵을 지정한다. Pod가 Node에서 실행될 수 있으려면 Node에 표시된 각 Key-Value Pair가 Label로 있어야 한다. ㅇ Attach a La..