Fast Web Service #3 어디서 빨라야 하는가. 3

다즐링의 이미지

처리결과가 도달하는데 걸린시간에 대해서 이야기를 하겠습니다.
이 부분은 다음의 것들을 신경써야합니다.

  • 보내는 데이터의 양이 작다.
    • gzip compress
    • 내용을 적게 만든다.
    • 원래 내용이 적다.
  • 보낼때 빠르게 보낸다.
    • 빠른 회선을 이용한다.
    • TCP 등의 커널 설정 값 튜닝
    • CDN 을 이용한다.

보내는 데이터의 양이 작다.

지극히 당연한 이야기지만 보내는 데이터의 양이 적다면 유리하다.
웹에서 사용되는 이미지파일의 최적화작업없이 대충 포토샵으로 자른 이미지들
쓸데없이 table 로 가득찬 통짜 레이아웃 디자인
이미지로 도배
풀 플래쉬로 싸이트 구성 ( 때로는 유리할 가능성이 있음 , 하지만 한국에서는 그러한 경우를 본적이 없음 )
위의 것들의 조화로 대부분의 한국싸이트들은 페이지 자체가 크고 아름답다.

gzip compress

동적인 컨텐츠 그리고 정적인 컨텐츠에 gzip compress 를 적용한다.
text 기반의 데이터들 ( html , css , js ) 등의 경우 70% 이상의 압축 효율을 가지므로 보낼 내용이 1/3 정도로 줄어든다.

내용을 적게 만든다.

text 기반의 데이터들의 경우 주석과 공백등을 제거함으로서 보내는 데이터의 양을 줄일수 있다.
javascript ,css 의 경우 패킹해주는 유틸리티들이 꽤 있는데 packer 나 compress 등으로 구글에 검색하면 쓸만한 애들이 꽤 나온다.
실시간으로 줄여주는 경우도 있고 줄여서 파일로 내려주는 경우도 있는데
javascript 나 css 의 경우 그다지 바뀌는 경우가 없으므로 배포시에 ( 설치나 업그레이드등.. ) packer 등을 돌려서 처리한다.

원래 내용이 적다.

당연한 이야기지만 기획단계부터 핵심 내용을 제외하고 컨텐츠를 줄이면 된다.
그리고 서비스되는 싸이트가 아닌 외부싸이트의 리소스를 적극 활용한다.
예를 들자면 google 에서는 jquery 등의 라이브러리를 외부에서 사용 가능하도록 CDN 서비스를 제공하고 있다.
Google Libraries API

보낼때 빠르게 보낸다.

빠른 회선을 이용한다.

당연하지만 비싼건 사실이다.
특히 해외망의 경우 속도가 수십배씩 차이난다.

TCP 등의 커널 설정 값 튜닝

리눅스 기본 설정은 매우 범용적으로 그리고 관련 값들이 적게 설정되어 있다.
2000년쯤에는 c10k 라는 문제 ( 동시접속 만개를 해결하는 문제 ) 가 주로 화두였는데
현재는 c500k 도 이미 해결된 상태다. 관련된 커널 튜닝 값 를 읽어보길 바란다. 물론 동시접속이 많은 것과 빠르게 보내주는것은 약간 다르다.
하지만 같은 맥락에서 몇가지 키워드로 검색한다면 많은 구글검색 결과를 얻을수 있다. window size 라던가 tcp reuse 등.. 여러가지 많은 키워드들이 있으므로 자세한 설명은 생략한다.

CDN 을 이용한다

모든것이 다 귀찬다면 돈을 주고 서비스를 사면 된다.
관련된 컨설턴트가 오거나 문서를 줘서 몇가지 설정을 하게 되고 하라는데로 설정하면 성능이 오른다. --;
당연하지만 대부분의 CDN 업체는 전세계에 써버 farm 을 가지고 있고 SLA 에 따라서 해외에서 접속이라던가
성능이 오른다. 위키피디아의 CDN 설명 결론: 귀찬으면 돈으로 바른다. -
-;;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.