전체 글 1274

구글 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

빠르게 훝어 보는 node.js - promise를 이용한 node.js에서 콜백헬의 처리

Promise를 이용한 node.js에서 콜백헬의 처리 조대협 (http://bcho.tistory.com) 앞의 글(http://bcho.tistory.com/1083) 에서 async 프레임웍을 이용한 콜백헬을 처리 하는 방법에 대해서 알아보았다.async 프레임웍 이외에, 콜백헬을 해결할 수 있는 프레임웍으로 promise가 있다.Promise는 원래 콜백헬을 해결하기 위한 프레임웍이 아니라, 프로그래밍 패턴중의 하나로 지연 응답을 통해서 동시성을 제어 하기 위한 목적으로 만들어졌다. 자바스크립트에서는 Jquery의 Deferred나, CommonJS에 구현되어 있고, ECMAScript5 표준에 포함되서 크롬,파이어폭스,인터넷익스플로러 9 버전등에 포함되어 있다.구현체가 많아서 설치해야 한다. n..

TI의 IOT 개발용 센서 키트

IOT 개발용 센서 키트 TI에서 IOT 개발을 위한 센서키트를 제공한다는 것을 오늘 들어서 자료를 찾아봤는데, Simplelink라는 제품으로 성냥값 정도 크기에 13가지의 센서가 들어있다. 위치,온도,습도 등등가격은 29$ 정도 밖에 되지 않고, 손목밴드나 LCD등을 끼울 수 있는 키트도 제공한다. 기동을 하면 바로 IBM 블루믹스 IOT 서비스에도 연결이 되고, 안드로이드, IOS 앱도 제공한다. 아마도 웹이나 앱개발용 SDK도 있을 것 같은데. 가격도 싸고 쉽게 IOT 서비스를 개발할 수 있을 것 같아서 북마크 해놓는다.http://www.ti.com/ww/en/wireless_connectivity/sensortag2015/gettingStarted.html

IBM Bluemix 클라우드의 Openwhisk 소개

IBM 블루믹스의 openwhisk 에 대한 소개 조대협 (http://bcho.tistory.com) 오늘 IBM의 블루믹스 세미나에 다녀왔습니다.세미나 내용중에서 흥미로운 기술들이 있어서 간단하게 소개합니다.IBM 블루믹스 클라우드의 새로운 기능으로 Openwhisk 라는 서비스입니다. http://www.ibm.com/cloud-computing/bluemix/openwhisk/https://developer.ibm.com/openwhisk/ 아마존의 람다 기능과 유사한 기능인데 개념을 보면 다음과 같다. 이벤트가 발생하면, 이벤트 내용을 받아서 비지니스 로직이 들어 있는 액션을 수행한다.아래 그림을 보면 REST API로 호출하거나 또는 데이타 베이스에 어떤 내용이 변경이 되거나 또는 Kafka와..

빠르게 훝어 보는 node.js - async 프레임웍을 이용한 콜백헬의 해결

빠르게 훝어 보는 node.js - async 프레임웍을 이용한 콜백헬의 해결 조대협 (http://bcho.tistory.com) 콜백헬의 정의 node.js는 자바스크립트의 콜백 패턴을 사용한다. 그래서 함수들을 순차적으로 실행하고자 할때 콜백 함수들의 중첩이 생겨서 코드가 복잡해지는 문제가 생긴다. 코드가 복잡해지고, 코드의 가독성이 떨어져서 유지 보수가 매우 힘들어진다. 파일을 읽어서 쓰는 코드를 보자 var fs = require('fs'); var src = '/tmp/myfile.txt'; var des = '/tmp/myfile_async.txt'; fs.readFile(src,'utf-8',function(err,data){ console.log(data); if(err){ console..

BI 툴 태블로(Tableau)

AdHoc BI 리포팅 도구 태블로 (Tableau) 조대협 (http://bcho.tistory.com) 근래에 들어서 빅데이타 관련해서 태블로 라는 도구가 이름이 꽤나 들려오고, 아시는 분이 태블로 관련 파트너사 관련 창업을 하셨길래 시간이 나면 봐야지 하다가 오늘 퀵하게 한번 쓰윽 훝어 보았다. 한마디로 BI 리포팅 도구이다. http://get.tableau.com/campaign/business-intelligence.htmlMySQL,MS SQL, ORACLE등의 OLAP 데이타 백앤드에 연결해서 AD HOC 방식으로 리포트를 뽑아낼 수 있는 도구이다.AD HOC방식이란, OLAP의 필드를 가지고, X,Y,Z 측으로 지정하여 분석하고 리포트나 그래프등을 표현할 수 있는 툴이다.비교하자면 엑셀의..

다르게 생각해볼만한 클라우드 컴퓨팅 활용 전략

다르게 생각해볼만한 클라우드 컴퓨팅 활용 전략 조대협 (http://bcho.tistory.com) 근래에 스타트업 기반의 빠른 속도의 개발을 경험하고, 클라우드 컴퓨팅 도입 전략에 대해서 고민할 기회가 생겨서 여러 자료를 검토하던중에 퍼블릭 클라우드 도입 전략에 대해서 기존과 다른 접근 방식이 필요하다고 생각되어 그 내용을 정리합니다. 특정 벤더의 의존성 배제 퍼블릭 클라우드 하면 거의 공식 처럼 AWS 클라우드가 소위 말해서 갑이었으나, 근래에 들어서 구글이나 마이크로소프트가 큰 딜을 잡아나가면서 약간씩 구도가 바뀌고 있는 형상이다. 특히 구글의 Spotify와, Quizlet의 사례를 보면 구글 사용사례이기 때문에 구글이 좋다는 이야기지만, 내용을 디테일하게 살펴보면 꽤나 재미 있는 인사이트를 얻을..

빠르게 훝어 보는 node.js - monk 모듈을 이용한 mongoDB 연결

monk 모듈을 이용한 mongoDB 연결 조대협 (http://bcho.tistory.com) mongoDB 기반의 개발을 하기 위해서 mongoDB를 설치한다. https://www.mongodb.org/ 에서 OS에 맞는 설치 파일을 다운로드 받아서 설치한다.설치가 된 디렉토리에 들어가서 설치디렉토리 아래 ‘./data’ 라는 디렉토리를 만든다. 이 디렉토리는 mongoDB의 데이타가 저장될 디렉토리이다. mongoDB를 구동해보자. % ./bin/mongod --dbpath ./data Figure 1 mongoDB 구동화면 구동이 끝났으면 mongoDB에 접속할 클라이언트가 필요하다. DB에 접속해서 데이타를 보고 쿼리를 수행할 수 있는 클라이언트가 필요한데, 여러 도구가 있지만 많이 사용되는 ..

MAC에서 HTTP 패킷 모니터링 하기

MAC에서 HTTP 패킷 모니터링 하기 조대협 (http://bcho.tistory.com) 윈도우즈의 경우 fiddler (http://www.telerik.com/fiddler ) 라는 무료 도구가 있고, Mac의 경우에는 HTTPScoope (https://www.tuffcode.com/) 을 추천한다. HTTPScoope의 경우 14일 무료이고, 유료 버전은 15$ (약 16000원정도)이다. 아래는 로컬에서 3000번 포트로 띄운 웹서버의 패킷을 모니터링 하는 방법이다. Scoop을 사용하는 방법을 보면, Scoop을 설치한 후에, “Preference” 메뉴에서 아래 그림과 같이 Restrict to port 메뉴를 선택해서, 3000 번 포트를 추가한다. (예제가 3000번 포트를 통해서 L..

성능과 튜닝 2016.03.11

node.js에서 multipary와 multer를 이용한 파일 업로드 하기

node.js에서 multiparty와 multer를 이용한 파일 업로드 하기 조대협 (http://bcho.tistory.com) node.js의 장점중의 하나가 비동기 IO를 이용해서 IO 처리에 강하다는 것이다.그중에서 특히나 활용할만한 것중의 하나는 파일 업로드 이다.node.js에서 파일 업로드는 다양한 방식으로 구현이 가능하고 이를 지원하는 모듈도 많은데, 그중에서 busboy,multer, multiparty 등이 많이 사용된다. 여기서는 multiparty와 busboy에 대해서 소개하고자 한다. Multiparty를 이용한 파일 업로드multiparty모듈을 사용하기 위해서는 multiparty모듈에 대한 의존성을 추가해야 한다. 다음은 package.json 파일에 multiparty ..

좋은 개발자로 크고 싶어요. 서버 개발자는 어떻게 되나요?

좋은 개발자가 되고 싶어요. 서버 개발자는 어떻게 되나요? 조대협 (http://bcho.tistory.com) 블로그를 운영하면서 자주 받는 질문들이 "좋은 개발자가 되고 싶어요." "아키텍트는 어떻게 되나요?" "서버 개발자가 되려면 어떻게 해야 하나요?" 라는 질문들인데, 일일이 답변을 드리기가 어려워서 생각을 정리해봅니다. 사실 답은 저도 잘 모르겠습니다. 아직 좋은 개발자가 아닌거 같아서요. 그래도 그간 IT를 경험하면서 나름의 생각을 정리해 보면 다음과 같습니다. 좋은 개발자가 되는 방법은 학교에서 다 배웠다. 사실 좋은 개발자가 되는 방법은 학교에서 다 배웠습니다. 대학교 과정에는 IT 개발에 필요한 필수 이론들을 다 배웁니다. 자료구조, OS, 소프트웨어 공학론 등등. 다들 중요한 내용이지..

요즘 마이크로소프트의 행보를 보면서

요즘 마이크로소프트의 행보를 보면서 조대협 (http://bcho.tistory.com) 근 1~2년간, IT 솔루션에 대한 비지니스가 많은 변화를 겪고 있습니다. 전통적인 라이센스 기반의 영업을 통한 엔터프라이즈 시장은 점점 매출이 떨어져가고 있고, 클라우드와 오픈소스 서브스크립션 모델 기반의 비지니스가 활성화 되어가는 상황에서, 공룡 IT 기업들이 변화를 시도하고 있습니다. 거대 공룡인 IBM의 경우 클라우드 컴퓨팅에 집중하기 이해서 소프트레이어 클라우드 (http://www.bloomberg.com/news/articles/2013-06-04/ibm-to-acquire-cloud-computing-provider-softlayer-technologies) 를 인수하였고, PaaS 서비스인 블루믹스를..

구글 클라우드 비젼 API 사용하기 (Google Cloud Vision API)

Google Cloud Vision API 사용하기 구글 클라우드 비젼 API 사용하기조대협 (http://bcho.tistory.com) 빅데이타와 머신러닝과 같은 기술이 요즘 인터넷을 매우고 있는 시대에, 구글이 얼마전 이미지 디텍션 (Image detection)이 가능한, Cloud Vision API라는 오픈 API를 발표하였다. 현재는 베타버전 상태인데, 호기심에 빠르게 한번 테스트를 해봤다. node.js를 이용하여, 간단한 테스트 프로그램을 만들어서 테스트를 해봤는데, 구현에 걸리는 시간은 불과 10분이 안된듯... (node.js는 역시 프로토타이핑용으로는 정말 좋은듯) Cloud Vision API 억세스 권한 얻기 Cloud Vision API는 현재 베타 상태이다. 접근을 하려면 별..