월별 글 목록: 2016년 1월월

리디북스 페이퍼 vs 페이퍼 라이트 비교

리디북스 페이퍼는 나오기전부터 많은 사람들의 관심을 모은 전자책입니다. 저는 페이퍼가 나오자마자 300PPI 제품을 구매했는데 212PPI의 페이퍼 라이트 제품과의 사이에 많은 갈등이 있었습니다. 212PPI 제품이 저렴했고 책을 읽는데 충분하다는 이야기 때문이었죠.

그러다가 궁금증을 이기지 못하고 중고로 페이퍼 라이트를 구매해서 비교해봤습니다 !!!

우선 제가 찍은 영상을 한번 보시죠

비교의 중점은 다음과 같았습니다.

  • 사진
  • 만화
  • 작은 글씨
  • 일반 전자책

사진이나 만화 같은경우에서 PPI 차이가 많이 발생해서 읽기 불편하다는 이야기를 많이 봤었는데요. 제가 비교해본 결과로는 사진이나 만화보다 PDF의 작은 글자에서 차이가 많이 발생했습니다.

PDF 책 이모매거진의 작은 글자 비교

PDF 책 월간이모의 작은 글자 비교

ridipaper_model

페이퍼와 페이퍼 라이트의 외관상 유일한 차이점

ridipaper_weird

이미지 비교. 잘 보면 음영이 변하는 부분이 다르다

그래서 제가 내린 결론은 작은글자를 많이 볼게 아니고 일반 이북처럼 글자 크기를 조정할 수 있는 문서를 많이 본다면 페이퍼 라이트도 충분하다는것입니다.

페이퍼와 페이퍼 라이트의 가격은 6만원차이로 페이퍼 라이트 가격이 89,000원임을 감안하면 결코 작은 가격차이가 아닙니다. 이정도 가격차이라면 페이퍼 라이트의 매력이 높습니다. 물론 금전적인 여유가 된다면 눈 건강을 위해서 페이퍼 300PPI가 좋겠죠? 저는 조만간 페이퍼 라이트는 중고로 팔것 같네요 ^^

게시글의 아마존, iTunes 링크들을 통해 구매를 하시면 제휴(Affiliate) 프로그램에 의해 저에게 일정 금액이 적립될 수 있습니다. ^_____^

ZSH에서 ~/.ssh/config에 있는 Host만 자동완성되게 하기

저는 맥에서 zsh을 사용하고 있는데요. 설정은 oh-my-zsh에서 설정된 기본값을 사용합니다.

최근 회사나 커뮤니티의 서버에 접속할 일이 많아지면서 서버 접속에 불편함이 생겼는데요. 그건 바로 ssh 명령어 입력후 탭으로 자동완성되는 호스트에대한것이었습니다. 기본 설정으로 자동완성되는 호스트는 내가 한번이라도 접속한적이 있는것들이 다 나오더라구요. 아마도 ~/.ssh/known_hosts 와 ~/.ssh/config에 설정된 호스트를 모두 뒤져서 자동완성에 사용하는것 같습니다.

한두번만 접속해본 서버들 때문에 자주가는 사이트들이 자동완성되지 않는게 너무 싫어서 ~/.ssh/config에 설정된 호스트 alias만 자동완성에 사용하도록 .zshrc에 아래 코드를 추가합니다.

