떠먹여주는 memcached 1

53
떠먹여주는 MEMCACHED

Upload: jinwoo-hong

Post on 07-Jul-2015

660 views

Category:

Software


2 download

DESCRIPTION

1편에는 Memcached가 등장하지 않는 게 함정;;

TRANSCRIPT

Page 1: 떠먹여주는 Memcached 1

떠먹여주는 MEMCACHED

Page 2: 떠먹여주는 Memcached 1

토끼 귀모양임;; 그래서 캐릭터가 토끼;;

떠먹여주는 MEMCACHED

Page 3: 떠먹여주는 Memcached 1
Page 4: 떠먹여주는 Memcached 1

많이 보던 고래 !

(트래픽 처리 실패)

Page 5: 떠먹여주는 Memcached 1

이럴 때 해결책?

Page 6: 떠먹여주는 Memcached 1

해결책 1. 서버를 더 산다.

Page 7: 떠먹여주는 Memcached 1

해결책 1. 서버를 더 산다. !

해결책 2. 개발자를 고문한다.

Page 8: 떠먹여주는 Memcached 1

대부분 선택하는 것. !

해결책 2. 개발자를 고문한다.

Page 9: 떠먹여주는 Memcached 1

그래서 나온 것.

Page 10: 떠먹여주는 Memcached 1
Page 11: 떠먹여주는 Memcached 1

일단 배경지식.

Page 12: 떠먹여주는 Memcached 1

컴퓨터에서 가장 느린 것.

배경지식

Page 13: 떠먹여주는 Memcached 1

컴퓨터에서 가장 느린 것.

(하드디스크)

배경지식

Page 14: 떠먹여주는 Memcached 1

컴퓨터에서 가장 느린 것.

-> 병목현상

(하드디스크)

배경지식

Page 15: 떠먹여주는 Memcached 1

서비스에서 병목현상을 만드는 것.

배경지식

Page 16: 떠먹여주는 Memcached 1

서비스에서 병목현상을 만드는 것.

하드디스크를 이용하는 데이터베이스

배경지식

Page 17: 떠먹여주는 Memcached 1

흔한 웹서비스 스택

유저 웹서버 데이터베이스 서버

Page 18: 떠먹여주는 Memcached 1

요청

개발자가 의도한 것.

흔한 웹서비스 스택

Page 19: 떠먹여주는 Memcached 1

요청 요청

개발자가 의도한 것.

흔한 웹서비스 스택

Page 20: 떠먹여주는 Memcached 1

요청 요청

잠깐만 찾는 중..

개발자가 의도한 것.

흔한 웹서비스 스택

Page 21: 떠먹여주는 Memcached 1

요청 요청

아 ㅇㅋ 찾음

옛다

개발자가 의도한 것.

흔한 웹서비스 스택

Page 22: 떠먹여주는 Memcached 1

개발자가 의도한 것.

요청 요청

아 ㅇㅋ 찾음

옛다옛다

흔한 웹서비스 스택

Page 23: 떠먹여주는 Memcached 1

실제 유저가 하는 것.

요청

흔한 웹서비스 스택

Page 24: 떠먹여주는 Memcached 1

요청 요청

잠깐만 찾는 중..

실제 유저가 하는 것.

흔한 웹서비스 스택

Page 25: 떠먹여주는 Memcached 1

요청 요청

잠깐만 찾는 중..

어 왜 안돼?

실제 유저가 하는 것.

흔한 웹서비스 스택

Page 26: 떠먹여주는 Memcached 1

요청

아니 잠깐만..

다시 누름

요청

실제 유저가 하는 것.

요청

요청

흔한 웹서비스 스택

Page 27: 떠먹여주는 Memcached 1

요청

어..어.. 다 찾았어 진짜..

또 누름

요청

요청

실제 유저가 하는 것.

요청

요청

요청

흔한 웹서비스 스택

Page 28: 떠먹여주는 Memcached 1

요청

앙ㅁㅇㄴ럊…

한번 더 누름

요청

요청요청

실제 유저가 하는 것.

요청

요청

요청요청

흔한 웹서비스 스택

Page 29: 떠먹여주는 Memcached 1

내놔

ㅎㅏ..

계속 누름

요청

내놔

요청요청

요청요청

요청

실제 유저가 하는 것.

내놔

요청

내놔

요청요청

요청요청

내놔

* 본 예시는 실제 상황과 다를 수 있음.

흔한 웹서비스 스택

Page 30: 떠먹여주는 Memcached 1

문제 !

대용량의 리퀘스트를 처리할 수 없다.

Page 31: 떠먹여주는 Memcached 1

아까 말한 해결책 설명

Page 32: 떠먹여주는 Memcached 1

해결책 1. 서버를 더 산다

해결책

Page 33: 떠먹여주는 Memcached 1

해결책 1. 서버를 더 산다

해결책 1-1 비싼 서버를 산다.

(Scale up)

8 Core, 3Ghz CPU 64GB MEMORY

