= 동기 = * (구글, 넷플릭스, 페이스북 ...는) 어떻게 수백대의 컴퓨터를 부려먹을까 * (하둡, Docker, k8s, Elestic search)는 어떻게 수백대의 컴퓨터를 부려먹을까? = 방법 = * 클러스터를 만들어서 사용한다. == Cluster == * 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 것 === 현대 컴퓨터의 다양한 한계 === * Compute * CPU * Memory * Storage(size) * Network/Storage I/O speed * High Availability(HA) === 무엇이 그것을 가능하게 하는가? === * 사람 * Remote Shell * Hadoop * VM * Docker * OpenStack ==== 사람 ==== * 가장 간단 * 시급이 몇백원이라면... ==== Remote Shell ==== * 원격 데스크톱 * 가장 쉽게 시도할수 있는 방법 * ansible * fabric * 여러대의 computer에 같은 입력을 주는 것과 같다. ==== Hadoop ==== * CPU와 Memory 의 한계를 뛰어넘기 위해서 * 모두 동일한 JAVA Application을 띄워놓고 같은 프로그램을 실행 * 같은 환경을 꾸며놔야 된다는 것은 여전하나 한번만 꾸며놓으면 새로운 프로그램을 실행하기 좋다. * 유명한 Map/Reduce 논문의 구현체 * 하지만 제한적인 명령만 실행할 수 있다. * 극복하는 방법이 나왔지만, 필요도 없고 잘하는 다른 것들이 있어서... * HDFS * 미리서부터 나누어 가지고 있어야한다. ==== VM ==== * High Availablity 가 목적 (물론 다른 것도 있지만) * 같은 환경을 빨리 만들기 위해 * OS를 쉽게 설치하기 위해서 * 라이브러리를 모두 같게 만들기 귀찮다. * High Availability * OS가 맛이 가서 죽으면 * VMware, KVM, Xen * 대클라우드 시대를 연 기술 * 만능일까? * Network 구조가 유연해야지 VM을 쓸수 있다. * VM의 성능이 어느 정도일까?