클라우드 109

구글 클라우드-AppDev 알아보기 #2 CloudTask 를 이용한 Advanced Message

CloudTask는 GCP의 Pub/Sub 처럼 본질적으로는 메시지 큐라고 보면 된다. 단 Pub/Sub 보다 발전된 메시지 컨트롤 기능을 가지고 있다. 개념을 먼저 이해하자고 하면, 먼저 다음 그림을 참고하자. CloudTask에 전달/저장되는 메시지를 Task라고 하며, 메시지는 CloudTask 내부 큐에 저장이 된다. 그리고, Target Destination으로 최종 전달이 되는데, 이 Task를 받아서 처리하는 부분을 Handler라고 한다. 아래 구조와 같이 Cloud Task를 큐로 사용하여, Cloud Run등에 메시지를 Push (HTTP 호출) 방식으로 전달이 가능하다. 그렇다면, Cloud Task는 기존의 Pub/Sub Message Queue에 비해서 무엇이 다른가?Pub/..

구글 클라우드-AppDev 알아보기 #1 EventArc를 이용한 EDA 구축

AppDev 알아보기 #1 EventArc를 이용한 EDA 구축조대협 (http://bcho.tistory.com) 넷플릭스의 레퍼런스 아키텍쳐로 유명한 EDA (Event Driven Architecture)등은 구축하기 위해서, 이벤트 버스, 비동기큐, 워크플로우 엔진등 여러가지 복잡한 컴포넌트가 필요하고 이를 위한 운영이 어렵기 때문에 일반적인 오픈소스로 구축하기에는 부담이 많이 된다. 클라우드에서 이러한 EDA 아키텍처를 구축하기 위해서 핵심 컴포넌트들을 매니지드 서비스 형태로 제공하고 있다. 이 글에서는 구글 클라우드에서 EDA를 구축하기 위한 핵심 컴포넌트들에 대해서 알아보도록 한다. CloudSchedulerCloudScheduler는 GCP 기반의 Cron이라고 생각하면 된다. 스켈된 일..

쿠버네티스의 HPA/VPA 오토스케일링을 위한 모니터링 아키텍처