해결책 1-2 싼 서버를 많이 산다.

(Scale out)

2 Core, 1.5Ghz CPU 16GB MEMORY

2 Core, 1.5Ghz CPU 16GB MEMORY

2 Core, 1.5Ghz CPU 16GB MEMORY

2 Core, 1.5Ghz CPU 16GB MEMORY

해결책

Page 34: 떠먹여주는 Memcached 1

내놔

요청

내놔

요청요청

요청요청

요청

1.1 비싼 서버

내놔

요청

내놔

요청요청

요청요청

내놔

해결책

Page 35: 떠먹여주는 Memcached 1

내놔

다 찾아주마!

요청

내놔

요청요청

요청요청

요청

내놔

요청

내놔

요청요청

요청요청

내놔

옜따!!!

옜따!!!

옜따!!!

옜따!!!

옜따!!!

옜따!!!

옜따!!!

1.1 비싼 서버

해결책

Page 36: 떠먹여주는 Memcached 1

내놔

요청

내놔

요청요청

요청요청

요청

1-2. 싼 서버’들’

해결책

Page 37: 떠먹여주는 Memcached 1

내놔

요청

내놔

요청요청

요청요청

요청

어.. 니껀 여깄고..

니껀 여기

니껀 여기

울애긔껀 여기~ ( °͡ ʖ͜ °͡)

1-2. 싼 서버’들’

해결책

Page 38: 떠먹여주는 Memcached 1

해결책 2. 개발자를 고문한다.

해결책

Page 39: 떠먹여주는 Memcached 1

개발자를 고문한 웹서비스 스택

유저 웹서버 데이터베이스 서버

캐시서버

해결책

Page 40: 떠먹여주는 Memcached 1

개발자를 고문한 웹서비스 스택

유저 웹서버 데이터베이스 서버

캐시서버

Page 41: 떠먹여주는 Memcached 1

개발자를 고문한 웹서비스 스택

유저 웹서버 데이터베이스 서버

캐시 ; 자주 쓰이는 데이터를 메모리에 저장해둠.

캐시서버

Page 42: 떠먹여주는 Memcached 1

개발자를 고문한 웹서비스 스택

유저 웹서버 데이터베이스 서버

장점 ; !1. 메모리에 저장하기 때문에 빠른 응답 속도 (1ms 이내) 2. 느려터진 데이터베이스까지 접근하지 않아도 됨.

캐시서버

Page 43: 떠먹여주는 Memcached 1

개발자를 고문한 웹서비스 스택

유저 웹서버 데이터베이스 서버

한계 ; !1. 메모리에 저장하기 때문에 저장할 수 있는 데이터가 적음 2. 메모리에 저장하기 때문에 서버가 꺼지면 데이터가 날아감

캐시서버

Page 44: 떠먹여주는 Memcached 1

캐시서버의 장점

유저 웹서버 데이터베이스 서버

요청

캐시서버

해결책

Page 45: 떠먹여주는 Memcached 1

유저 웹서버 데이터베이스 서버

요청 요청

캐시서버의 장점

캐시서버

해결책

Page 46: 떠먹여주는 Memcached 1

유저 웹서버 데이터베이스 서버

요청 요청

있나볼게. 제발 있어라…

캐시서버의 장점

캐시서버

해결책

Page 47: 떠먹여주는 Memcached 1

유저 웹서버 데이터베이스 서버

요청 요청

오 있다. 여기.

응답

오예 한턴 쉰다!

캐시서버의 장점

캐시서버

해결책

Page 48: 떠먹여주는 Memcached 1

유저 웹서버 데이터베이스 서버

요청 요청

응답응답

빠르당!

캐시서버의 장점

캐시서버

해결책

Page 49: 떠먹여주는 Memcached 1

개발자를 고문한 흔한 웹서비스 스택

유저 웹서버 데이터베이스 서버’들’캐시서버’들’

Page 50: 떠먹여주는 Memcached 1

개발자를 고문한 흔한 웹서비스 스택

유저 웹서버 데이터베이스 서버’들’

서버 한대가 고장나더라도 서비스가 지속될 수 있도록 여러 대씩 둔다.

캐시서버’들’

Page 51: 떠먹여주는 Memcached 1

개발자를 고문한 흔한 웹서비스 스택

유저 웹서버 데이터베이스 서버’들’

그럼 어떻게 여러 대의 서버에 요청을 분산시킬까?

캐시서버’들’

Page 52: 떠먹여주는 Memcached 1

개발자를 고문한 흔한 웹서비스 스택

유저 웹서버 데이터베이스 서버’들’캐시서버’들’

Consistent Hashing!

그럼 어떻게 여러 대의 서버에 요청을 분산시킬까?

Page 53: 떠먹여주는 Memcached 1

개발자를 고문한 흔한 웹서비스 스택

유저 웹서버 데이터베이스 서버’들’캐시서버’들’

Consistent Hashing!

그럼 어떻게 여러 대의 서버에 요청을 분산시킬까?

2편에서 계속!