h=()
if [[ -r ~/.ssh/config ]]; then
   h=($h ${${${(@M)${(f)"$(cat ~/.ssh/config)"}:#Host *}#Host }:#*[*?]*})
fi
if [[ $#h -gt 0 ]]; then
   zstyle ':completion:*:ssh:*' hosts $h
fi

이제는 ssh 입력후 탭을 입력했을때 ~/.ssh/config에 입력된 host alias 목록만 나와서 한결 접속하기 편해졌습니다 ^^

참고정보

게시글의 아마존, iTunes 링크들을 통해 구매를 하시면 제휴(Affiliate) 프로그램에 의해 저에게 일정 금액이 적립될 수 있습니다. ^_____^

AWS 서울 vs 도쿄 리전 속도 및 가격 비교

드디어 한국에도 AWS 리전(region)이 생겼습니다 ^^

그동안 한국에서 AWS 사용하시는 분들은 대부분 일본 도쿄에 있는 리전을 사용했었는데요. 다운로드 속도 같은건 괜찮았지만 지연속도나 가끔 특정 인터넷 업체에서 접속이 안되는등의 문제가 있었습니다. 하지만 이제 서울에 리전이 생긴만큼 이런 문제들은 없어질것이라고 생각합니다.

그런 의미에서 기존에 한국 서비스에서 많이 사용하던 도쿄 대비 서울이 과연 얼마나 속도가 빨라졌을까 궁금해서 비교해보기로 했습니다.

가장 많이 사용되는 S3와 EC2의 지연시간, 다운로드 속도에 대해 비교를 진행했습니다.(참고로 저는 KT의 기가 인터넷을 사용하고 있고 공유기는 기가를 지원하지만 ASUS 공유기 문제로 테스트에 사용한 노트북과 공유기는 2.5 Ghz 로 연결하고 있습니다)

S3

S3 속도 비교는 저용량부터 고용량 파일 4개를 업로드/다운로드 하는 방법으로 진행했습니다.

테스트에 사용한 파일의 크기는 374KB, 1.5MB, 100MB, 1.5GB 였고, 스토리지 옵션은 Standard Storage, 서버 암호화 안함, Public Access 설정이었습니다.

  • 도쿄
    • 4분 16초, 4 MB/s ~ 10MB/s 사이. 평균 6 MB/s
  • 서울
    • 2분, 10 MB/s ~ 16MB/s 사이. 평균 13 MB/s

파일 업로드 속도에서 2배 차이로 서울이 빨랐습니다. 도쿄의 경우 특정 시간대에는 1 MB/s도 안나오는 경우가 있었는데 그것까지 감안하면 서울의 속도는 정말 빠릅니다.

Multipart Upload 기능을 이용한 업로드 테스트

+ 2016년 1월 11일 내용추가된 단락입니다.

S3에서는 대용량 파일을 업로드할때 여러개의 파일로 나눠서 올리는 Multipart Upload 기능이 있습니다. 이를 이용해서 올리는 경우에도 차이가 많이 나는지 테스트 해봤습니다. 테스트에는 aws cli 프로그램을 이용했고 명령어는 다음과 같았습니다.

time aws s3 cp --region ap-northeast-1 100mb2.MOV s3://tokyo-bucket/100mb2.MOV
time aws s3 cp --region ap-northeast-2 100mb2.MOV s3://seoul-bucket/100mb2.MOV

결과는 다음과 같습니다.

  • 100 MB
    • 도쿄 : 16초
    • 서울 : 11초
  • 1.5 GB
    • 도쿄 : 2분 48초
    • 서울 : 2분 30초

1.5 GB에서 반반의 확률로 일본이 속도가 5초정도 빠른경우가 있었습니다. 지금 도쿄가 속도가 빠른시간인지 모르겠으나 속도 차이가 많이 나지 않네요. 주의할점은 이전 섹션의 대용량 테스트와 테스트 시점이 다르기 때문에 서로 뭐가 빠르다고 이야기 할 수 없습니다.(참고로 이 테스트는 다른 테스트와 다르게 기가 인터넷이 아닌 KT 일반 인터넷에서 진행됬습니다.)

같은 환경에서 이전 섹션의 테스트처럼 브라우저에서 업로드한경우 서울 리전 기준 3분이 걸렸습니다. multipart upload가 조금더 빠르네요

저용량 다운로드 테스트

크롬 개발자 도구의 네크워크 탭에서 정보를 확인했으며 3번씩 테스트 하고 지연시간(Latency), 전체 시간을 기록했습니다. 다운로드에 사용한 URL은 HTTPS라서 HTTP보다 조금 느리다는것 감안하시기 바랍니다.

  • 도쿄
    • 374 KB
      • 233ms, 462ms
      • 217ms, 554ms
      • 198ms, 569ms
    • 1.5 MB
      • 245ms, 693ms
      • 239ms, 747ms
      • 215ms, 811ms
  • 서울
    • 374 KB
      • 95ms, 142ms
      • 55ms, 109ms
      • 49ms, 113ms
    • 1.5 MB
      • 79ms, 201ms
      • 69ms, 234ms
      • 51ms, 251ms

지연시간의 개선은 물론 다운로드 속도도 빨라져서 374 KB의 경우 4배정도 빠르고, 1.5 MB의 경우도 3배정도는 빨라졌습니다.

대용량 다운로드 테스트

대용량 파일은 크롬에서 진행하기 힘들어서 curl 명령어를 이용해 전체 다운로드 소요시간, 평균 다운로드 속도를 100 MB 파일은 3번, 1.5 GB는 1번 시도해서 얻은 결과값입니다. URL에는 저용량과 마찬가지로 HTTPS입니다.

  • 도쿄
    • 100 MB
      • 12s (8078 KB/s)
      • 18s (5162 KB/s)
      • 13s (7115 KB/s)
    • 1.5 GB
      • 4m 9s (6631 KB/s)
  • 서울
    • 100 MB
      • 6s (14.6 MB/s)
      • 7s (12.8 MB/s)
      • 7s (12.4 MB/s)
    • 1.5 GB
      • 1m 45s (15.3 MB/s)

대용량 파일에서는 속도 및 시간이 2배 빨리진것을 확인할 수 있습니다.

가격 비교

전체적으로 2배이상 빨라진 S3의 스토리지 및 네트워크 가격 비교입니다.

  • 스토리지
    • 도쿄 : 1 GB당 $0.033 ~ $0.0302
    • 서울 : 1 GB당 $0.0314 ~ $0.0287
  • 요청 요금(GET 요청만 비교)
    • 도쿄 : GET 요청 1만건당 $0.0037
    • 서울 : GET 요청 1만건당 $0.0035
  • 데이터 전송 요금
    • 도쿄 : 1 GB당 $0.140 ~ $0.120
    • 서울 : 1 GB당 $0.126 ~ $0.108

S3는 스토리지보다 전송요금 때문에 많이 나오기 마련인데 도쿄보다는 저렴합니다. 그래도 미국이나 유럽보다 2배정도 비싸네요 ㅜㅜ

S3 뿐만 아니라 서울은 도쿄보다 가격이 조금 저렴하게 측정되었습니다.

EC2

EC2 비교는 Ruby로 만들어진 간단한 sinatra 웹 어플리케이션 대해 wrk로 요청을 테스트 했습니다. 인스턴스 타입은 서비스에 많이 사용되는 m4.large, OS는 Ubuntu 14.04 를 사용했습니다.

단순히 ping 테스트만 해봤을때 지연시간은 도쿄가 40ms, 서울이 6ms 정도 였습니다.

응답시간 및 요청수 비교

`wrk http://xxx.xxx.xxx.xxxx:8080` 명령어를 사용한 스레드 한개에 대한 결과 입니다. (참고로 wrk에 옵션없이 실행했을때 2개의 스레드로 10개의 커넥션을 가지고 10초동안 테스트가 진행되었습니다.)

  • 도쿄
    • 평균 응답 시간 89.81ms
    • 초당 요청수 55.65
  • 서울
    • 평균 응답 시간 36.88ms
    • 초당 요청수 135.90

응답 시간에서 2배의 개선이 확인됩니다. 이 수치는 어플리케이션 상황에 많이 달라질수 있습니다.

가격비교

테스트에 사용한 m4.large Linux 기준입니다.

  • 온 디맨드
    • 도쿄 : 시간당 $0.174, 30일 기준 $125.28
    • 서울 : 시간당 $0.165 , 30일 기준 $118.8
  • 1년계약 전체 선결제
    • 도쿄 : $799
    • 서울 : $758

서울에는 현재 스팟 인스턴스가 없습니다

데이터 전송 비용

EC2에서 인터넷으로 데이터 송신하는데 들어가는 비용입니다.

  • 도쿄 : 1 GB당 $0 ~ $0.120
  • 서울 : 1 GB당 $0 ~ $0.108

그외 비용

  • Elastic IP : 동일
  • ELB 시간당
    • 도쿄 : $0.027
    • 서울 : $0.025
  • ELB가 처리한 GB 단위 데이터당 요금 : 동일

정리

서울 리전이 생기면서 네트워크 속도가 2배 이상 빨라진걸 확인할 수 있었습니다. 마음 같아서는 지금이라도 당장 이전하고 싶지만 대부분 저처럼 1년 혹은 3년단위로 계약해서 사용하기 때문에 계약 기간이 끝나기전까지는 옮기지 못할것으로 보입니다.

미국은행 계좌가 있는경우는 AWS 마켓플레이스를 통해 EC2 선결제한것을 사용자 끼리 사고 팔수 있지만 저는 미국은행 계좌가 없거든요 ㅜㅜ

어차피 리전을 이동하는게 쉬운일은 아니라서 지금부터라도 새로 생성되는 서버는 서울에 두고 천천히 옮겨가는게 좋겠지요 ^^ 리전 이동에 대해서는 “AWS CLOUD Advanced 2. AWS를 활용한 글로벌 아키덱처 운용 전략” 영상이 도움이 될것입니다.

참고정보

게시글의 아마존, iTunes 링크들을 통해 구매를 하시면 제휴(Affiliate) 프로그램에 의해 저에게 일정 금액이 적립될 수 있습니다. ^_____^

루비 mysql2 젬 MySQL 5.7에서 사용하기

최근 rorlab.org  홈페이지 이전중 DB를 MySQL 5.7로 업그레이드 하면서 겪었던 문제입니다

MySQL 5.7로 업그레이드 하고 레일스 콘솔이나 asset precompile 등을 하다보면 다음과 같은 에러가 발생합니다.

NameError: uninitialized constant Mysql2::Client::SECURE_CONNECTION

이 에러는 MySQL 5.7 에서 무언가 기능이 빠지면서 발생하는 문제였습니다. 해결방법은 간단하게도 최신버전의 mysql2 gem을 사용하는것입니다.

bundle update mysql2 
혹은 
gem update mysql2

위의 두 명령어중 본인의 상황에 맞게 실행하면 됩니다. 아마 대부분 bundler를 사용할테니 첫번째 명령어를 사용하게 될겁니다.

rorlab.org에서 사용하던 mysql2 젬의 버전은 0.3.16 이었고 업데이트 후에는 0.4.2 였습니다.

그런데 여기서 다시 서버를 시작하거나 콘솔을 시작하면 생뚱 맞은 에러가 발생합니다.

Gem::LoadError Specified 'mysql2' for database adapter, but the gem is not loaded. 
Add `gem 'mysql2'` to your Gemfile

Gemfile에 mysql2 젬이 없다네요. 어 분명히 넣었으니까 아까 에러도 났는데? 이상하죠. 이는 ActiveRecord를 사용하는 경우 mysql2 최신 젬버전과 호환이 되지 않기 때문에 발생하는 에러입니다. Gemfile을 열고 다음과 같이 변경합니다.

gem 'mysql2', '~> 0.3.18'

mysql2 최신 버전인 0.4 를 사용하지 않도록 하는게 핵심입니다. 수정후 bundle update 하거나 bundle install 합니다.

이제는 문제가 없을겁니다 ^^

MySQL 5.7은 마이너 버전번호가 바뀐것 치고는 어플리케이션들에 영향이 좀 있는것 같습니다.

추가로 꿀팁 : MySQL 5.7을 직접 설치 하신다면 MySQL 5.7 부터는 최초 설치시 root 패스워드가 랜덤생성되고 /var/log/mysqld.log에 적혀 있으니 참고하시기 바랍니다. 예전에는 루트 비밀번호가 없어서 바로 접속해서 설정했는데 이거 안되서 고생했습니다. 공식 문서에서도 언급이 안되어 있었거든요. 관련해서 제가 올린 트윗 . 그런데 생각해보면 요즘 누가 직접 MySQL 설치 하겠어요? 다들 RDS 같은거 쓰고 PostgreSQL 쓰는거 아닌가요? ㅎㅎㅎ 농담반 진담반이에요

참고링크

게시글의 아마존, iTunes 링크들을 통해 구매를 하시면 제휴(Affiliate) 프로그램에 의해 저에게 일정 금액이 적립될 수 있습니다. ^_____^