AWS로 불꺼온 나날들

Post on 23-Jun-2015

1.417 views 0 download

description

AWS 한국 사용자모임 세미나 김슬

Transcript of AWS로 불꺼온 나날들

AWS로 불꺼온 나날들

개요• 좌충우돌 경험담

• Not! 체계적인 방법 설명서

• 응급처치 임시방편

• Not! 아름다운 최선의 설계

발표자 소개• 김슬 lexifdev

• 개발자

• Not! 시스템 엔지니어

• Not! 서버관리자

• 구글링으로 연명

첫번째 화재

옛날 옛날 한 옛날에.. 착한 서버 한대가 살고 있었어요.

Apache (w PHP) MySQL

그러던 어느날..

사용자가 급증.. ????

• SBS 8시 뉴스

FIRE!!!!!

lexifdev: “저기.. 서버 추가 좀..”

호스트업체: “일주일은 기다리셔야..”

OTL ‘일주일.. 일주일만 버티면..’

AWS!

AWS!• 일단 당장 추가할 수 있고..

• 750시간 무료 써봤는데 잘 돌아갔던것 같애..

• 다소 멀긴 하지만.. (Tokyo생기기 전..)

• 지금 그런거 따질 때가 아니다!

DB서버 부터 분리

IDC (한국)

AWS (싱가폴)

ㅋ 아름답진 않지만.. 일단 버팀

그런데.. 사용자 계속 증가..

• SBS 8시 뉴스

• 네이버, 네이트 등 포털 메인

• 실시간 검색어 순위권

큐큐큐큐ㅠㅋㅋ큐ㅠ큐큐ㅠㅠㅠㅋ

IDC (한국)

AWS (싱가폴)

ㅋ…ㅠ 아름답진 않지만.. 일단 버팀

호스트업체: “서버..

입고됨..”

IDC (한국)

AWS (싱가폴)

수고했다 AWS..

돌아보면..• 처음부터 쓰던 상황이 아니라도 급하게 불끄는데 쓸만하다

!

• DNS 라운드 로빈보다 ELB를 쓸 걸..

• IP를 아껴서 써야..

두번째 화재

그러던 어느날.. Kak*o 플랫폼에

새 서비스를 출시하기로 하였어요..

얼마나 들어올까..? 예상보다 적으면 서버가 남아서 손해.. 예상보다 많으면 서비스 장애..

?

?

?

?

?

?

?

AWS!

Web (uwsgi)Web (uwsgi)Web (uwsgi)

ELB

DB는?

• Replication Master-Slave는 Write Scale하지 않음

• Sharding은 프로그램 수정이 많이 필요함

• MMM은 개발자가 구글로 튄 뒤로 관리 안됨

• MySQL Cluster는 JOIN 안됨

• + 흉흉한 소문들…

MySQL Galera Cluster• 멀티-마스터 클러스터

• 모든 노드에 읽기/쓰기 가능

• Write Scale

• 자동 멤버십 관리 (죽은 노드 알아서 빠짐)

!

• 곧.. ELB에 바로 물려서 쓸 수 있음

Web (uwsgi)DB (Galera)

Web (uwsgi)Web (uwsgi)

DB (Galera)ELB ELB

오픈 1주일간

가입자 수 100만+

….ㅋ….

Web (uwsgi)DB (Galera)

Web (uwsgi)Web (uwsgi)

DB (Galera)ELB ELB

Web (uwsgi)DB (Galera)

Web (uwsgi) DB (Galera)Web (uwsgi)

Web (uwsgi) DB (Galera)

……… …

……

ㅇ..어?

ec2 instance limit: 20개

!provisioned IOPS limit:

10000

… 몰랐음..

그래도 연락하면 거의 바로 다음날 풀어줌..

Web (uwsgi)DB (Galera)

Web (uwsgi)Web (uwsgi)

DB (Galera)ELB ELB

Web (uwsgi)DB (Galera)

Web (uwsgi) DB (Galera)Web (uwsgi)

Web (uwsgi) DB (Galera)Web (uwsgi)Web (uwsgi)Web (uwsgi)

Web (uwsgi)

Web (uwsgi)

DB (Galera)DB (Galera)DB (Galera)

DB (Galera)

Web (uwsgi)Web (uwsgi)Web (uwsgi)

Web (uwsgi)Web (uwsgi)

DB (Galera)DB (Galera)DB (Galera)DB (Galera)

DB (Galera)DB (Galera)

……..ㅋ!…. 아름답진 않지만.. 일단 버팀

돌아보면..• Galera는 생각없이 AWS에 물리기에 제법 쓸만

!

• Instance 제한 & PIOPS 제한 미리 늘려놔야..

• On-Demand 외의 Instance들도 잘 활용했어야 했는데..

More..• 서버 트래픽 몰리는 시간을 알려면 TV시간표를 봐라

• 돈 많이 나온다 싶으면 전화옴 “최적화 원하면 도와줌 ㅇㅇ”

세번째 화재

.. 또 신규 서비스를 출시하기로 했어요..

비밀이지만..• 두번째 화재 진압하는데 Memcached가 많이 사용됨

• Memcached는 기본적으로 ID/PW 없음..

• SASL이나 iptables로 어느정도 제한 할 수 는 있음

• ㅋ..

• ㅋㅋ..

• ㅇ..

VPC• 외부 연결과 분리된 서브넷 구성 가능

• Memcached 같은거 그냥 열어놔도 내부에서만 들어갈 수 있음

• (ELB는 연결 가능)

• IP 갯수 압박에서 벗어날 수 있음

Web

DB

WebWeb

DB

Worker (Celery)

Worker (Celery)Queue

NAT

ELB

ELB

Cache

오픈 ^^

오픈 ^^

Django 트랜잭션의 문제• 기본은 request시작하자 마자 걸고 끝날때 커밋

• autocommit 옵션은 사기 (항상 꺼져있고 에뮬레이션만 함)

• Django ORM 자체 캐싱 + REPEATABLE READ

방안• UPDATE 보다는 INSERT, atomic update query…

• 여기에 대한 자세한 내용은 Python Korea 컨퍼런스 때.. ^6;

SSH 연결조차 할 수 없다.. Bastion의 다운..

!

상위 인스턴스로 교체 그래도 안되면.. 기도..

돌아보면..• IP 요구하는 업체들 클라우드에 쓰는데 별 문제 없음

!

• High RPS서비스를 테스트 할 때는 High RPS상태에서..

• 자동화 하는데 들이는 시간을 아까워하지 마라..

• Bastion은 여럿 만들어 둬야..

• Django.. 너 어무해..

Want more? sl@lxf.kr