전체 글 1332

빅쿼리-#3 데이타 구조와 접근(공유)

빅쿼리-#3 데이타 구조와 데이타 공유 권한관리 조대협 (http://bcho.tistory.com) 빅쿼리에 대한 개념 및 내부 구조에 대한 이해가 끝났으면, 빅쿼리의 데이타 구조와, 데이타에 대한 권한 관리에 대해서 알아보도록 한다.데이타 구조빅쿼리의 데이타 구조는 다음과 같은 논리 구조를 갖는다. 일반적인 RDBMS와 크게 다르지 않다. 데이타 구조프로젝트 (Project)먼저 프로젝트라는 개념을 가지고 있다. 하나의 프로젝트에는 여러개의 데이타셋이 들어갈 수 있다. 데이타셋 (Dataset)데이타셋은 MySQL의 DB와 같은 개념으로, 여러개의 테이블을 가지고 있는 테이블의 집합이다. 이 단위로 다른 사용자와 데이타를 공유할 수 있다.테이블 (Table)데이타를 저장하고 있는 테이블이다. 잡 (J..

구글 빅데이타 플랫폼 빅쿼리 아키텍쳐 소개

빅쿼리 #2-아키텍쳐 조대협 (http://bcho.tistory.com) 이번글에서는 앞에서 소개한 구글의 대용량 데이타 저장/분석 시스템인 빅쿼리의 내부 아키텍쳐에 대해서 알아보도록 한다.컬럼 기반 저장소다음과 같은 테이블이 있다고 하자 전통적인 데이타 베이스는 파일에 물리적으로 데이타를 저장할때 개념 적으로 다음과 같은 방식으로 저장한다. FILE 1 : “001;Cho;Terry;Seoul;30,002;Lee;Simon;Suwon;40,003;Kim;Carl;Busan;22” 그래서 하나의 레코드를 가지고 오면 그 레코드에 해당하는 모든 값을 가지고 올 수 있다. 반면 컬럼 기반 저장소의 경우에는 각 컬럼을 다음과 같이 다른 파일에 나눠서 저장한다. FILE 1: 001:Cho,002:Lee,00..

구글 빅데이타 플랫폼 빅쿼리(BIGQUERY)에 소개