쿠버네티스의 HPA/VPA 오토스케일링을 위한 모니터링 아키텍처 조대협 (http://bcho.tistory.com) 쿠버네티스에서 HPA/VPA는 내부 메트릭을 이용하여 오토스케일링을 판단하는데, 이를 위해서 내부 메트릭을 수집하고 서빙하기 위한 모니터링 아키텍쳐가 어떻게 구현되었는지에 대해서 알아본다. 각 노드에서 동작하는 컨테이너에 대한 리소스 정보 (CPU,메모리, 네트워크 사용량)은 cAdvisor를 통하여 수집되어 Kubelet을 통해서, 컨트롤 플레인에 전달된다. cAdvisot는 컨테이너에 대한 리소스 정보만 수집하지만, Kubelet은 컨테이너 이외의 노드나 애플리케이션에 대한 정보를 수집한다. 이렇게 Kubelet에 저장된 정보는 metric server로 전달되고, metric api..

머신러닝 파이프라인에서 데이터 전처리 방법

Data Preprocessing in ML Pipeline 본글은 구글 클라우드 블로그에 포스팅한 글을, 재 포스팅 허가를 받은 후 포스팅한 글입니다. 다른 좋은 글들도 많으니 아래 출처 링크를 참고해 주새요출처 링크 머신러닝 파이프라인에서, 데이터는 모델 학습 및 서빙의 입력에 알맞게 가공되어야 한다. 이를 전처리라고 하는데, 이번 글에서는 전처리에 대한 개념과 이에 대한 구현 옵션등에 대해서 알아보도록 한다.처리 단계별 데이터 분류머신러닝에서 데이터 전처리는 모델 학습에 사용되는 데이터 형태로 데이터를 가공하는 과정을 이야기한다.데이터 전처리는 여러 단계로 이루어지는데, 단계별로 처리된 데이터에 대해서 다음과 같이 명명한다. Raw data초기에 수집된 원본 데이터로 분석이나, 머신러닝 학습 용도로..

쿠버네티스 #23 - Pod 스케쥴링 #1

쿠버네티스 고급 스케쥴링 기법#1 스케쥴링과 Taint&Toleration조대협 (http://bcho.tistory.com)쿠버네티스 스케쥴링쿠버네티스에서 Pod 를 생성 요청 했을때, Pod를 적정 node에 배치하는 것을 스케쥴링이라고 한다. Pod를 어느 node에 배치할것인가에 대해서는 생각 보다 많은 고려가 필요하다. 먼저 Pod가 생성하기 위한 충분한 리소스 (CPU와 메모리)가 남아 있어야 하고, 디스크 볼륨을 사용할 경우, attach하고자 하는 디스크 볼륨이 해당 node에서 접근이 가능해야 한다.또한 애플리케이션 특성에 따라서, Pod의 배포에 대해 배려가 필요한 경우도 있다. 예를 들어 MySQL을 HA 모드로 배포하기 위해서 마스터, 슬레이브 노드 각각을 배포하고자 할때, 마스터 ..

쿠버네티스 패키지 매니저 Helm #2-5. Chart 배포 (Repository)

쿠버네티스 패키지 매니저 Helm#2-5 Helm Chart 배포조대협 (http://bcho.tistory.com) Helm 차트를 작성했으면, 다른 사용자들이 사용하기 쉽게 차트를 차트 리포지토리 (Chart repository)에 배포할 수 있다. Helm 파일 패키징파일을 배포하기 위해서는 먼저 차트 파일들을 *.tgz 파일 형태로 패키징해야 하는데, helm package 명령을 사용하면 된다. %helm package [차트 디렉토리] 형태로 사용하면 된다. 앞의 예제인 helloworld 차트를 패키징 하려면 아래와 같은 명령을 사용하면 된다.%helm package ./helloworldSuccessfully packaged chart and saved it to: /home/terrych..

로깅 시스템 #7-스택드라이버로 로그 백앤드 구축하기

스택 드라이버 로그로 로그 백앤드 구축하기조대협 (http://bcho.tistory.com) 앞의 글에서까지 로그를 남기는 방법에 대해서 알아보았다. 이번 글에서는 로컬에 남긴 로그를 중앙으로 수집하여 모니터링할 수 있는 도구에 대해서 알아보고자 한다.보통 로그 시스템은 오픈소스 기반의 ELK (Elastic search + Logstash + Kibana)를 많이 사용한다. 좋은 시스템이기는 하지만 러닝 커브가 있고, 구축과 운영에 노력이 들어간다. 대안으로는 클라우드 기반의 매니지드 서비스를 사용하는 방안이 있는데, 구글 클라우드의 스택드라이버 로깅이 사용이 편리하기 때문에 스택드라이버를 소개하고자 한다.구글 클라우드의 스택드라이버는 로깅뿐만 아니라 모니터링, 에러 리포팅등 다양한 기능을 제공하는 ..

Istio #1 - 마이크로 서비스와 서비스 매쉬

Istio #1마이크로 서비스 아키텍처와 서비스 매쉬조대협 (http://bcho.tistory.com) 마이크로 서비스 아키텍쳐는 여러가지 장점을 가지고 있는 아키텍쳐 스타일이기는 하지만, 많은 단점도 가지고 있다. 마이크로 서비스는 기능을 서비스라는 단위로 잘게 나누다 보니, 전체 시스템이 커질 수 록 서비스가 많아지고, 그로 인해서 서비스간의 연결이 복잡해지고 여러가지 문제를 낳게 된다 출처 : https://www.slideshare.net/BruceWong3/the-case-for-chaos?from_action=save 서비스간의 전체 연결 구조를 파악하기 어려우며 이로 인해서 장애가 났을때, 어느 서비스에서 장애가 났는지 추적이 어려워진다. 또한 특정 서비스의 장애가 다른 서비스에 영향을 주..

쿠버네티스 #19 - 보안(4/4) Pod Security Policy

쿠버네티스 #19보안 4/4 - Pod Security Policy조대협 (http://bcho.tistory.com) SecurityContext가 컨테이너나 Pod의 보안 기능을 정의 하는 것이라면, Pod Security Policy (이하 PSP)는 보안 기능에 대한 정책을 정의 하는 것이다.예를 들어, 정책으로 Pod를 생성할때는 반드시 root 사용자를 사용하지 못하도록 강제한다던지, Privileged 모드를 사용못하도록 강제할 수 있다. 현재는 (2018년9월1일) 베타 상태이기 때문에 다소의 기능 변경이 있을 수 있음을 염두하고 사용하도록 하자. 개념개념이 복잡하기 때문에 먼저 기본적인 개념을 이해한 후에, 각 상세를 살펴보도록 하자. 먼저 아래 그림을 보자 PSP는 생성후에, 사용자에게..