U E D R , A S I H C RSS

데블스캠프2018/어떻게_수_백대의_컴퓨터를_혼자서_부려먹을까

동기

  • (구글, 넷플릭스, 페이스북 ...는) 어떻게 수백대의 컴퓨터를 부려먹을까
  • (하둡, 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의 성능이 어느 정도일까?

docker(container)

  • VM 은 너무 느려
  • linux 의 Container 기술을 이용한 것
    • namespace
      • resource(eth0, disk)의 permission 관리
    • cgroup
      • CPU, Memory, I/O bandwidth 등 quota, limit
    • overlay filesystem
      • Image size 를 줄어 전송 시간도 줄인다.

  • 장점
    • VM의 장점을 다 가진다.
    • VM보다 훨씬 가볍고 빠르다.
    • 제어하기가 훨씬 간편하다.
  • 단점
    • isolation이 조금 불안하다. (private에서는 큰 문제는 아니다.)
    • Kernel의 최신기능이라 조심해서 써야 한다.
    • 실제로 문제를 해결하는 것은 각자의 몫이다.
    • 여전히 network 구조는 직접 설계해야 한다.
  • XaaS(X As A Service) 의 범람을 가져옴

openstack

  • 모든 문제를 해결하고자 나선 슈퍼히어로
  • Openstack 자체는 일종의 interface의 역할
    • 각각의 구현체는 각자가 알아서 조립해서 써야한다.


컴퓨터 부려먹는 방법

  1. 컴퓨터를 수백대 준비한다.

Cloud

  • 구름 저편에서 다 알아서 해주고 난 쓰기만 하는 것
  • 버튼 한방이면 설치 설정 알아서 다 해주는 것
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:20
Processing time 0.0213 sec