구글 빅데이타 플랫폼 빅쿼리 소개 조대협 (http://bcho.tistory.com) 구글의 클라우드 관련 기술중 무엇이 좋은게 있을까 살펴 보면서 기술을 하나하나씩 보다 보니, 구글 클라우드의 특징은 여러가지가 있겠지만, 데이타 회사 답게 빅데이타 및 머신 러닝 플랫폼이 상당히 강하다. 그중에서 빅데이타 플랫폼의 중심에 BIG QUERY라는 빅데이타 플랫폼이 있어서, 몇 회에 걸쳐서 빅쿼리에 대해서 소개해보고자 한다.구글 빅데이타 분석의 역사구글은 빅데이타를 다루면서, 그 근간이 되는 기술들의 논문들을 공개했다. 하둡 파일 시스템의 시초가 되는 GFS나, 하둡의 시초인 MapReduce 논문, 그리고 Hive를 통해 오픈소스화가 된 Big Table등의 논문들이 있다. 구글의 빅쿼리는 Dremel 이..

분산 로그 & 데이타 수집기 Fluentd

분산 로그 수집기 Fluentd 소개 조대협 (http://bcho.tistory.com) 요즘 들어 빅데이타 분석 관련 기술들을 보다보니, 역시나 여러 데이타 소스에서 데이타를 수집해 오는 부분이 여러 데이타 소스를 커버해야 하고, 분산된 여러 서버에서 데이타를 수집해야 하는 만큼 수집 컴포넌트의 중요성이 점점 더 올라가는 것 같다.그래서 요즘 빅데이타를 위한 데이타(및 로그) 수집 플랫폼을 보고 있는데, 예전 Flume 등 여러 로그 수집 솔루션이 있었는 것에 비해서 조금 정리된 느낌이라고나 할까? Scribed, Fluentd 그리고 ELK (Elastic Search + Logstash + Kibana 조합)에서 사용되는 Logstash등이 있는데, 대부분 Fluentd와 Logstash로 수렴 ..

오토 스케일 아웃(Auto scale out)을 사용해 보자

구글 클라우드에서 Auto scale out을 사용해 보자 조대협 (http://bcho.tistory.com) 클라우드의 가장 큰 장점중의 하나는 들어오는 부하에 따라서 서버를 늘리고 줄일 수 있는 유연성에 있다. 그중에서도 부하량에 따라서 서버를 자동으로 늘리고 줄여 주는 auto scaling 기능은 거의 필수라고 할 수 있다. 이 글에서는 구글 클라우드 COMPUTE SERVICE에서 오토스케일링을 설정하는 방법에 대해서 알아보도록 한다. 오토 스케일링을 설정하는 절차를 보면 다음과 같다. 인스턴스 템플릿 정의인스턴스 템플릿으로 managed group 생성로드 밸런서 연결 인스턴스 그룹과 로드밸런서의 개념등은 이전의 로드밸런서를 이용한 부하 분산 글 (http://bcho.tistory.com/..

구글 클라우드 로드밸런서를 이용한 부하 분산

구글 클라우드 로드밸런서를 이용한 인스턴스간 부하 분산조대협 (http://bcho.tistory.com) 클라우드 VM 생성하는 방법을 숙지 하였으면, 다음으로 여러개의 VM 사이에 부하를 분산할 수 있는 로드밸런서 기능에 대해서 알아보자. 구글의 로드 밸런서는 일반적인 L4 스위치와 같이 일반적인 TCP/UDP 프로토콜에 대한 라우팅이 가능하다. 여기에 더해서 HTTP 프로토콜에 대해서는 HTTPS Termination 뿐만 아니라, HTTP URI에 따라서 가까운 서버나 특정 서버로 라우팅이 가능한 L7과 유사한 기능을 가지고 있다. (자세한 내용은 http://bcho.tistory.com/1111)를 참고다른 글에서도 여러번 언급했지만, 구글의 클라우드 로드밸런서를 사용하게 되면, 서버로 들어오..

전 위메프 CTO 김요섭님의 DEVOPS에 대해서

전 위메프 CTO 김요섭님의 DEVOPS 조대협 (http://bcho.tistory.com) 오늘 GSSHOP에서 전 위메프 CTO 인 김요섭님의 DEVOPS에 대한 강의를 들었다. 그간의 경험이나 고민이 묻어나는 꽉 찬 강의 였다고나 할까? 내용을 정리해보면 다음과 같다.DEVOPS의 발전 단계DEVOPS는 조직의 성숙도나 역량에 따라서 단계적인 발전 단계를 갖는다.첫번째 단계는 자동화를 통해서 자동 빌드와 배포 (CI/CD)를 구축하는 단계, 두번째 단계는 운영 환경에서 나온 로그나 각종 지표를 참고로 하여 개발의 요구 사항에 반영 하는 과정, 세번째 단계는 운영 상황에 개발팀이 참여하여 실제 배포나 장애 상황에 대해서 같이 고민하는 과정, 마지막으로 네번째 단계는 개발 단계에서 운영을 고려하여 설..

다양한 라우팅 기능을 제공하는 구글의 클라우드 로드 밸런서

구글 클라우드 로드밸런서 소개조대협 (http://bcho.tistory.com) 클라우드 플랫폼에서 가장 필요한 기능중의 하나가 로드밸런서이다.그중에서 구글 클라우드의 로드밸런서는 L7 스위치 이상의 기능을 가지면서 로드밸런서와 api gateway의 일부 기능을 수행할 수 있는데, 어떤 특징이 있는지 살펴보자. (개인적인 생각이지만 이게 정말 물건이다..)HTTP 프로토콜 지원TCP,UDP 뿐 아니라 HTTP 레이어의 로드밸런싱을 지원한다. HTTPS Termination을 당연히 지원하고 HTTP 모드로 부하분산을 할 경우 HTTP URI에 따라 다양한 라우팅을 할 수 있다.No warming다른 클라우드 로드밸런서와는 달리 트래픽이 갑자기 많이 들어오더라도 별도의 워밍업작업 없이 트래픽을 받을 수..

구글 클라우드 생성하기 - VM 생성과 접속

구글 클라우드 시작하기계정 생성과 VM 생성하기조대협 (http://bcho.tistory.com) 구글 클라우드 플랫폼에서 가상머신 VM을 생성해주는 GCE (Google Compute Engine)을 통해서 간단하게 VM을 생성하고 웹서버를 띄우는 방법에 대해서 알아보자.계정 가입먼저 GCP 클라우드를 사용하기 위해서는 구글 계정에 가입한다. 기존에 gmail 계정이 있으면 gmail 계정을 사용하면 된다. http://www.google.com/cloud 로 가서, 좌측 상당에 Try it Free 버튼을 눌러서 구글 클라우드에 가입한다. 다음 콘솔에서 상단의 Google Cloud Platform 을 누르면 좌측에 메뉴가 나타나는데, 메뉴 중에서 “결제" 메뉴를 선택한후 결제 계정 추가를 통해서 ..

알아서 깍아 주는 구글의 클라우드 가격 정책

알아서 깍아주는 구글 클라우드의 가격 정책조대협 (http://bcho.tistory.com) 구글 클라우드에 대해서 공부를 하다보니, 가격 정책을 살펴보게 되었는데, 흥미로운 가격 정책이 있어서 정리를 해본다. 구글 클라우드의 가격정책은 다른 클라우드에 비해서 크게 다음과 같은 특징을 가지고 있다.분단위 과금장기 계약 없이 알아서 깎아 주는 정책VM 사용량을 자동으로 합산해서 깎아 주는 정책커스텀 인스턴스분단위 과금구글 클라우드의 인스턴스에 대한 과금 정책은 분단위 과금이다. 최소 10분은 과금이 되고 그 이후의 사용량에 대해서는 분단위로 과금이 된다. 타 클라우드의 경우에는 시간단위 과금이 많은데, 그렇다 보니 1시간 1분을 사용하더라도 고스란히 2시간이 과금된다. 하둡이나 배치 작업 처럼 일정 시간..

구글 클라우드 MySQL서비스의 흥미로운 가격 정책

구글 클라우드 MySQL서비스의 흥미로운 가격 정책조대협 (http://bcho.tistory.com) 구글 클라우드의 MySQL 서비스인 CloudSQL을 보다보니, 신기한 가격 정책이 있어서 정리해놓고자 한다.1세대와 2세대의 가격 정책이 다른데, 1세대의 가격 정책이 재미있는점이 있다. 기본 가격 정책 1,2세대 모두 기본 적인 가격 정책은 다음과 같다 저장량 + 인스턴스 기동 비용 + 네트워크 비용저장량은 말 그대로 저장된 데이타의 양에 따라 과금이 된다네트워크 비용은 outbound로 나가는 트래픽만 과금이 되는데, 이것도 같은 리전 안의 구글 클라우드에서 호출하는 경우에는 과금이 되지 않는다. 과금이 되는 경우는 구글 클라우드를 쓰더라도 다른 대륙의 인스턴스가 호출을 하거나 또는 다른 클라우드..

구글 CloudSQL(MySQL) 접속하기

구글 CloudSQL(MySQL) 접속하기조대협 (http://bcho.tistory.com) 개요 구글 클라우드에서는 MySQL의 매니지드 서비스 형태로 CloudSQL 서비스를 제공한다. 이 글에서는 CloudSQL을 서버에서 접근하는 방법과, 일반적인 MySQL 클라이언트로 접근하는 방법에 대해서 설명하고자 한다. 몇가지 배경 CloudSQL은 매니지드 MySQL서비스이다. 아마존에 RDS서비스와 같다고 보면 되는데 현재는 1세대를 서비스하고 있고, 곧 2세대가 서비스 예정이다.1세대는 500GB까지의 용량까지 지원하고 있지만 2세대는 10테라까지 지원을 한다.현재 지원되는 MySQL버전은 5.5와 5.6 지원하고, 내부 엔진으로는 InnoDB만을 제공한다. 2 세대에 기대되는 기능으로는 On Pr..

구글 클라우드 VM으로 SSH 접속하기

구글 클라우드 VM으로 SSH 접속하기 조대협 (http://bcho.tistory.com) 클라우드에서 VM을 생성하면, 이 VM에 접속하기 위해서 리눅스 VM의 경우 일반적으로 SSH 연결을 사용한다.구글 클라우드에서 SSH를 이용하여 VM에 접속하는 방법을 알아본다. 1. SSH 키페어 생성ssh-keygen 명령어를 이용하여 다음과 같이 RSA 키페어를 생성한다.%ssh-keygen -t rsa -C "구글계정명" 2. 키페어가 생성이 되었으면 *.pub으로 끝나는 이름의 퍼블릭키의 내용(텍스트)를 복사한후, 콘솔창에서 "Compute Engine > Metadata > SSH Keys" 부분에 복사한 텍스트를 붙여 넣어서 키를 등록한다. 3. 키 등록이 끝났으면, 이 키를 이용하여 SSH로 접속..

어제 성능 엔지니어링 강의에서 들은 몇몇 인사이트 정리

어제, 네이버D2에서 열린, NHN nGrinder 개발자인 윤준호님의 성능 강의를 듣고 왔습니다.몇가지 얻은 인사이트가 있어서 기록해놓습니다. 아마존의 T2 인스턴스 타입 - 서버의 부하에 따라서 컴퓨팅 파워를 높였다 낮췄다가 함.- 크레딧이란 개념을 써서, 부하가 낮을때는 크레딕을 저축해놓고, 부하가 높아지면 모아놓은 크레딧을 소모하는 방식 성능 테스트시 주의 사항 - 외부 OPEN API등을 사용할때, 성능 테스트시, OPEN API가 성능 테스트를 DDoS 공격으로 인식해서 차단될 수 있음 대용량 파일 (동영상등)에 대한 부하 테스트 - 네트워크 대역폭을 많이 소모하여 운영 시스템 장애로 발전할 수 있음- 비용도 많이 소모됨- 이를 방지 하기 위해서 초기 1000 바이트 정도만 읽어들이고, 해당 ..

성능과 튜닝 2016.04.20

빠르게 훝어 보는 node.js - redis 사용하기 (ioredis 클라이언트 버전)

빠르게 훝어 보는 node.js - redis 사용하기 (ioredis 클라이언트 버전) 조대협 (http://bcho.tistory.com) 지난 포스팅에서 http://bcho.tistory.com/1098 node.js에서 redis 사용에 있어서 node-redis 클라이언트를 사용했는데, 조금 더 리서치를 해보니, node.js의 redis 클라이언트는 지난번에 포스팅한 node-redis 클라이언트와 ioredis라는 클라이언트가 가장 많이 사용된다. ioredis 클라이언트가 조금 더 최근에 나온 클라이언트인데, https://github.com/luin/ioredis Bluebird promise 지원, 트렌젝션 지원등 훨씬 더 많은 기능을 제공하고, 사용법이 node-redis와 거의 유..

빠르게 훝어 보는 node.js - redis 사용하기

node.js에서 Redis 사용하기 조대협 (http://bcho.tistory.com) Redis는 NoSQL 데이타 베이스의 한 종류로, mongoDB 처럼 전체 데이타를 영구히 저장하기 보다는 캐쉬처럼 휘발성이나 임시성 데이타를 저장하는데 많이 사용된다. 디스크에 데이타를 주기적으로 저장하기는 하지만, 이 기능은 백업이나 복구용으로 주로 사용할뿐 데이타는 모두 메모리에 저장되기 때문에, 빠른 접근 속도를 자랑한다. 이 이유 때문에 근래에는 memcached 다음의 캐쉬 솔루션으로 널리 사용되고 있는데, 간단하게 키-밸류 (Key-Value)형태의 데이타 저장뿐만 아니라, 다양한 데이타 타입을 지원하기 때문에 응용도가 높고, node.js 호환 모듈이 잘 지원되서 node.js와 궁합이 좋다. 여러..

빠르게 훝어 보는 node.js - heapdump를 이용한 메모리 누수 추적

node.js에서 Heapdump를 이용한 메모리 누수 추적하기 조대협 (http://bcho.tistory.com) 대부분의 애플리케이션 서버들에서 고질적인 문제점중의 하나가 메모리 누수 현상이다. 비단 애플리케이션 서버에만 해당하는 문제는 아니지만 특히나 동시에 여러개의 요청을 반복적으로 받는 애플리케이션 서버의 경우에는 이 메모리 누수 현상이 훨씬 더 많이 발생한다. node.js 의 경우, 엔진의 근간이 되는 구글 크롬 V8 자바스크립트 엔진 자체가 많은 메모리 누수 버그를 가지고 있지만, 애플리케이션에서 발생하는 메모리 누수는 발생하는 양도 크거니와 더 큰 문제를 야기할 수 있다. 이러한 애플리케이션에서의 메모리 누수를 추적하기 위한 방법을 알아보자 node.js의 확장 모듈인 heapdump는..

빠르게 훝어 보는 node.js - mongoose 스키마와 유용한 기능

빠르게 훝어 보는 node.js - mongoose 스키마와 유용한 기능 조대협 (http://bcho.tistory.com) 지난번 mongoose 에 대한 간략한 소개 글 http://bcho.tistory.com/1094 에 이어서 오늘은 mongoose 스키마와, 기타 유용한 기능에 대해서 소개하고자 한다. 쿼리 간단한 삽입,삭제,수정,조회 쿼리이외에 조금 더 향상된 쿼리를 살펴보자.자세한 쿼리 사용 방법은 http://mongoosejs.com/docs/documents.html 를 참고하면 된다. 몇 가지 쿼리들을 살펴보면 var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/mydb'); var user..

빠르게 훝어 보는 node.js - mongoose ODM 을 이용한 MongoDB 연동

빠르게 훝어 보는 node.js - mongoose ODM 을 이용한 MongoDB 연동 조대협 (http://bcho.tistory.com) Mongoose는 mongodb 기반의 node.js용 ODM (Object Data Mapping) 프레임웍이다. 이미 앞에서 monk를 이용한 mongodb 연결 방식에 대해서 알아보았는데, mongoose는 무엇인가? 쉽게 생각하면 monk를 자바에서 JDBC 드라이버로 직접 데이타 베이스에 연결하여 SQL을 실행한 거라면, monggose는 Hibernate/Mybatis와 같이 OR Mapper의 개념이다. 직접 SQL을 실행하는 것이 아니라 node.js의 자바스크립트 객체를 mongodb의 도큐먼트와 맵핑 시켜 주는 개념이다.이런ODM의 개념은 웹 프..

Heroku에서 Metrics 메뉴를 이용하여 애플리케이션 모니터링 하기

Heroku에서 Metrics 메뉴를 이용하여 애플리케이션 모니터링 하기 조대협 (http://bcho.tistory.com) heroku에서는 Metrics이라는 메뉴를 통해서 기본적인 시스템 모니터링을 지원한다. 기본 지원 항목으로는응답시간 (Response time), 메모리 사용률 (Memory Usage), 분당 처리량 (Throughput-TPM), CPU 사용률 (Dyno Load)을 볼 수 있다. 이 항목들은 Heroku 대쉬보드에서 모니터링하고자 하는 애플리케이션을 선택한 후, 상단의 Metrics라는 탭을 선택하면 된다. 아래는 Metrics 메뉴를 통해서 helloherokuterry 애플리케이션의 주요 지표를 모니터링 한 화면이다. 한가지 주의할점은 Metrics 모니터링 기능은 무..

Heroku에서 newrelic을 이용한 node.js 애플리케이션 모니터링 (APM)

Heroku에서 newrelic을 이용한 node.js 애플리케이션 모니터링 (APM) 조대협 (http://bcho.tistory.com) Heroku에서 node.js 애플리케이션에 대한 모니터링을 살펴보자. 애플리케이션의 모니터링은 모니터링 분야에서 APM (Application Performance Monitoring)이라는 분야로, 애플리케이션에서 어떤 API 들이 호출이 되었는지, 각 로직별 응답 시간등을 추적할 수 있다. 한국에서 유명한 APM으로는 제니퍼가 있다.Heroku에서 사용할 수 있는 APM은 여러가지가 있지만 여기서는 newrelic이라는 제품을 소개한다. Newrelic은 heroku 뿐 아니라, 모니터링 시장에서 매우 유명한 제품으로 APM 기능뿐만 아니라, 서버 인프라에 대..

Heroku에서 logentries를 이용하여 node.js 로그 모니터링 하기

Heroku에서 logentries를 이용하여 node.js 로그 모니터링 하기 조대협 (http://bcho.tistory.com) Heroku에서 제공하는 로깅은 heroku logs –tail 명령을 이용해서 모니터링 할 수 있는데, 이 로그의 경우 최대 1500줄만 저장을 지원한다. 실제 운영 환경에서 1500줄의 로그란 부족해도 많이 부족한 양이다. 그래서 추가적인 서비스를 이용하는 것이 좋은데, 많은 로깅 서비스가 있지만, 간단하게 사용할 수 있는 로깅 서비스로 logentries 라는 서비스가 있다. Figure 1 http://www.logentries.com 무료로 사용이 가능하고, 무료 사용시 최대 7일간의 로그를 저장해주고, 일 최대 33M 까지 로그를 저장할 수 있다.가장 저렴한 E..

Heroku에서 스케일링 하기

Heroku 스케일링 (scaling)에 대해서 조대협 (http://bcho.tistory.com) 스케일링이란, 더 큰 다이노(더 많은 CPU와 메모리)를 사용함으로써 각 다이노의 성능을 올리거나, 더 많은 다이노를 추가함으로써 여러 다이노로 부하를 분산해서 전체 성능을 올리는 방법을 이야기 한다. 더 큰 다이노를 사용하는 것을 수직 스케일링 (vertical scaling), 더 많은 다이노를 사용하는 것을 수평 스케일링 (horizontal scaling)이라고 한다. 그러면 Heroku에서 스케일링을 어떻게 하는지 알아보자스케일링은 다음과 같이 heroku ps:scale 다이노타입=다이노개수:다이노크기 로 지정하면 된다. 이 스케일링은 무료 티어에서는 사용이 불가능 하기 때문에, 과금을 위한 ..

Heroku 클라우드에 node.js 애플리이션을 배포하기

Heroku 클라우드에 node.js 애플리이션을 배포하기 조대협 (http://bcho.tistory.com) 가장 빠르게 이해하는 방법은 직접 해보는 것이다. Heorku 클라우드에 대한 이해를 위해서 express를 이용해 구현된 node.js 애플리케이션을 직접 배포해서 실행해보자이 예제는 node.js 4.3.1 버전과 express 4.13.4 버전을 기준으로 작성되었다. Heroku 가입Heroku사용을 위해서 Heroku계정을 만들자. http://www.heroku.com 에 접속해서 Sign up 메뉴로 들어가면, 간단하게 이름과 이메일 정도의 정보만 넣으면 간단하게 계정을 만들 수 있다. Figure 1 Heroku 가입 화면 다른 클라우드의 경우 향후 유료 사용을 위해서 회원 가입시..

대용량 시스템 아키텍쳐 설계에 대한 강의를 진행합니다.

대용량 시스템 아키텍쳐 설계에 대한 강의를 진행합니다. 조대협입니다.잠깐의 휴식 시간에 짬을 내서, 패스트 캠퍼스에서 대용량 시스템 아키텍쳐 설계에 대한 강의를 합니다.4/9~4/10일 양일간입니다. 패스트 캠퍼스를 통해서 아키텍쳐 설계 강의를 하게되었습니다 이번에는 실습을 통해 저와 같이 설계를 하는 과정도 같이 들어갑니다.강의를 개설하게 된 이유는 종종 아키텍쳐에 대한 컨설팅이나 도움을 요청하시는 분들이 있어서 시스템들을 살펴보면, 기술적인 부분에 체계가 안잡혀 있는 것도 문제지만 아키텍쳐를 정의하고 설계하는 흐름에 대해서 이해가 부족한 경우를 많이 봐왔습니다. 짧은 시간이지만 많은 도움이 되려고 합니다. 홍보 때문에 인터뷰도 했어요. http://www.fastcampus.co.kr/dev_work..

IT 이야기 2016.03.21

node.js production service stack

node.js 운영환경 node.js를 운영환경에서 서비스 하기 위한 스택주로 managed service 로 운영 부담을 덜고, 가격은 저가로 하는 조합으로 구성 Category Solution Managed service Runtime node.js Heroku nginx (REST CACHE + LB)Heroku Redis Redislab MySQL AWS RDS MongoDB Compose.io CDN CloudFlare HTTP Logging ELK Qbox or sematext + morgan Application Logging Sentry getSentry + winston APM Appdynamics